戻る
- このページ
- は、2007年度のロボコン対策のページです。
いろいろ †
- ロボコンのルール・開催場所等
これについてはコチラを参照してください。
- 去年のルール他
コチラ。役に立たないと思うけど。
- 編集について
基本的に編集自由、新規ページの作成もコメント等も自由ですが、
以下のことだけ方針として決めておきます。
分からないこと等ありましたら私(zampona)に質問をば。
- 新規ページの作成時にはこのページにリンクを貼ること
- 新規ページの名前の先頭には2007RCを付けること(ページ一覧から探すのが容易なので)
- (これは方針ではありませんが)編集法(文法)はコチラを参照してください。
スタック問題 †
- そもそもスタックとは何ぞ…?な人は、
をダウンロードしてくださいな。
中身は普通のテキストなので、[右クリック]→[対象をファイルに保存]して
ダウンロードした後で、RISで開いてみて下さいな。
設定を変えずにRISをインストールしていれば、
C:\Program Files\LEGO MINDSTORMS\Robotics Invention System 2.0\
users\(ユーザー名)\Vault
というフォルダにダウンロードしておけば、RISで
[ファイルを開く]をした時に直ぐに見つかるはず!
あ、(ユーザー名)の部分にはいつも使っている
ユーザー名(いつもログインする時に出てくるモノ)が入ってる筈。
- スタックについての疑問。スタックを使えるかどうかで
プログラムの幅が大きく変わるため、是非使いたい…。
- テストのお願い
センサースタックについてテストして欲しいっす。
以下のようなテストプログラムを実行して欲しい。
- センサースタックを用意
- センサースタックの中身は変数の値を変える等の、
あまり時間のかからない処理を入れる。
- モーターを(10秒間程度)回す
- モーターが回っている最中にセンサーを動かす
- (センサースタックに処理が切り替わる…ハズ)
で、
- 途中センサーを動かした時、モーターは止まったか?
- モーターは合計で何秒動いたか?
(スタックの処理の後、どこに処理が戻ったのか?)
が知りたいです…。
具体的な対策 †
- フリフリ型
- アーム型
- 根性型
フリフリ型 †
基本アイディア †
右側と左側で交互に車輪を前進させ、ライトセンサーが必ず黒線上を通過するようにする。
実装 †
ロボットは、右側の車輪(群)と左側の車輪(群)を別々に動かせなければいけない。
(別の言い方をすれば、超信地旋回ができないといけない)。
つまり、「右側の車輪(群)」を動かすモーターと「左側の車輪(群)」を動かすモーター
がそれぞれ必要である。
- まずロボットの回転の中心を探す。
- ロボットの回転中心を通る、進行方向に平行な直線状にライトセンサーを取り付ける
(文章で書くより図にした方が早いな…)
本体の構造は必ずしも左右対称である必要は無いが、
左右対称でないと回転の中心を見つけるのが難しいと思われる。
擬似コード †
欠点 †
- Y字分岐に対応できない。
- 終端に達したことを判別するのに別のセンサーが必要
利点 †
- 構造が簡単
- ほぼ同じだが、必要なセンサー数が少ない。
という訳で †
別のセンサーと併用したら使えるかも。
アーム型 †
基本アイディア †
回転(転回?)可能なアームを用意し、その先端にライトセンサーを取付。
実装 †
モーターを使って回転可能な軸を作る。途中に回転センサーを取り付ける。
それをどうにかして床に近い位置で実現する。
擬似コード †
- アームを振る
- ライトセンサーに反応があったら、そこで止める
- 回転センサーの数値を読み(?)、
- それと規定値(0°か180°)の差を減らす様に本体を回転させる。
- 同時にアームを常にライトセンサーの反応を維持する様に逆回転させる
- 暫く前進する
- 最初に戻る。
欠点 †
- 実装が複雑
- 必要なセンサーの数が多い
- モーターを一つ使ってしまう
- 重い
- 他の部材と干渉しない構造の実現が困難
利点 †
- (実現できれば)かなり安定した性能を出しそう
- 見た目が派手
- ライトセンサーの数は一つで全て賄える。
という訳で †
やっぱり難しい。
根性型 †
基本アイディア †
ほとんどセンサーを使わず、時々コースを外れていないかだけ確認。
実装 †
ライトセンサー以外の機械的構成は特に問わない。
擬似コード †
(センサー)スタックが必須。スタックの動作次第では不可能…。
- ライトセンサースタック
(ライトセンサーが黒線を感知したらスタックに来る)
- 左右変数の値を右ならば左、左ならば右に変更する。
- 左右変数(黒線の右にいるか左にいるかを記憶しておく)
を具体的にどう設定するかは自由。恣意的でよい。
一般的なのは、(左,右)=(0,1),(1,0),(-1,1),(1,-1)など。
- つまり左右変数をrlv(right and left variable)とすると、
(rlv=1)の時は(rlv=0)、(rlv=0)の時は(rlv=1)に変える。
- 左右変数を最初に居た側に設定する
- 「1秒(位の短時間)の前進」を必要なだけリピートする
(スタックの影響を小さくするため)
- 5秒程度移動する(この間に黒線を通過したりしなかったりする)
この移動は必ずしも直進だけではなく、右折や左折も含む。
- (「はい、いいえ」ブロックで)左右変数の値を確認して、
- 左側にいるなら右側に進み
- 右側にいるなら左側に進む
(左右への移動量はそれほど大きくない方が良いと思われる。
あくまで修正用)
メインルーチンで基本的には全ての移動をこなす。
ズレの修正も別スタック(このスタックは時間で制御)
に移動させてしまった方が良いかも。
ただそうすると、メインスタックの経過時間が把握し難いのが欠点。
欠点 †
- メインスタックの移動を設定するのが神業的(難しい)
- 修正量の調整も難しく、多過ぎれば落ちる。
- 電池の消費等で生じるモーター出力の変化をどう吸収するか。
利点 †
- センサーが少なくてよい
- マシンの構造を特に問わない
- メインルーチン重視なので、旧来のプログラムに近い(分かりやすいかも?)
- メインルーチンがしっかりしていれば、結構行けそう
という訳で †
難しい(特にメインスタックの中身の調整が)が、
マシンの構造が変であっても、その部分を手動で
調整できるといえばできる。
メインルーチンが何をやっているかが、
分かりやすいといえば分かりやすい
(プログラムが技巧的と言う訳ではない)
関連ページへのリンク(Wiki内) †
- 2007RC_RCXとRISの仕様
管理人用の覚書なので、甚だ不完全。
- (新規ページを作ったらココへ書き足してね)
- (どんな内容のページなのかについて一行ぐらいで書いてリンク貼って)
関連ページへのリンク(Wiki外) †
- (Wiki外部の参考ページに付いてはこっちにリンクを貼ってね)
- (どんな内容のページなのかについて一行ぐらいで書いてリンク貼って)
最新の20件
2008-03-31
2014-07-25
2011-05-19
2010-02-08
2008-10-16
2008-06-06
2008-05-31
2008-04-16
2008-03-24
2008-01-11
2007-12-30
- counter: 581
- today: 1
- yesterday: 0
- online: 1