2007ロボコン


戻る

このページ
は、2007年度のロボコン対策のページです。

いろいろ

  1. ロボコンのルール・開催場所等
    これについてはコチラを参照してください。
  2. 去年のルール他
    コチラ。役に立たないと思うけど。
  3. 編集について
    基本的に編集自由、新規ページの作成もコメント等も自由ですが、
    以下のことだけ方針として決めておきます。
    分からないこと等ありましたら私(zampona)に質問をば。
    1. 新規ページの作成時にはこのページにリンクを貼ること
    2. 新規ページの名前の先頭には2007RCを付けること(ページ一覧から探すのが容易なので)
    3. (これは方針ではありませんが)編集法(文法)はコチラを参照してください。

スタック問題

  • そもそもスタックとは何ぞ…?な人は、
    をダウンロードしてくださいな。
    中身は普通のテキストなので、[右クリック]→[対象をファイルに保存]して
    ダウンロードした後で、RISで開いてみて下さいな。
    設定を変えずにRISをインストールしていれば、
    C:\Program Files\LEGO MINDSTORMS\Robotics Invention System 2.0\ users\(ユーザー名)\Vault
    というフォルダにダウンロードしておけば、RISで
    [ファイルを開く]をした時に直ぐに見つかるはず!
    あ、(ユーザー名)の部分にはいつも使っている
    ユーザー名(いつもログインする時に出てくるモノ)が入ってる筈。
  • スタックについての疑問。スタックを使えるかどうかで
    プログラムの幅が大きく変わるため、是非使いたい…。
  • テストのお願い
    センサースタックについてテストして欲しいっす。
    以下のようなテストプログラムを実行して欲しい。
    • 下準備
      • センサーとモーターをRCXにつなぐ。
    • プログラム
    1. センサースタックを用意
    2. センサースタックの中身は変数の値を変える等の、
      あまり時間のかからない処理を入れる。
    3. モーターを(10秒間程度)回す
    4. モーターが回っている最中にセンサーを動かす
    5. (センサースタックに処理が切り替わる…ハズ)


      で、

    • 途中センサーを動かした時、モーターは止まったか?
    • モーターは合計で何秒動いたか?
      (スタックの処理の後、どこに処理が戻ったのか?) が知りたいです…。

具体的な対策

  1. フリフリ型
  2. アーム型
  3. 根性型

フリフリ型

基本アイディア

右側と左側で交互に車輪を前進させ、ライトセンサーが必ず黒線上を通過するようにする。


実装

ロボットは、右側の車輪(群)左側の車輪(群)を別々に動かせなければいけない。
(別の言い方をすれば、超信地旋回ができないといけない)。
つまり、「右側の車輪(群)」を動かすモーター「左側の車輪(群)」を動かすモーター
がそれぞれ必要である。

  1. まずロボットの回転の中心を探す。
  2. ロボットの回転中心を通る、進行方向に平行な直線状にライトセンサーを取り付ける
    (文章で書くより図にした方が早いな…)

    本体の構造は必ずしも左右対称である必要は無いが、
    左右対称でないと回転の中心を見つけるのが難しいと思われる。

擬似コード


欠点

  1. Y字分岐に対応できない。
  2. 終端に達したことを判別するのに別のセンサーが必要

利点

  1. 構造が簡単
  2. ほぼ同じだが、必要なセンサー数が少ない。

という訳で

別のセンサーと併用したら使えるかも。




アーム型

基本アイディア

回転(転回?)可能なアームを用意し、その先端にライトセンサーを取付。

実装

モーターを使って回転可能な軸を作る。途中に回転センサーを取り付ける。
それをどうにかして床に近い位置で実現する。

擬似コード

  1. アームを振る
  2. ライトセンサーに反応があったら、そこで止める
  3. 回転センサーの数値を読み(?)、
  4. それと規定値(0°か180°)の差を減らす様に本体を回転させる。
  5. 同時にアームを常にライトセンサーの反応を維持する様に逆回転させる
  6. 暫く前進する
  7. 最初に戻る。

欠点

  1. 実装が複雑
  2. 必要なセンサーの数が多い
  3. モーターを一つ使ってしまう
  4. 重い
  5. 他の部材と干渉しない構造の実現が困難

利点

  1. (実現できれば)かなり安定した性能を出しそう
  2. 見た目が派手
  3. ライトセンサーの数は一つで全て賄える。

という訳で

やっぱり難しい。



根性型

基本アイディア

ほとんどセンサーを使わず、時々コースを外れていないかだけ確認。

実装

ライトセンサー以外の機械的構成は特に問わない。


擬似コード

(センサー)スタックが必須。スタックの動作次第では不可能…。

  • ライトセンサースタック
    (ライトセンサーが黒線を感知したらスタックに来る)
  1. 左右変数の値を右ならば左、左ならば右に変更する。
    1. 左右変数(黒線の右にいるか左にいるかを記憶しておく)
      を具体的にどう設定するかは自由。恣意的でよい。
      一般的なのは、(左,右)=(0,1),(1,0),(-1,1),(1,-1)など。
    2. つまり左右変数をrlv(right and left variable)とすると、
      (rlv=1)の時は(rlv=0)、(rlv=0)の時は(rlv=1)に変える。

  • メインルーチン(メインスタック)
  1. 左右変数を最初に居た側に設定する
  2. 「1秒(位の短時間)の前進」を必要なだけリピートする
    (スタックの影響を小さくするため)
  3. 5秒程度移動する(この間に黒線を通過したりしなかったりする)
    この移動は必ずしも直進だけではなく、右折や左折も含む。
  4. (「はい、いいえ」ブロックで)左右変数の値を確認して、
    1. 左側にいるなら右側に進み
    2. 右側にいるなら左側に進む
      (左右への移動量はそれほど大きくない方が良いと思われる。
      あくまで修正用)

メインルーチンで基本的には全ての移動をこなす。
ズレの修正も別スタック(このスタックは時間で制御)
に移動させてしまった方が良いかも。
ただそうすると、メインスタックの経過時間が把握し難いのが欠点。

欠点

  1. メインスタックの移動を設定するのが神業的(難しい)
  2. 修正量の調整も難しく、多過ぎれば落ちる。
  3. 電池の消費等で生じるモーター出力の変化をどう吸収するか。

利点

  1. センサーが少なくてよい
  2. マシンの構造を特に問わない
  3. メインルーチン重視なので、旧来のプログラムに近い(分かりやすいかも?)
  4. メインルーチンがしっかりしていれば、結構行けそう

という訳で

難しい(特にメインスタックの中身の調整が)が、
マシンの構造が変であっても、その部分を手動で
調整できるといえばできる。
メインルーチンが何をやっているかが、
分かりやすいといえば分かりやすい
(プログラムが技巧的と言う訳ではない)





関連ページへのリンク(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