- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*課題2・黒い線に沿って動くロボット [#ge99588a]
2つの光センサーが白を感知して進みます。それによって、ロボット本体を黒の線上を進むようにしました。
**【メンバー】 [#t1e2029d]
・宮原
・大益
**【ロボット紹介】 [#j76913f3]
**【プログラム】 [#q7a68997]
#define MOTOR OUT_A+OUT_C
#define THRESHOLD 40 // 闘値を設定
#define RUN_TIME 150
#define MOTOR OUT_A+OUT_C
#define THRESHOLD 40
#define TIME 0
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); // センサ1が光センサであることを定義
SetSensor(SENSOR_3,SENSOR_LIGHT); // センサ3が光センサであることを定義
SetSensor(SENSOR_2,SENSOR_TOUCH); // センサ2がタッチセンサであることを定義
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
while(true){
if(SENSOR_1 > THRESHOLD){
if(SENSOR_3 > THRESHOLD){
OnFwd(MOTOR);
} else {
if(SENSOR_2 == 1){
OnRev(MOTOR);
Wait(60);
Off(MOTOR);
Wait(300);
} else {
if(SENSOR_1 > THRESHOLD){
if(SENSOR_3 > THRESHOLD){
OnFwd(MOTOR);
} else {
OnFwd(OUT_A);
Off(OUT_C); // センサ1が反応(黒線から外れた)したとき、Aを進めCを止める
}
} else {
Off(OUT_C);
Wait(TIME);
}
} else {
if(SENSOR_3 > THRESHOLD){
Off(OUT_A);
OnFwd(OUT_C); // センサ3が反応(黒線から外れた)したとき、Aを止めCを進める
}else{
OnFwd(MOTOR);
Wait(20);
Off(MOTOR); // 2つの光センサが黒線上にあるとき2秒前進する
}
}
OnFwd(MOTOR);
until(SENSOR_2 == 1); // タッチセンサーが反応したら
}
OnFwd(OUT_C);
Wait(TIME);
} else {
OnFwd(MOTOR);
Wait(30);
Off(MOTOR);
}
}
}
}
}
***衝突時の対応 [#vd4c4ef4]
いくつかのロボットをコース上で動かすために、交差点などで衝突した場合の対応を組み込みました。
if(SENSOR_2 == 1){
OnRev(MOTOR);
Wait(30);
Off(MOTOR);
Wait(100);
衝突直後3秒間後退します、その後10秒間停止して、再び前進し始めます。最初はテーブルバンパーを元に、タッチセンサを本体に付けようと考えていましたが、衝突した時の反応時間が遅くなってしまうこと、それにより衝突した相手のロボットの進路を妨げないために、下の写真のようにしました。拡散
**工夫した点・努力した点 [#ld375496]
前回の書道ロボットに比べ、軽量で小回りを利かせる事を念頭に考えて作りました。