- 追加された行はこの色です。
- 削除された行はこの色です。
*課題 [#ja0fc808]
#ref(2015a-mission2.png)
黒い線に沿って移動するロボットを製作した。
私はCからAに向かうコースを選んだ。
C地点からA地点へ (Q交差点では直進、P三叉路では右折)
*ロボットの説明 [#u0efaa8d]
#ref(ピン球とロボ.JPG)
**概要 [#oa1e4b68]
ロボットは、機体前部に光センサーとコの字型のピン球誘導アームを取り付けた。光センサーはできるだけ機体中央に位置するほうが位置ずれを抑えて小回りが効くが、左右の旋回でのライン前進を求めたために中央から遠い位置に設置した。
**アーム [#m6f348f7]
アームはただのコの字型のため、ピン球をしっかりと運ぶことは難しかった。しかしピン球の認識がタッチセンサーで出来ないことや、そのためにピン球を固定する機構の実行タイミングが合わないことから、モータ駆動のアームによるピン球運搬の採用を見送った。
*プログラム [#b892865b]
交差点として判断せずに、あくまで通常のライントレースの幅を変えることで対応させた。
ライントレースのプログラムは前半と後半の2パターンに分かれる。これはコース前半の交差点までの部分が他のラインが近くて入り組んでいること、後半は比較的広いことを考えてのことである。なお、このブログラムではあ交差点を認識をさせていない。前述のとおり、後半のコースが広いので、ロボットの旋回による位置ずれを利用し、交差点Qから間違ってB方面に向かったあたりから脱線させて順路に戻させるようになっている。
***定義 [#e9f16468]
#define THRESHOLD 45
#define HIPOWER 5 // 直線用のパワー
#define LOWPOWER 3 // カーブのパワー
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define go_forward set_power_H; OnFwd(OUT_AC);
#define turn_left1 set_power_L;\
OnFwd(OUT_C); OnRev(OUT_A);
#define turn_left0 set_power_L;\
OnFwd(OUT_C); Off(OUT_A);
#define turn_right0 set_power_L;\
OnFwd(OUT_A); Off(OUT_C);
#define turn_right1 set_power_L;\
OnFwd(OUT_A); OnRev(OUT_C);
#define STEP 1
#define RUN_TIME 90
***前半 [#ee7d3229]
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0); // Timer(0) をリセット
while (true) {
if (SENSOR_2 < THRESHOLD -8) {
turn_right1; // 右旋回
} else if (SENSOR_2 < THRESHOLD +3) {
go_forward; // 直進
} else if (SENSOR_2 < THRESHOLD +8) {
turn_left1; // 左旋回
}
Wait(STEP);
}
#ref(開始地点.JPG)
前半は小回りが効くように設定した。他のラインと干渉しないようにするためである。ライントレースはラインの右側を感知するようにしてある。
***後半 [#ndfe8402]
while (true) {
if ( Timer(0) => RUN_TIME ) {
go_forward;Wait(120);Off(OUT_AC);
if (SENSOR_2 < THRESHOLD -8) {
turn_right0; // 大右旋回
} else if (SENSOR_2 < THRESHOLD +3) {
go_forward; // 直進
} else if (SENSOR_2 < THRESHOLD +8) {
turn_left0; // 大左旋回
}}
}
}
#ref(大回り.JPG)
後半はB地点方面へのラインに乗る大まかな時間を測定し、タイマーでプログラムを変更、大回りで脱線させてP〜Qに戻させる。そしてそのままA地点に向かい、ピン球を運ぶ算段である。
*反省点 [#e433b9d5]
交差点の認識が間に合わなかったことや、ピン球のシュート機構が制作できなかった。ピン球のゴールも数度しか成功していない。精度を高めることが重要である。
*感想 [#r20787bd]
定義付け、行動の略記ができたことや、基本的にライントレースが成功しているので微調整という作業ができたのがよかった。