メンバー紹介

今回のメンバーはお隣A7Lチームの荒川 舞さん(舞ちゃん)・新井田 宏君(宏)のマシンと同じコースを走るということで、共同でコースを作りました。後のメンバーは前回と同じ、やっと縣が終わって忙しさが少し減った藤田 裕介君(ユウスケ)・私、和久田 成治(ワクさん)であります。コースに関しては、僕と舞ちゃんで考えて、宏とユウスケにOKかどうか聞くかたちでコース作りに入りました。うちの担当は前回と同じくユウスケがマシンに関して全般と、ホームページ作成においての写真を載せたりしてもらい、僕がプログラミングとホームページ作成(マシンの説明、コースについて(写真を添付してくれた時に一緒にしてくれました)、今回の反省点(マシン編)、感想(ユウスケ)以外)を担当しました。

今回の課題について

今回の課題は、マシンで黒線を追うということ。 しかし! マシン二つを同時に走らせること、コースには必ずひとつ交差点を設け、交差点では優先を決めて、優先はそのまま通過、優先ではないほうはいったん停止するという困難な課題で(少なくとも僕は(汗))、できるかどうかという気持ちの下、課題に取り組みました。

マシンの説明

今回のマシンの名前はギョウザ丸2号です。→ DSCF1005.JPG

本体部分

回のマシンは2号機で最初は4輪車を使用するはずでした… しかし!!今回もまたスピードが出過ぎてミニ4駆みたいに… そこでいまのスタイルに至った訳です。 今回のマシンは、前回の反省点であった「ゴツくなり過ぎた」という点に注意して作りました。まず本体部分についてですが、ここは当初スピードを重視したつくりにしようとしました。が、先ほどにも書いたようにスピードをうまく制御することができず、ミニ4駆みたいになってしまいました。また、スピードがありすぎると「カーブを曲がる際にトラブルが発生しやすいのでは?」といった話が出たため、写真のような少しスピードを抑えたマシンへとなりました。

タッチセンサー

タッチセンサーは基本的な作りはマニュアルにのっとったものを作りました。ただ、改良した点としてカーブなどの時の邪魔にならないようにバンパーを小さくしてみました。 DSCF1008.JPG

光センサー

光センサーは最初マシンにくっつける形にしようと思いました。しかしなかなかうまくいかなかったので、タッチセンサーの上に乗っけることにしました。それだけでは不十分だと思い、ゴムで括りつけて固定しました。

DSCF1007.JPG

コースの説明

コースについてですがこれは前に書いてあるとおり舞ちゃんとワクさんが共同で作ってくれました。コースの特徴はすべてのカーブが左折であるということです。コースの形についてですがこれには諸説いろいろあるようなのですが特に意味はないようです。 DSCF1009.JPG

ギョウザ丸2号が黒線をトレースする!!(プログラミング)

今回は説明が必要であろう式の横に番号を振りました♪説明は下にあるのでそちらを参照してください。黒線のトレースの仕方は、ギョウザ丸につけた光センサー二つで黒線を挟むようにして行います。

