[[2008b/MemberOnly/進行状況A]] #hr CENTER:&size(25){光に反応して動くロボット}; #hr CENTER:製作者: 零崎 目次 #contents *まず始めに [#naf77b4a] 今回の課題なのですが相方が必修が危ないからやめるとか言い出しました。 よって今回の課題は零崎一人でロボット制作からプログラムまでやることになりました。 提出が遅れたことをお詫びいたします。 *今回のマシンの特徴及び苦労した点 [#a103fdec] - ディファンレンシャルギアを用いたロボット、ギアの特徴を掴むのに非常に苦労しました - 何かうまくロボットが動かないと思ったらギアの根元部分の噛み合わせがうまくいっていなかった |>|CENTER:COLOR(#808080):&ref(2008b/A7/課題3左/gia2.jpg,75%,マシン);| |&ref(2008b/A7/課題3左/gia1.jpg,75%,マシン);| 左が調節前、右が調節後となります。左右に配置し密着させることで右は空回りを防ぎます。 どのギアがどの役割を果たすかを理解するのに苦労しました - 50cmをどうするかでまた悩みました。関数を使って前進をコントロールすることもできましたがどのチームも同じ感じなのでタッチセンサーを用いることに。50cmで何もなかったらどうすんねん。といわれたら関数だってライトの位置遠くしたら同じやないか!と反論したい気分。大目にみてください>< *マシン全体図 [#a62019b5] :COLOR(#808080):&ref(2008b/A7/課題3左/robot1.jpg,75%,マシン);| こちらマシンが棒をつけるまえ :COLOR(#808080):&ref(2008b/A7/課題3左/bou.jpg,75%,マシン);| こちら如意棒装着後。これで50cmを感知します。これのおかげでプログラムが簡単になりました。 :COLOR(#808080):&ref(2008b/A7/課題3左/arm10.jpg,75%,マシン);| こちらはアームの装着時。シンプルなカタパルトです。 発射時に振り切るのではなくてストッパーで止めて発射します。 :COLOR(#808080):&ref(2008b/A7/課題3左/arm12.jpg,75%,マシン);| 狙い打つぜ! * プログラム紹介 [#t7c41e98] 課題1 光に反応してライトに近づきタイヤを投げるプログラム #define THRESHOLD 70 // 光の値を定義します #define THRESHOLD2 70 // task main() {SetSensor(SENSOR_1, SENSOR_LIGHT); センサーを定義 SetSensor(SENSOR_3, SENSOR_LIGHT); SetSensor(SENSOR_2, SENSOR_TOUCH); while(true){ until(SENSOR_2){ 50cmにちかづくまで以下の行動を繰り返す if (SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD ) { センサー両方光に入る Off(OUT_A); 滑らかにうごかすため一旦停止 Wait(30); OnFwd(OUT_A); 前進を繰り返す Wait(50); Off(OUT_A); Wait(80); OnRev(OUT_A); Wait(50); Off(OUT_A); }else{ OnFwd(OUT_A); }} Off(OUT_A); タッチすると反応 OnFwd(OUT_B); タイヤを投げて止まります Wait(5); Off(OUT_B); }} 課題2 ライトを追っかけてライトが止まったら近づいて投げるロボット 基本的な部分はさっきのものを流用。ライト感知を左右と分けることによってライトを追っかける仕組みを導入しました。 #define THRESHOLD 70 // 上は前回のと同じ #define THRESHOLD2 70 // task main() {SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); SetSensor(SENSOR_2, SENSOR_TOUCH); while(true){ until(SENSOR_2){ if (SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD2 ) { Off(OUT_A); Wait(30); OnFwd(OUT_A); Wait(50); Off(OUT_A); Wait(80); OnRev(OUT_A); Wait(50); Off(OUT_A); }else{ if(SENSOR_3 < THRESHOLD 70 ){ センサーが外れた状況から回る方向を決定 OnRev(OUT_A); } if(SENSOR_1 < THRESHOLD 70){ OnFwd(OUT_A); } }} Off(OUT_A); OnFwd(OUT_B); Wait(5); Off(OUT_B); }} *工夫した点 [#ad5105a2] -なんといってもギアの調節。これのかみ合わせに苦労しました。 -次に苦労した点は50cm。プログラムが大変にならないようスイッチにしました。 -一番苦労したのはすべて一人でやったこと。まさか相方が自分の手持ちの仕事丸投げしてどっかにいくとは思いませんでした、はい *ロボット制作日誌 [#abbc4ad5] -12月末 ギアの特徴を掴むのに一苦労なんとか構造を理解。でも噛み合わせが悪い - 1月最初の授業 自分以外チームの人は長い正月休み 泣けてくる 一人でロボットつくる - 1月10日 相方が逃げるとメールしてきた。教授に話を通しとけと怒るが返信こず - 1月16日 ロボットがやっと完成。ギアの噛み合わせ調整が一番難しかったです - 1月20日 プログラムほぼ完成。一人でやるのはちょっとさびしい *コメントの欄 [#c6296af5] よろしければコメントをどうぞ - タッチセンサを使ったのはユニークだと思います。光センサと組み合わせたりするとより早くて正確な認識ができるかもしれません。 -- [[FI]] &new{2009-02-02 (月) 20:08:59}; #comment