- 追加された行はこの色です。
- 削除された行はこの色です。
[[2006a/練習問題]]
**課題2 黒い線を沿って走るロボット [#u47370b6]
#contents
*コースについて [#v640fb2e]
数字の「7」にしました。これは何故この数字になったかはまったくの謎です。
ですが良い案が出てこなかったからなったんじゃないかな…
ちなみに画像は↓にあります。面倒かと思いますが見てやってください。妙な絵ですが…
#ref(2006a/A3/課題2右/robo_7.pict)
↑ これはライントレースのための黒い線です。しかし、実際使ったものの写真を撮ってなかったのでペイントで同じようなものを描きました。
*ぶつかると反転して進むロボット [#a8106304]
制作者:トミー
掲載日:6月16日
#define turn_RIGHT ;OnFwd(OUT_A);OnRev(OUT_C);Wait(150);
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
while (true) {
OnFwd(OUT_A+OUT_C);
if (SENSOR_1 < 45) {
OnFwd(OUT_C);
OnRev(OUT_A);
until (SENSOR_1>45);}
if(SENSOR_3<40) {
OnFwd(OUT_A);
OnRev(OUT_C);
until(SENSOR_3>45); }
if(SENSOR_2==1) { //タッチセンサーが反応した場合
OnRev(OUT_A+OUT_C); //0.8秒後退
Wait(80);
turn_RIGHT //逆向きになるまで回転
}
}
}
制作者 Hagino
掲載日 7月14日
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
while(true)
{
if(SENSOR_1<40;
{
OnFwd(OUT_C);
OnRev(OUT_A);
}
if(SENSEOR_3<40)
{
OnFwd(OUT_A);
OnRev(OUT_C);
}
if((SENSOR_1>40)&&(SENSOR_3>40))
{
OnFwd(OUT_A+OUT_C);
if(SENSOR_2==1)
{
OnFwd(OUT_A);OnRev(OUT_C);
Wait(180);
OnFwd(OUT_A+OUT_C);
}
}
}
}
*ほかのロボットにあたるとよけるロボット [#u963aca1]
制作者:トミー
掲載日:6月23日
#define THRESHOLD 40
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);/センサー1をライトセンサーと宣言
SetSensor(SENSOR_2, SENSOR_LIGHT);/センサー2をライトセンサーと宣言
SetSensor(SENSOR_3, SENSOR_TOUCH);/センサー3をタッチセンサーと宣言
OnFwd(OUT_A+OUT_C);
while (true) {
if (SENSOR_3 == 1) {
OnRev(OUT_A+OUT_C) ; Wait(50);0.5秒後退する
Off(OUT_A+OUT_C);
OnRev(OUT_C);
Wait(150);/モーターCを1.5秒逆回転
OnFwd(OUT_A+OUT_C);
Wait(150);/1.5秒進む
Off(OUT_A);
Wait(150);1.5秒左回転させる
OnFwd(OUT_A);
Wait(150);
Off(OUT_A);
Wait(150);
OnFwd(OUT_A);/モーターAを動かし元のコースに戻る
} else {
if (SENSOR_1 < 40) {
Off(OUT_A);
OnFwd(OUT_C);センサー1に黒線が入ると左回転
}
if (SENSOR_2 < 40) {
OnFwd(OUT_A);
Off(OUT_C);センサー2に黒線が入ると右回転
}
}
}
}
制作者:Hagino
掲載日:7月21日
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をタッチ
SetSensor(SENSOR_3,SENSOR_TOUCH); //センサー3をタッチ
while(true){
if(SENSOR_1 < 45)
{
OnFwd(OUT_A);
Off(OUT_C);
}
else
{
Off(OUT_A);
OnFwd(OUT_C);
}
if((SENSOR_2 ==1) || (SENSOR_3 ==1)) //センサ−2またはセンサー3が反応したら
{
OnRev(OUT_A+OUT_C); //左へ旋回
Wait(110);
OnFwd(OUT_A);
Wait(145);
OnFwd(OUT_C);
Wait(145);
Off(OUT_A);
Wait(145);
OnFwd(OUT_A );
Wait(145);
Off(OUT_A);
Wait(145);
OnFwd(OUT_A);
}
}
}
*苦労した点 [#g9e13731]
・やっぱりタッチセンサーの付け方ですかね。光センサーのほうはある程度
付けやすかったのですが…。そして、なにより急なカーブを曲がる時が難しかったですね。なかなかうまく曲がりきれなくて何度もコースアウトをしてしまいました。そうして、何度もプログラムを改善させていくといつのまにかうまく曲がれるようになっていました。
*工夫した点 [#ud69f104]
・光センサーを機体の中央にもってきました。どうしてかというと、曲がるときに光センサーを前のほうに装着しているとすんごい誤差が生じるので真ん中に持ってきました。
・コースは急カーブなんかが入ってて曲がるのが難しかったが、機体の重さや装飾などを改良して曲がりきれるようにしました。
*反省点 [#p5aa7b41]
一番の反省点は、なかなかロボのために集まることができなくて大変多くの時間を必要としたところです。次からは、できるだけ集まって期限に間に合うように進めていきたいです。
*ご意見・ご感想 [#c1fc15f9]
コメントをどうぞ!
-前回の課題と比べてページにあまり進化が少ないです。他の班も参考にしてもう少し頑張ってみましょう&worried; -- [[まいける(TA)]] &new{2006-07-25 (火) 19:02:34};
#comment