#define THRESHOLD 44     //光センサーを反応させるときの値
task main()
{
    SetSensor(SENSOR_1,SENSOR_LIGHT);     //センサー1が光センサーであることを示す式
    SetSensor(SENSOR_3,SENSOR_LIGHT);     //センサー3が光センサーであることを示す式
    SetSensor(SENSOR_2,SENSOR_TOUCH);     //センサー2がタッチセンサーであることを示す式
    
    while(true)     //12346を繰り返させるための式
    {
         OnFwd(OUT_A+OUT_C);     //1 前進
    
         if(SENSOR_1 < THRESHOLD)     //2 センサー1が黒線上にきた時に{}内の式を行わせるための式
         {
          Off(OUT_A+OUT_C);
          OnFwd(OUT_C);
          until(SENSOR_3 < THRESHOLD);     //センサー3が黒線上にくるまで左折させる
          Off(OUT_C);
          OnFwd(OUT_A);Wait(7);
          OnFwd(OUT_A+OUT_C);
         }
    
         if(SENSOR_3 < THRESHOLD)     //3 センサー3が黒線上にきた時に{}内の式を行わせるための式
         {
          Off(OUT_A+OUT_C);
          OnFwd(OUT_A);
          until(SENSOR_1 < THRESHOLD);     //センサー1が黒線上にくるまで右折させる
          Off(OUT_A);
          OnFwd(OUT_C);Wait(7);
          OnFwd(OUT_A+OUT_C);
         }
    
         if((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD))  //4 センサー1と3が両方反応した時に{}内の式を行わせるための式
         {
          OnRev(OUT_A+OUT_C); Wait(50);
          Off(OUT_A+OUT_C); Wait(50);     //5
          OnFwd(OUT_A+OUT_C); Wait(70);
          Off(OUT_C);
          OnFwd(OUT_A);
          until(SENSOR_1 <  THRESHOLD);
         }
         
         if(SENSOR_2 == 1)     //6 マシンどうしがぶつかった時に{}内の式を行わせるための式
         {
          OnRev(OUT_A+OUT_C); Wait(50);
         }
    }
}

光センサーを反応させる値は、変更する場合を考え、defineを使って変更を楽にできるようにしました。

5 今回の課題の『いったん停止』 上に書いてある通り4の「光センサーが両方反応した場合」、ギョウザ丸は黒線を挟んで走るので、この場合は交差点に来たことを示します。ですから、「課題について」で書いた通り、ここは一旦停止しなくてはなりません。それの「一旦停止」です。

今回の反省点

マシン編

最初の方にモーターの向きを間違えるといった初歩的なミスが目立ったので次からはなくしていきたいと思います。また、センサーの位置が少し不安定なところも改善したいと思いました。今回のマシンは軽量化をしてカーブや他の動きに差しさわりのないものにするということを念頭においていたので、課題だったシンプル化をクリアする形にもなってよかったと思いました。

プログラミング編

最初にwhileを入れるのを忘れてて、「光センサーが反応しない!!」と騒いで、それで大事な時間をかなり失ってしまい、大変な目に逢いましたが、まあなんとかできてほっとすると同時に、次はこんなポカミスをしないよう気をつけよう思いました(汗)このプログラミングでは、コースを一周するのに時間がかかる時と、あまり時間がかからない時があったので、差がないようにプログラミングをもっと複雑にしたかったのですが・・・まあ無理でした(苦笑)次の課題も、また頑張りたいと思います。

感想

ワクさん

前回の課題よりは少し楽で助かりました(笑)今回もプログラミングを担当したのですが、我ながら頑張ったと思う反面、もうちょっと複雑にしてみたかったなぁというのが正直なところです。

ユウスケ

ホームページを作るのが遅かったので少し迷惑をかけてしまいました。次からは早め早めの行動をとりたいと思います。マシンは比較的よくできていたのでよかったと思います。マシンのプログラミングにも少しずつ携わっていきたいと思いました。

コメントをどうぞ

  • プログラムの解説が少しわかりづらい、というか見づらいです。プログラムの簡単な解説は、ソース内にコメントでいれて、具体的な動作順序や分岐、それに伴う動作などはソース外にフローチャートや、箇条書きなどをうまく取り入れながら書いたほうが読みやすいかと思います。 -- まいける(TA) 2007-06-21 (木) 10:11:40
  • 重要なワードを強調していて見やすい。プログラムの解説はもう少しうまくまとめると良いでしょう。 -- ヒロヤ? 2007-06-21 (木) 13:16:10


添付ファイル: fileDSCF1009.JPG 226件 [詳細] fileDSCF1007.JPG 229件 [詳細] fileDSCF1008.JPG 211件 [詳細] fileDSCF1005.JPG 220件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-06-21 (木) 19:13:37