左右のメンバー入れ替えとのことだったが、変更せずに作ったロボット
目次
授業中話し合った結果、光センサーを2つ、タッチセンサーを1つ使ったロボットを作ることにした。
初☆評価の勢いで、このロボットもハチャメチャにしっかりと作っていきたいと思う。
明日が締め切りだと勘違いし、慌てふためく。
軽くプログラムを作ったものの、何故か直進。改良の余地あり。
初号機のお披露目。だが、すぐに改良の手が差し掛かる。速度を上げるため、ギアの比率を変えてみる。
安心しきったせいか、とうとう期限前日まで手付かず。必死にプログラムを改良するが、やはり直進。だれか救援を・・・
ロボコン製作段階へと入っているのに今頃ページを更新。
理由は締切期限が迫っているからであります。
駆動方法:車輪による移動
センサー類:光センサー 2個 タッチセンサー 1個
ドライブベースは説明書に載っているものと同じ。
センサーの数が決まったが、どこにつけるかは決めていなかった。
ロボ製作の上手いメンバーに依頼したところ、高機能なバンパーが完成した。先頭部分にタッチセンサーが配置され、光センサーが並ぶようにバンパーの中央に設置されたものだ。ただブロックを重ねるだけでなく、横の穴からも接続しているため、課題1で深刻だった強度不足も全く心配なかった。
光センサーが並んでいるので、黒線の中を進んでいくことになった。なるべく線を細くできるように、片方のセンサーの向きを変え、密着させている。
課題2を見てわかるように、今回は機動力も重視される。
駆動案にキャタピラ・車輪・足などが挙がったが、やはり構造が簡単で確実な車輪に決定。ギアの比率を変えることで簡単にスピードアップができた。
(だが当日は標準速度へ…)
車体ができたところで、早速プログラムを作ってみた。しかし、線を無視して猪突猛進。プログラムを見直しても知識不足のせいか、解決できず。
一人のメンバーのプログラムで何とかライントレースができたため、前日はここで諦める。
当日になって、コースを作ってないことが問題に。
「何がいい?」と聞く段階で作業が止まってしまい、時間ギリギリから作成開始。その結果がこちら↓
人生への迷いが感じられます
画用紙の両面にコースを書いて、裏表を変えれば色々な組み合わせができるコースもいいなと考えていた。だが、その頃には目の前に失敗作が…
あえなく一面だけのコースとなりました。
今まで全く交換していなかった電池ですが、少し気になって調べてみたところ電圧は7.78V…
授業では8Vをきったら交換しろと言われていました。まさか誤作動はこれが原因なのでは?
当然この次の課題で電池交換をしました。費用は150円なり〜
さあ発表…と思いきやあまり発表らしきものはしなかった。
まぁ一部未完成だったしいいかなぁと。結局この日はそれで終わりました。
上の写真ではスッキリしたロボットですが、オプションパーツが存在します。それにプログラムにはOUT_Bの文字が…
その正体は…?
こちらで〜す
いや〜とても画期的な発明です。モーターが回ると軸に取り付けたネジ状のパーツが回り、輪ゴムが上へとのぼっていきます。そして、最終的には発射されます。
3連続発射が可能です。これで前のロボットを攻撃か?
バンパーとして取り付け。
プログラムが原因?電池が原因?未だに不明
案外時間が掛かった。リーダー的な存在がいない(?)のが原因であろう。
結局今回は不完全燃焼で終わってしまった。時間は十分あったはずなのにあまり成果がないので、改善すべきだなと思った。
今回もメンバー全員が授業以外で集まることはなかった。どうせやるなら、皆で協力してやっていきたい。
今回のコースは画用紙を使って製作しました。買ってから気づいたが、模造紙のほうが広く、持ち運びも便利だなと感じました。
受け付けなかったプログラムはこちら↓
2006a/A2/課題2右/前プログラム
#define light 35 //光の閾値 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーと定義 SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチセンサーと定義 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーと定義 OnFwd(OUT_B); //おまけを始動 while(1) //無限ループ { if(SENSOR_1>light) //センサー1が線の外の場合 { Float(OUT_C); //進みながら左へ曲がる }else{ //そうでない場合 OnFwd(OUT_A+OUT_C); //直進 } if(SENSOR_3<light) //センサー3が線の外の場合 { Float(OUT_A); //進みながら右へ曲がる }else{ //そうでない場合 OnFwd(OUT_A+OUT_C); //直進 } if(SENSOR_2==1); //物に触れた場合 { OnFwd(OUT_A);OnRev(OUT_C);Wait(180); //旋回 } } }
#define light 40 //光の閾値を設定 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1が光センサーと定義 SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2がタッチセンサーと定義 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3が光センサーと定義
while(1) //無限ループ { if(SENSOR_1>light) //センサー1が線から外れた場合 { Float(OUT_C); //前進しながら左へ }else{ //センサー1が線の中の場合 OnFwd(OUT_A+OUT_C); //前進 } if(SENSOR_3<light) //センサー3が線から外れた場合 { Float(OUT_A); //前進しながら右へ }else{ //そうでない場合 OnFwd(OUT_A+OUT_C); //前進 } if(SENSOR_2==1); //物に触れた場合 { Float(OUT_C);Wait(30); //前進しながら左へ OnFwd(OUT_C);Float(OUT_A);Wait(30); //前進しながら右へ OnFwd(OUT_A); //線の中へ } } }
プログラム //制作者 ムーディ [#j1749bc7]
#define x 30 光の閾値
task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ−1を光セ ンサーと定義 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ−3を光センサーと定義 SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ−2をタッチセンサーと定義 while(1){ //無限ループ if(SENSOR_1<x) { //センサ−1がライン上に乗った場合 OnFwd(OUT_C); //左に曲がる } if(SENSOR_3<x) { //センサ−3がライン上に乗った場合 OnFwd(OUT_A); //右に曲がる } if((SENSOR_1>x)&&(SENSOR_3>x)) //センサー1、3が ともにライン上にない場合 { OnFwd(OUT_A+OUT_C); } //直進 if(SENSOR_2==1) { //タッチセンサーが反応した場合 OnFwd(OUT_A);Wait(180); OnRev(OUT_C);Wait(180); //回転
} } }
#define x 40//光の閾値
task main() { SetSensor(SENSOR_1,SENSOR_LIGHT) //センサー1を光センサーと定義 SetSensor(SENSOR_3,SENSOR_LIGHT) //センサ−3を光センサーと定義 SetSensor(SENSOR_2,SENSOR_TOUCH) //センサ−2をタッチセンサーと定義 while(1){//無限ループ if(SENSOR_1<x) { //センサー1がライン上に乗った場合 OnFwd(OUT_A); //左に曲がる }
if(SENSOR_3>x) { //センサ−3がライン上に乗った場合 OnFwd(OUT_A); //右に曲がる }
if((SENSOR_1>x)&&(SENSOR_3>x)){ //センサー1、3が共にライン上にない場合 {OnFwd(OUT_A+OUT_C);} //直進
if(SENSOR_2==1) { //タッチセンサーが反応した場合 OnRev(OUT_A+OUT_C);Wait(100); //後退して OnFwd(OUT_A);Wait(45); OnRev(OUT_C);Wait(45); //右に回転し OnFwd(OUT_A+OUT_C);Wait(70); //前進 OnFwd(OUT_C);Wait(45); OnRev(OUT_A);Wait(45); //左に回転し OnFwd(OUT_A+OUT_C);Wait(100); //前進 OnFwd(OUT_A);Wait(45); OnRev(OUT_C);Wait(45); //右に回転してコースに戻る } } }
これはラインからはみ出したときに片っぽのタイヤを止めてからトレースするプログラムです。
#define light 35 //LIGH値 task main() SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1=光センサ SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2=タッチセンサ SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3=光センサ
while(1) //無限ループ { if(SENSOR_1>light) //センサー1=線の外 { Off(OUT_C); //左へ旋回 }else{ //そうでない場合 OnFwd(OUT_A+OUT_C); //直進 } if(SENSOR_3<light) //センサー3=線の外 { Off(OUT_A); //右へ旋回 }else{ //そうでない場合 OnFwd(OUT_A+OUT_C); //直進 } if(SENSOR_2==1); //物に触れた場合 { OnFwd(OUT_A);OnRev(OUT_C);Wait(360); //旋回 } } }
よろしければアドバイスを…