#contents *ロボットの説明 [#ia837c28] 今回は近くにある空き缶を探してその空き缶にボールをシュートして当てるというロボットを製作した。 **車輪部分 [#l32b8558] 写真部分は三輪にした。 &ref(./ロボ2.1.jpg,30%); なぜかというと小回りがきくため操作が容易になると考えたからである。 **アーム部分 [#kb58e74f] アーム部分はこのようになっている。 &ref(./ロボ2.5.jpg,30%); 下にある固定された2本のアームと上にある可動式の1本のアームでつかむ仕組みになっている。 &ref(./ロボ2.3.jpg,30%);&ref(./ロボ2.4.jpg,30%); ロボットは課題2とほとんど同じである 違うところはアームのところに超音波センサーをつけた。 *プログラム [#q2270217] 缶を見つけて缶に近づき缶に向かってシュートするプログラムをつくる。 このプログラムは超音波センサーを使い近くの缶を探す。 始めにロボットが旋回しその間に缶がある方向を見つける。その後缶が置いてある方向を向き近づく。 そしてシュートするというプログラムだ。 task main() { SetSensorLowspeed(S1); long t0=CurrentTick(); //タイマー0を設定 long t1=CurrentTick(); //タイマー1を設定 int d_min; d_min=300; //仮の最小値を設定 while(CurrentTick()-t0 < 1800){ //18秒の間旋回して近くにあるものを検索する OnFwd(OUT_B,-40); //旋回する OnFwd(OUT_C,40); if (SensorUS(S1)<d_min){ //もし仮の最小値より小さい値を見つけた場合 d_min=SensorUS(S1); //その値を仮の最小値に代入 t1=CurrentTick(); //タイマー1をリセット } } Off(OUT_BC); Wait(500); OnFwd(OUT_B,40); //旋回する OnFwd(OUT_C,-40); Wait(CurrentTick()-t1-500); //最後に仮の最小値を見つけた時からたった時間分逆に旋回する。(つまり最小値の方を向く) OnFwd(OUT_BC,40); until (SensorUS(S1)<20); //缶から20センチのところまで前進 Off(OUT_BC); Wait(500); //シュート OnFwd(OUT_BC,-40); //後退 Wait(150); Off(OUT_BC); Wait(300); OnFwd(OUT_A,-20); //アームを上げる Wait(1500); OnFwd(OUT_BC,70); //前進(シュート) Wait(300); Off(OUT_BC); } *反省・感想 [#n26dc485] **反省 [#k5d65027] 今回はサンプルプログラムを参考に時間を利用してこのプログラムをつくった。 仕組みをしっかり理解できたので自分でも作ることができた。しかしサンプル プログラムはすべて理解することはできなかった。 **感想 [#i67d6676] 今回はほかの課題に比べてスムーズにプログラムを作ることができた。 自分でロボットの動きを想像しながらプログラムを打つのが楽しく感じることができた。