- 追加された行はこの色です。
- 削除された行はこの色です。
[[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
おまけ:角(鼻)の動くプログラム、たどるくんの完全体の画像はおかじの個人ページに貼ってあります。
☆プログラム制作過程★