2019a/Member

課題2

A地点を出発し、次のいずれかの経路を黒い線にそって動くロボットを作成する (他のメンバーとは別の経路になるようにする)。 黒い線をトレースする。 交差点では1秒間停止し、丁字路では直角方向に進入する時のみ一時停止すること。

2コースあるうち私は下記のルートを担当した。

A地点から出発 → B → C(直進) → D(一時停止の後、直進) → E → F → G(一時停止の後、右折) → H → I → J(右折) → K(左折) → L(ピンポン玉をつかむ) → K(直進) → M(一時停止) → シュート→ A地点に入る(ゴール)

ロボティクス課題2コース.jpg

全体像

20190717_210754s.jpg
20190717_210809s.jpg

動きやすさを重視するために全体の軽量化を試みた。

プログラミング

担当したコースの道順上、線の右側をトレースすることにした。

また光センサーによる認識の数値は

ロボティクス入門課題2光センサー値.jpg

とし、それぞれの値による動きは以下の通り。 41:右旋回 43:右折 48:直進 50:左折 55:左旋回 交差点の判断 黒線の左側の境界を使用する。光センターの感知する色が、真っ黒なら左旋回、それより少し白くなったら左回転、黒と白の中間(これを灰とする)なら直進、白よりの灰なら右回転、真っ白なら右旋回、となるようにプログラムを組む。そして、左旋回(真っ黒)の続く時間によって交差点の判別を行い、左旋回がある一定時間続いたら止まるようにする。

またwhileを使うことで、交差点まではトレースし続けることが出来る。

Timer(0)で、グローバル変数tを使って、左旋回(真っ黒)が続いた時間を測る。左旋回以外の四つの挙動にはClearTimer(0);を入れることで左旋回の時間だけを計測している。

実際に光センサーを使って値を測定し、プログラムにしたものが下のプログラムである。グローバル変数tはプログラム冒頭に、int t;で指定する。tを変えることで、交差点判別の時間をその都度変えることが出来る。

反省点

上の図のスタートからシュートまで一連の動きでできたのは5回に1回程度だった。タイヤを四輪から二輪にしたり、全体の軽量化をして改善を試みたができなかった。そこでプログラミングによる調整をした。グローバル変数を用いて交差点と円の区別をさせようとしたが、うまくできなかった。ピンポン球の回収・発射させる部分はつまる事なくできた。 次回はロボットにあったプログラミングは組みたい。


添付ファイル: fileロボティクス入門課題2光センサー値.jpg 134件 [詳細] fileロボティクス課題2コース.jpg 178件 [詳細] file20190717_210905s.jpg 135件 [詳細] file20190717_210839s.jpg 164件 [詳細] file20190717_210809s.jpg 152件 [詳細] file20190717_210754s.jpg 145件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-15 (木) 00:22:00