- 追加された行はこの色です。
- 削除された行はこの色です。
[[2007a/A10/課題2右]]
#contents
*黒い線に沿って動くロボット [#fe4c331d]
#ref(./Image094~01.jpg)
**製作メンバー [#wb984525]
田丸、藤原
**ロボットの紹介 [#ve977490]
-【全体図】
#ref(./Image094~00.jpg)
-最初は、ダブルバンパー+光センサ×2で、上の写真のような構造にしていました。が、タッチセンサの反応が良くなかったので、交差点で、もう1台のRCXと衝突したときに巻き込まれる可能性を危惧して作りなおしました。
-上のバンパーの感度の問題が発生したため、苦し紛れにタッチセンサに頼らない方法を考えました。
#ref(./Image099~00.jpg)
【全体図】
最初は、ダブルバンパー+光センサ×2で、上の写真のような構造にしていました。が、タッチセンサの反応が良くなかったので、交差点で、もう1台のRCXと衝突したときに巻き込まれる可能性を危惧して作りなおしました。
上のバンパーの感度の問題が発生したため、苦し紛れにタッチセンサに頼らない方法を考えました。
考えてできたのが上の写真です。
煩わしいバンパーをスッキリ取り払い、光センサーをライントレース用と障害物感知用にしようと考えました。
一見、良いアイディアだと思ったのですが、ライントレース用の光センサが一つしかないため、「黒(暗い部分)」を感知させ、なおかつ今回の課題の「速く、正確に」を実現させるためにプログラムを並列にしなければならなかったので、このパターンも断念しました。
#ref(./Image095~00.jpg)
-【工夫&苦労した点】
結局、最後は無難なシングルバンパー+ライントレース用光センサ×2の形に落ち着きました。
**コース[#wf78d630]
**プログラム [#fec0dfd7]
#define TRESHOLD 40
#define MOTER OUT_A+OUT_C
#define THRESHOLD 40 //閾値を40に設定
#define MOTOR OUT_A+OUT_C
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
start line_trace; //ラインのトレースをスタート
start check_touch; //衝突の感知をスタート
}
task line_trace()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1に光センサを宣言
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3に光センサを宣言
while(true){
if(SENSOR_1>THRESHOLD){
if(SENSOR_3>THRESHOlD){
OnFwd(MOTER);
}else{
OnFwd(OUT_C);
Off(OUT_A);
if(SENSOR_1 > THRESHOLD){
if(SENSOR_3 > THRESHOLD){ //両方のセンサが白を感知
OnFwd(MOTOR); //前進する
}else{ //センサ1が白、センサ3が黒 を感知
OnFwd(OUT_A);Off(OUT_C); //左に曲がる
}
}else{
if(SENSOR_3 > THRESHOLD){ //センサ1が黒、センサ3が白を感知
OnFwd(OUT_C);Off(OUT_A); //左に曲がる
}else{ //両方のセンサが黒を感知
Off(MOTOR);Wait(400); //4秒間停止する
OnFwd(MOTOR);Wait(100); //1秒間前進
}
}
}
}
if(SENSOR_3>THRESHOLD){
OnFwd(OUT_A);
Off(OUT_C);
}else{
Off(MOTER);Wait();
OnFwd(MOTER);Wait();
}}
if(SENSOR_2 == 1){
OnRev(MOTER);Wait();
Off(MOTER);Wait();
OnFwd(MOTER);
}}
task check_touch()
{
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ2にタッチセンサを宣言
while(true){
if(SENSOR_2 == 1){ //バンパーが衝撃を受けると
stop line_trace; //ラインのトレースを一時停止
Off(MOTOR);Wait(300); //3秒間停止する
start line_trace; //ラインのトレース再開
}
}
}
**工夫&苦労した点 [#l9e53d55]
**感想 [#scfce757]
(田丸)
今回のメインはプログラムだと思っていたので、ロボットの構造は、あまり気に掛けていなかったのですが、
シンプルな構造にすればする程プログラムが複雑になっていったので正直なところ参りました。
(結局は時間がなくて光センサは二つ使ったのですが)
前回の課題から、「タイヤの摩擦」について改善しようと思っていたのですが時間がなくできなかったのが残念です。
今回の課題で、入力センサの仕組みが少し分かったので、次回は他の関数も使ってみたいと思います。
(藤原)
今回私は、プログラミングなどは田丸さんにやってもらってしまったので、コースを書くということしかしませんでした。コースを書くときは、交差点をどこにつくるかということや、線の太さなどによってセンサの反応が変わってしまったので、修正を加えるのが難しかったです。中でもコースのカーブ部分で脱線してしまったり、うまく動かすことができない箇所の修正が最も大変でした。ロボット全体としては音楽を入れれば機能のバラエティに富んで良かったかもしれません。次回は、ちゃんとプログラミングもしたりしてがんばろうと思います。
***コメントをお願いします [#o24aa411]
#comment