- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*課題2・黒い線に沿って動くロボット [#ge99588a]
2つの光センサーが白を感知して進みます。それによって、ロボット本体を黒の線上を進むようにしました。
2つの光センサーが白を感知して進みます。それによって、ロボット本体を黒の線上を進むようにします。
**【メンバー】 [#t1e2029d]
・宮原
・大益
**【ロボット紹介】 [#j76913f3]
#ref(全体.jpg)
試作機です。最初はテーブルバンパーを直接つけていました [#if70eaac]
・二つのバンパーのどちらかが当たる事により、片方のタッチセンサが反応します。
#ref(全体2.jpg)
テーブルバンパーを改造、今回の課題発表では、こちらを使います。
・真ん中のパイプに当たることにより、2つのタッチセンサが反応します。
・最初のバンパーに付いていた小さな車輪を無くすことにより、曲がるときの抵抗を減らそうと考えました。
***【テーブルバンパーの改造】 [#y99d7a4c]
最初はテーブルバンパーを本体に直接付けていましたが、衝突した時の反応時間が遅かったこと、それにより衝突した相手のロボットの進路を妨げてしまうのではないかと考え下図のように、テーブルバンパー(弐式)を作りました。タッチセンサや光センサの位置は変わっていません。
#ref(A9R001.jpg)
テーブルバンパーでは、衝突した時、また机の端から落ちそうになった時にも反応します。しかし、今回の課題では衝突時に限られていたため、逆に今回のコースをカーブする時に、前進には強い形になっているテーブルバンパーは邪魔になっているのではないかと考えました。タッチセンサが常に押されないように軽く、そして押されたらすぐに反応
するようにと弐式では考えました。
#ref(A9R004.jpg)
**【プログラム】 [#q7a68997]
#define MOTOR OUT_A+OUT_C
#define THRESHOLD 40
#define TIME 0
#define MOTOR OUT_A+OUT_C // A、Cのモーターへの同時出力を“MOTOR”と定義
#define THRESHOLD 40 // 闘値を設定
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
{
SetSensor(SENSOR_1,SENSOR_LIGHT); // センサ1が光センサであることを定義
SetSensor(SENSOR_3,SENSOR_LIGHT); // センサ3が光センサであることを定義
SetSensor(SENSOR_2,SENSOR_TOUCH); // センサ2がタッチセンサであることを定義
while(true){
if(SENSOR_2 == 1){
OnRev(MOTOR);
Wait(60);
Off(MOTOR);
Wait(300);
} else {
if(SENSOR_1 > THRESHOLD){
if(SENSOR_3 > THRESHOLD){
OnFwd(MOTOR);
if(SENSOR_2 == 1){ // タッチセンサが反応した時(衝突時の対応です)
OnRev(MOTOR);
Wait(30); // 3秒後退します
Off(MOTOR);
Wait(100); // 10秒停止します
} else { // それ以外は・・・・・
if(SENSOR_1 > THRESHOLD){
if(SENSOR_3 > THRESHOLD){
OnFwd(MOTOR); // 左右の光センサがともに白線上にある時は、前進します。
} else {
OnFwd(OUT_A);
Off(OUT_C);
Wait(TIME);
}
} else {
Off(OUT_C); // 右の光センサが反応(黒線に接した)したとき、Aを進めCを止める
}
} else {
if(SENSOR_3 > THRESHOLD){
Off(OUT_A);
OnFwd(OUT_C);
Wait(TIME);
} else {
OnFwd(MOTOR);
Wait(30);
Off(MOTOR);
}
}
}
}
OnFwd(OUT_C); // 左の光センサが反応(黒線に接した)したとき、Aを止めCを進める
}else{
OnFwd(MOTOR);
Wait(20);
Off(MOTOR); // 2つの光センサが黒線上にあるとき2秒前進する
} // (↑は交差点を渡るためのプログラムです。)
}
}
}
***衝突時の対応 [#vd4c4ef4]
いくつかのロボットをコース上で動かすために、交差点などで衝突した場合の対応を組み込みました。
***【衝突時の対応】 [#vd4c4ef4]
いくつかのロボットをコース上で動かすために、交差点などで衝突した場合の対応が、プログラムの最初の辺に組み込んであります。
if(SENSOR_2 == 1){
OnRev(MOTOR);
Wait(30);
Off(MOTOR);
Wait(100);
衝突直後3秒間後退します、その後10秒間停止して、再び前進し始めます。最初はテーブルバンパーを元に、タッチセンサを本体に付けようと考えていましたが、衝突した時の反応時間が遅くなってしまうこと、それにより衝突した相手のロボットの進路を妨げないために、下の写真のようにしました。拡散
衝突直後3秒間後退します、その後10秒間停止して、再び前進し始めます。
**工夫した点・努力した点 [#ld375496]
**【工夫した点・努力した点】 [#ld375496]
前回の書道ロボットに比べ、軽量で小回りを利かせる事を念頭に考えて作りました。