[[2007a/MemberOnly/進行状況A]]
#counter

#hr
CENTER:&size(25){[[課題2>2007a/練習問題#kadai2]]:黒い線に沿って動くロボット };
#hr
//CENTER:&size(25){[[''課題2:黒い線に沿って動くロボット'' >2007a/練習問題#kadai2]]
CENTER:&color(pink,){アンジェリカ};&&color(lightgreen,){たけぽん}; 
--目次
#contents
-------

*☆課題のPOINT☆ [#d0b81bf7]

-速さと正確さを追求すること
-交差点で優先側を走っていない場合には、一時停止すること
-前方にあるもう一台のロボットに接触した場合に停止して相手のロボットが行き過ぎるのを待つ、あるいは距離が離れるのを待つこと

*ラインレースのコース紹介  &color(green,){カエルコース};[#e081b3ad]
CENTER:&ref(2007a/A6/課題2左/S3700181.JPG,40%);


LEFT:梅雨の季節になりました。
LEFT:うっとうしい雨と考えるか、恵みの雨と考えるか、それは人それぞれ。
LEFT:でもほとんどの人が、雨は嬉しくないもの。
LEFT:そこで、そんな梅雨が少しでも楽しくなるように、
LEFT:今回コースには季節感を考え、&color(green,){カエル};をモチーフに作りました。

LEFT:曲がる部分が多いので、チョット複雑なコースになっています。
*ロボットの紹介 [#f2cb02f7]
**ロボットのベースとなった2台 [#ye96fe48]

|BGCOLOR(#C0C0C0):&ref(2007a/A6/課題2左/S3700169.JPG,35%);|←光センサーのみ|BGCOLOR(#C0C0C0):&ref(2007a/A6/課題2左/S3700166.JPG,35%);|←タッチセンサーのみ|
この2台をもとに新しいロボットを作りだした。
ただし、ただ付け加えるだけでは、速さが不十分であると感じたので、タイヤを変更し、ベース部分も無駄な部分は取り払った。
**最新型 [#c29fba6e]
|BGCOLOR(orange):&ref(2007a/A6/課題2左/S3700182.JPG,50%);|
 
-今回のロボットの特徴は、&color(red,){小型軽量};ということ。
--&color(#00FFFF){''小型化のためにしたこと''};~
-前回のロボットの構造のほとんどを改良というか、作り直ししました。まず、ベース。無駄なものを全て取り外し作り直しました。
-モーターを横に置き、後ろのほうにもってくることにより、前方に設置してあるセンサーの重みとのバランスをとった。

*プログラムの紹介 [#b780f2aa]
プログラム自体はそんなに長くはならないが、基本的な動きに充実であるように組んだ。
しかし、交差点の時の為の細かい調整は必要だった。

LEFT:モーターA 車体左側の動力担当 順回転で前進
LEFT:モーターC 車体右側の動力担当 順回転で前進

LEFT:センサー1 光センサー 車体左側の監視を担当
LEFT:センサー2 タッチセンサー マシン前方の中央に設置
LEFT:センサー3 光センサー 車体右側の監視を担当

*プログラム [#rdfc272c]
 #define THRESHOLD 42   
 #define RUN_TIME 150   
 #define GOGO OUT_A+OUT_C   // define a gogo as onfwd
 task main ()
 {
    SetSensor(SENSOR_1, SENSOR_LIGHT);
    SetSensor(SENSOR_2, SENSOR_TOUCH);
    SetSensor(SENSOR_3, SENSOR_LIGHT);   // define a sensor as light n touch
    
    OnFwd(GOGO); 
    while(true){
          if((SENSOR_1 >= THRESHOLD) && (SENSOR_3 >= THRESHOLD)){
             OnFwd(OUT_A+OUT_C);                                       // when they find themself in white ground go ahead
          }else if((SENSOR_1 < THRESHOLD) && (SENSOR_3 >= THRESHOLD)){
             OnFwd(OUT_C);
             OnRev(OUT_A);                                           // when they find themself in black line on their right go right
          }else if((SENSOR_1 >= THRESHOLD) && (SENSOR_3 < THRESHOLD)){
             OnFwd(OUT_A);
             OnFwd(OUT_C);                                            // when the  find themself in black line on their left go left
          }else if((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD)){
             OnFwd(GOGO);                                              // when they find themself in black line on both go ahead
          }
        if(SENSOR_2 == 1)
          {
            OnRev(OUT_A+OUT_C);
            Wait(200);
            Off(OUT_C);
            OnFwd(OUT_A);
            Wait(250);
            Off(OUT_A);
            OnFwd(OUT_C);          // when they was touched by somthing, wait a sec and turn right and go straight
            Wait(250);
          }
 }
 }
 //if(SENSOR_2 == 1)
  {
   Off(OUT_A+OUT_C);
   Wait(100);
   OnFwd(OUT_C);
   OnRev(OUT_A);
   Wait(180);
   Fwd(OUT_A);    // in a case we can use this source on the end of the program

*苦労、工夫した点 [#y7ae69f1]
-ロボットのバランス。軽量化を意識しすぎたため、タッチセンサーと光センサーを前方に置くと、どうしても今までのモーターの置き方では前のめりになってしまい、試行錯誤の末にモーターを後ろに横向きで置き、さらに補助輪を付けることによりバランスの問題は、解消した。
*反省&感想 [#l7414115]
-他人同士で1つのものを作るというのは、大変なこと。お互い妥協しなければならない部分、妥協できない部分がある。そういったことに対して、いかに折り合いをつけていくか、それが大切だと感じた。だからこそ、達成もとい完成した時の喜びが、大きく感じられたんだろうと思う。
*先生、TAの方々のコメント [#a5fb6428]
&color(blue,){些細なことでも、何かお気付きになられましたら、コメントの方お願いしますm(_ _)m};
-プログラムの説明があるとさらに良いでしょう。文字の色を変えて重要な部分を強調しているのはわかりやすくて良いでしょう。 -- [[ヒロヤ]] &new{2007-06-21 (木) 13:09:33};
-細かな点ですが、OnFwd(OUT_A+OUT_C) 全体を GOGO として定義したほうがわかりやすですね。 -- [[松本]] &new{2007-06-22 (金) 08:42:22};

#comment



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