[[2017b/Member]] 目次 #contents *課題 2 [#lf7f25f1] 黒い線のコースに沿って動き、紙コップを移動させるロボットを製作せよ。 (相棒と違うコースを選ぶこと。ただし第3コースは3名チーム用とする。) (画像) 私は第2コースで課題に挑戦した。 ***第2コース [#w1e7dea2] Dをスタート →Cを直進 →Bを左折 →Pを左折(一時停止) →Qを直進 →Rを左折 →Fを左折 →Sを直進(一時停止) →Y地点の紙コップを取得してコースに戻る →Sを直進(一時停止) →Qを左折(一時停止) →Rを直進 →X地点に紙コップを置いてコースに戻る →Pを左折 →B を左折(一時停止) →A地点へ(ゴール) *ロボットの説明 [#fabe6e83] (画像) 旋回のしやすさなどを考えて3輪のロボットにした。光センサーは旋回時に大きく揺れるのを防ぐために前輪に近づけた。地面とセンサーの距離は1.7cm。 **後輪部 [#y2526e24] (画像) 今回の課題では「何秒旋回するか」が1つの重要のポイントであり、旋回秒数にズレが生じないことが求められた。よって旋回するときに紙との抵抗を小さくするためにプラスティックの車輪を使用した。 **アーム部分 [#nf2da228] (画像) 試行錯誤を繰り返した結果画像のようになった。コップをキャッチできる範囲を増やすため大きめのモデルにした。その結果画像のように立てた状態からでないとおろすことができない。 先端の車輪はおろしたときに紙との抵抗を小さくするために取り付けた。 脇についている黄色い棒はコップが横からすり抜けてしまったり、倒れてしまったりするのを防ぐために取り付けた。 (画像) アームを起こした時の衝撃を耐えるための補助部分。 *プログラム [#uc315582] まず以下のように定義した。 #define shikiichi 45//閾値45 #define HIPOWER 7// #define LOWPOWER 1// #define set_power_H SetPower(OUT_ABC,HIPOWER); #define set_power_L SetPower(OUT_ABC,LOWPOWER); #define mae set_power_H;OnRev(OUT_AC); //前進する #define hidari set_power_L;OnRev(OUT_C);Off(OUT_A); //左折する #define migi set_power_L;OnRev(OUT_A); Off(OUT_C); //右折する #define hidarisennkai set_power_L;OnFwd(OUT_A); OnRev(OUT_C); //左旋回する #define migisennkai set_power_L;OnRev(OUT_A); OnFwd(OUT_C); //右旋回する #define go(s) OnRev(OUT_AC);Wait(s);Off(OUT_AC); //s秒前進する #define tomaru Off(OUT_AC);Wait(100); //交差点で1秒止まる #define back(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); //t秒後退する #define turnleft(u) OnFwd(OUT_A);OnRev(OUT_C);Wait(u);Off(OUT_AC); //u秒左旋回する #define turnright(v) OnFwd(OUT_C);OnRev(OUT_A);Wait(v);Off(OUT_AC); //v秒右旋回する #define right(w) OnRev(OUT_A);Wait(w);Off(OUT_A); //w秒右折する #define ageru set_power_H;OnRev(OUT_B);Wait(035);Off(OUT_B); //アームを上げる #define sageru set_power_H;OnFwd(OUT_B);Wait(010);Off(OUT_B); //アームを下げる