[[2006a/B7/課題2左]]

[[2006a/B7]]
**今回のメンバー [#m3c997be]
クーロン茶、たいよう、おかじ
* 光センサーを使ったライントレースロボット [#ze3df488]&br;
紙に黒ペンで線を引いて、その上をひたすらまわるロボットの作成&br;

**命名・ライントレースロボット『たどるくん』byおかじ (まるで象サンみたいね)[#caa1e92a]
★製作者★ おかじ
#ref(2006a/B7/課題2左/SN340006.JPG,50%,正面)
これ↑が一応ロボットの原型?です。課題の発表時にはこの姿で走らせました。~
しかし、こんな何の特徴もないロボットじゃつまらない!閲覧者の皆さん、そう思いませんか!?(いや、別に)~
そこで、ロボット製作のエキスパート、おかじさんが素晴らしいロボットを製作してくれました。それがこれ↓
#ref(2006a/B7/課題2左/ashi.jpg,120%,正面)
一応足もあります☆この足で重たい体を支えてます。
#ref(2006a/B7/課題2左/hana.jpg,120%,正面)
この鼻。。。ここだけの話やけど上下運動します!!電子辞書を持ち上げるくらいのパワーがあります(マジで)

<クーロン茶の戯言> ~
<ロボットについて> ~
おかじさんによると、本当はこれ、ぞうさんじゃなくてカブトムシのつもりだったらしいです(^o^;でも、最終完成体はぞうでもカブトムシでもなくて、サソリロボットになったんですが...~
ちなみに、この上下する鼻を製作するのに余ってたギアーを10個も使ったとの話(^^;

**プログラム [#z174e241]
まず、ライントレースをするためのプログラムのみを考えてみることにしました。タッチセンサーのプログラムは後ほど考えることに。
まず、ライトセンサーとタッチセンサーの両方のプログラムを1度に考えるのは難しいと思ったので、はじめはライントレースをするためのプログラムのみを考えてみることにしました。タッチセンサーのプログラムは後ほど考えることに。
  ライントレースのみのプログラムです。<製作者> クーロン茶
  task main()
  {
  SetSensor(SENSOR_1,SENSOR_LIGHT);
  SetSensor(SENSOR_3,SENSOR_LIGHT);
  SetSensor(SENSOR_1,SENSOR_LIGHT);  //センサ−1がライトセンサーであると宣言
  SetSensor(SENSOR_3,SENSOR_LIGHT);    //センサ−2がライトセンサーであると宣言
  OnFwd(OUT_A+OUT_C);
  while (true) {
  if(SENSOR_1 < 40) {
  OnFwd(OUT_C);
  if(SENSOR_1 < 40) {  //左側のライトセンサーが黒線に触れると
  OnFwd(OUT_C);    //右側のタイヤだけを回転
  Off(OUT_A);
  }
  if(SENSOR_3 < 40) {
  Off(OUT_C);
  if(SENSOR_3 < 40) {  //右側のライトセンサーが黒線に触れると
  Off(OUT_C);    //右側のタイヤだけを回転
  OnFwd(OUT_A);
  }
  }
  }
次に、上のプログラムに2種類のタッチセンサーのプログラムを追加しました。
  右によけて追い越すプログラムです。☆製作者☆ クーロン茶&たいよう
  task main()
  {
  SetSensor(SENSOR_1,SENSOR_LIGHT);センサ−1がライトセンサーであると宣言
  SetSensor(SENSOR_2,SENSOR_TOUCH);センサ−2がタッチセンサーであると宣言
  SetSensor(SENSOR_3,SENSOR_LIGHT);センサ−3がライトセンサーであると宣言
  SetSensor(SENSOR_1,SENSOR_LIGHT);  //センサ−1がライトセンサーであると宣言
  SetSensor(SENSOR_2,SENSOR_TOUCH);  //センサ−2がタッチセンサーであると宣言
  SetSensor(SENSOR_3,SENSOR_LIGHT);    //センサ−3がライトセンサーであると宣言
  
  OnFwd(OUT_A+OUT_C);
  
  while (true) {
  if(SENSOR_1 < 40) {  //左側のライトセンサーが黒線に触れると
  OnFwd(OUT_C);  //右側のタイヤだけを回転
  Off(OUT_A);
  }
  if(SENSOR_3 < 40) {  //右側のライトセンサーが黒線に触れると
  Off(OUT_C);  //右側のタイヤだけを回転
  OnFwd(OUT_A);
  }
  if(SENSOR_2 == 1) {  //タッチセンサーが入ると
  OnRev(OUT_A+OUT_C);  //いったんバックして
  Wait(50);
  OnFwd(OUT_A);  //右によけて追い越して
  Wait(83);
  OnFwd(OUT_C);
  Wait(160);
  OnRev(OUT_A);
  Wait(83);
  OnFwd(OUT_A);
  Wait(160);
  OnRev(OUT_A);
  Wait(87);
  OnFwd(OUT_A);  //またラインとレースを開始します
  }
  }
  }

  180度反転して逆走し始めるプログラムです。☆製作者☆ クーロン茶&おかじ
  task main()
  {
  SetSensor(SENSOR_1,SENSOR_LIGHT);  センサ−1がライトセンサーであると宣言
  SetSensor(SENSOR_2,SENSOR_TOUCH);  センサ−2がタッチセンサーであると宣言
  SetSensor(SENSOR_3,SENSOR_LIGHT);  センサ−3がライトセンサーであると宣言
  
  OnFwd(OUT_A+OUT_C);
  
  while (true) {
  if(SENSOR_1 < 40) {  //左側のライトセンサーが黒線に触れると
  OnFwd(OUT_C);  //右側のタイヤだけを回転
  Off(OUT_A);
  }
  if(SENSOR_3 < 40) {  //右側のライトセンサーが黒線に触れると
  Off(OUT_C);  //右側のタイヤだけを回転
  OnFwd(OUT_A);
  }
  if(SENSOR_2 == 1) {  //タッチセンサーが入ると
  OnRev(OUT_A+OUT_C);  //180度反転し
  Wait(50);
  OnFwd(OUT_A);  //逆走し始めます
  Wait(165);
  OnFwd(OUT_C); 
  }
  }
  }

**工夫した点 [#r1cd8ac1]

★ロボットと制作過程☆&br;
1、カーブでも小回りがきくように、左右のタイヤ幅をできるだけ狭くした。これにより、少々のきついカーブでもラインから脱線しにくくなった。&br;

2、接続のコードが見えないように内部にコードを通し,見栄えを良くした。&br;

3、なんとなく鼻?をつけた 笑☆ でも、重心が片寄りすぎて前の方に支える足を付け加えるはめになった(>_<)&br;
3、なんとなく鼻?をつけた 笑☆ &br;

**苦労した点 [#fe8d7543]
1、180度反転して逆走し始めるプログラムは、反転にかかる時間さえ測れば後はわりとすぐできたけど、右によけて追い越す方は追い越した後にコースに戻るようにプログラムを考えるのに手こずった。

2、difineの定義をもっとうまく使ってプログラミングすれば、もう少しすっきりしたプログラムになったと思った。次回から積極的に使っていこうと思う。

**反省点 [#aca4346f]
1、鼻。

2、課題発表のときにB7右の班のクワガタ?ロボットと対戦させて、先生、TAの方に御迷惑をかけたこと。すいませんでしたm(__)m

  おまけ:角(鼻)の動くプログラム、たどるくんの完全体の画像はおかじの個人ページに貼ってあります。

☆プログラム制作過程★


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS