2008b/A1/課題2右
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2008b/MemberOnly/進行状況A]]
#contents
*黒い線に沿って動くロボット [#e42741d7]
**課題内容 [#tf9e310f]
~各チームで作成したコースに沿って動くロボットを作成せよ。ただし、
-速さと正確さを追求すること
-交差点で優先側を走っていない場合には、一時停止すること
-前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと
-コースを2周したら自動的に止まること
~注意:コースラインの幅は20〜25mmくらいとしてますが,あまり太くしない限り制限はしていません。.
**使用するロボットやパーツ [#i9278100]
***前回のロボットを利用 [#t9d54155]
-安定性を出すためにつけた黄色足&br;
#ref(005.JPG);&br;
&br;&br;
-大きな2つのタイヤ&br;
#ref(006.JPG);&br;
***今回から使用するもの [#i540733b]
-光センサー&br;
#ref(007.JPG);&br;
~明暗を感知します。
今回は白い紙に書いた黒い道を見分けるために使用します。
&br;&br;
-タッチセンサー&br;
#ref(008.JPG);&br;
~黄色い部分が押されると反応します。
今回はもう一つのロボットとぶつかった時に道を譲らせるために使用します。
**制作過程 [#n1d8bd36]
***光センサー [#z20260e1]
~黒い道を挟む形で2つの光センサーを装着しました。
#ref(002 (2).JPG);&br;
~センサーが黒色を感知すると方向転換するようにするためです。
~&color(red,white){問題発生!};安定感が悪い。&br;
↓&br;
#ref(011.JPG);
#ref(2008b/A1/課題2右/015~.jpg,100%,光センサー移動);&br;
~バンパーの下に光センサーを移動。
***タッチセンサー [#d195790c]
~ダブルバンパー(タッチセンサーが反応する範囲を広げるためのもの。タッチセンサーを2つ使用)を装着しました。
#ref(001.JPG);&br;
~&color(red,white){問題発生!};センサーポート(センサーとロボット本体のセンサー機能を接続する場所)
が3つしかないのに、接続したいセンサーがタッチセンサーと光センサー合わせて4つあるため、センターポートが足りない。。。&br;
↓&br;
#ref(004.JPG);&br;
&br;
~「どっちも同じ働きをするんだから」と重ねてみました。&br;
↓&br;
#ref(CIMG0240.JPG);&br;
~結局シングルバンパー(機能はダブルバンパーと同様だが少しスリム。タッチセンサーを1つ使用。)に変更しました。&br;
~&color(red,white){問題発生!};バンパーの位置が高くて他のロボットを感知せず、止まらない!!
&br;
↓&br;
#ref(CIMG0250.JPG);&br;
#ref(CIMG0251.JPG);&br;
バンパーの下にこの黒いパーツをつけることにより、バンパーより下に他のロボットが当たっても感知可能に♪
~&color(red,white){問題発生!};シングルバンパーに黄色い足の部品を使わざるを得なかった。。。&br;
↓&br;
~ということで黄色い足を改造。
#ref(009.JPG);&br;
~ちょこっとスリムになりました。
**完成体 [#j469de44]
#ref(CIMG0249.JPG);&br;
**A1のコース [#edbc0c7b]
#ref(017.JPG);&br;
***コースについて [#ed2e2646]
~独創性があってよかったです。
~プログラムを担当した身から言わせてもらうと黒線が凸凹していて速さが追求しにくいかな、と。
~あと、コースのカーブが急すぎたのでこれまたスピードが追求できなかったです。
~黒線を横断するときコースから外れてしまう。。。
~etc,etc...
**プログラム [#t8c53616]
#define THRESHOLD 40
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサー1設定
SetSensor(SENSOR_2,SENSOR_TOUCH); //タッチセンサー設定
SetSensor(SENSOR_3,SENSOR_LIGHT); //光センサー2設定
int x; //交差した数のための変数
x = 0;
while(true){
if(SENSOR_2 == 1){ //当たったらしばらく待て
Off(OUT_A+OUT_C);
Wait(150);
}
if (SENSOR_1>THRESHOLD){
if (SENSOR_3>THRESHOLD){ //センサー1,3が黒線外
OnFwd(OUT_A+OUT_C);
Wait(5);
Off(OUT_A+OUT_C);
}
else{ //センサー1が黒線上
OnFwd(OUT_A);
Wait(5);
Off(OUT_A);
OnRev(OUT_C);
Wait(1);
Off(OUT_C);
}
}
else{
if(SENSOR_3>THRESHOLD){ //センサー3が黒線上
OnFwd(OUT_C);
Wait(5);
Off(OUT_C);
OnRev(OUT_A);
Wait(1);
Off(OUT_A);
}
else{ //センサー1,3両方が黒線上
Off(OUT_A+OUT_C);
Wait(150); //しばらく停止
x = x + 1;
If(x == 9)break; //黒線上を9回横断したら終了
OnFwd(OUT_A+OUT_C);
Wait(10);
}
}
}
}
***ライントレースの原理 [#p181ab6e]
~まず光センサーを二つ使って黒線のラインを両側ではさみ、その間から出さないようにするというのがこのライントレーサーの原理です。左側が黒線に当たればそれはコースから右に外れているということになり左に微調整させます。右側のセンサーが反応しても同じで左に外れていることがわかり右に微調整させます。コースから外れたらすぐわかるようにタイヤが設置されている場所よりなるべく前の方に取り付けました。
***プログラムで工夫した点 [#u5f37d57]
~やはり課題はなるべく速く正確にということだったので速くすればコースから外れる、正確にすれば遅くなるという試行錯誤を繰り返してWaitの中の数字を決めました。
~あと、急な方向転換ができるように曲がるとき反対のタイヤをバックさせるようにしました。
~2周したらその場で止めるために何回黒線をまたいだかを基準にしました。
**動いてる様子 [#l2a25748]
#ref(CIMG0238.JPG);
#ref(CIMG0239.JPG);&br;
~制作者としては、よちよち歩きもままならなかった我が子が、立って歩くのを見守る思い。道から外れないように頑張って!!
**コメントをどうぞ [#o413292f]
- ロボットの説明は良くできていると思います。後は、プログラムの工夫やラインとレースの原理を書いてみてください -- [[FI]] {2008-12-03 (水) 10:21:44};
- わかりました。 -- [[alpha]] {2008-12-04 (木) 16:26:30};
- 黒線の太さが均一でないのはめんどくさかったから? -- [[なかむら]] {2008-12-11 (木) 12:10:26};
- 黒線の太さについてですが、作者曰く「手書きだから」だそうです。 -- [[A子]] &new{2008-12-11 (木) 16:00:20};
#comment
終了行:
[[2008b/MemberOnly/進行状況A]]
#contents
*黒い線に沿って動くロボット [#e42741d7]
**課題内容 [#tf9e310f]
~各チームで作成したコースに沿って動くロボットを作成せよ。ただし、
-速さと正確さを追求すること
-交差点で優先側を走っていない場合には、一時停止すること
-前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと
-コースを2周したら自動的に止まること
~注意:コースラインの幅は20〜25mmくらいとしてますが,あまり太くしない限り制限はしていません。.
**使用するロボットやパーツ [#i9278100]
***前回のロボットを利用 [#t9d54155]
-安定性を出すためにつけた黄色足&br;
#ref(005.JPG);&br;
&br;&br;
-大きな2つのタイヤ&br;
#ref(006.JPG);&br;
***今回から使用するもの [#i540733b]
-光センサー&br;
#ref(007.JPG);&br;
~明暗を感知します。
今回は白い紙に書いた黒い道を見分けるために使用します。
&br;&br;
-タッチセンサー&br;
#ref(008.JPG);&br;
~黄色い部分が押されると反応します。
今回はもう一つのロボットとぶつかった時に道を譲らせるために使用します。
**制作過程 [#n1d8bd36]
***光センサー [#z20260e1]
~黒い道を挟む形で2つの光センサーを装着しました。
#ref(002 (2).JPG);&br;
~センサーが黒色を感知すると方向転換するようにするためです。
~&color(red,white){問題発生!};安定感が悪い。&br;
↓&br;
#ref(011.JPG);
#ref(2008b/A1/課題2右/015~.jpg,100%,光センサー移動);&br;
~バンパーの下に光センサーを移動。
***タッチセンサー [#d195790c]
~ダブルバンパー(タッチセンサーが反応する範囲を広げるためのもの。タッチセンサーを2つ使用)を装着しました。
#ref(001.JPG);&br;
~&color(red,white){問題発生!};センサーポート(センサーとロボット本体のセンサー機能を接続する場所)
が3つしかないのに、接続したいセンサーがタッチセンサーと光センサー合わせて4つあるため、センターポートが足りない。。。&br;
↓&br;
#ref(004.JPG);&br;
&br;
~「どっちも同じ働きをするんだから」と重ねてみました。&br;
↓&br;
#ref(CIMG0240.JPG);&br;
~結局シングルバンパー(機能はダブルバンパーと同様だが少しスリム。タッチセンサーを1つ使用。)に変更しました。&br;
~&color(red,white){問題発生!};バンパーの位置が高くて他のロボットを感知せず、止まらない!!
&br;
↓&br;
#ref(CIMG0250.JPG);&br;
#ref(CIMG0251.JPG);&br;
バンパーの下にこの黒いパーツをつけることにより、バンパーより下に他のロボットが当たっても感知可能に♪
~&color(red,white){問題発生!};シングルバンパーに黄色い足の部品を使わざるを得なかった。。。&br;
↓&br;
~ということで黄色い足を改造。
#ref(009.JPG);&br;
~ちょこっとスリムになりました。
**完成体 [#j469de44]
#ref(CIMG0249.JPG);&br;
**A1のコース [#edbc0c7b]
#ref(017.JPG);&br;
***コースについて [#ed2e2646]
~独創性があってよかったです。
~プログラムを担当した身から言わせてもらうと黒線が凸凹していて速さが追求しにくいかな、と。
~あと、コースのカーブが急すぎたのでこれまたスピードが追求できなかったです。
~黒線を横断するときコースから外れてしまう。。。
~etc,etc...
**プログラム [#t8c53616]
#define THRESHOLD 40
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサー1設定
SetSensor(SENSOR_2,SENSOR_TOUCH); //タッチセンサー設定
SetSensor(SENSOR_3,SENSOR_LIGHT); //光センサー2設定
int x; //交差した数のための変数
x = 0;
while(true){
if(SENSOR_2 == 1){ //当たったらしばらく待て
Off(OUT_A+OUT_C);
Wait(150);
}
if (SENSOR_1>THRESHOLD){
if (SENSOR_3>THRESHOLD){ //センサー1,3が黒線外
OnFwd(OUT_A+OUT_C);
Wait(5);
Off(OUT_A+OUT_C);
}
else{ //センサー1が黒線上
OnFwd(OUT_A);
Wait(5);
Off(OUT_A);
OnRev(OUT_C);
Wait(1);
Off(OUT_C);
}
}
else{
if(SENSOR_3>THRESHOLD){ //センサー3が黒線上
OnFwd(OUT_C);
Wait(5);
Off(OUT_C);
OnRev(OUT_A);
Wait(1);
Off(OUT_A);
}
else{ //センサー1,3両方が黒線上
Off(OUT_A+OUT_C);
Wait(150); //しばらく停止
x = x + 1;
If(x == 9)break; //黒線上を9回横断したら終了
OnFwd(OUT_A+OUT_C);
Wait(10);
}
}
}
}
***ライントレースの原理 [#p181ab6e]
~まず光センサーを二つ使って黒線のラインを両側ではさみ、その間から出さないようにするというのがこのライントレーサーの原理です。左側が黒線に当たればそれはコースから右に外れているということになり左に微調整させます。右側のセンサーが反応しても同じで左に外れていることがわかり右に微調整させます。コースから外れたらすぐわかるようにタイヤが設置されている場所よりなるべく前の方に取り付けました。
***プログラムで工夫した点 [#u5f37d57]
~やはり課題はなるべく速く正確にということだったので速くすればコースから外れる、正確にすれば遅くなるという試行錯誤を繰り返してWaitの中の数字を決めました。
~あと、急な方向転換ができるように曲がるとき反対のタイヤをバックさせるようにしました。
~2周したらその場で止めるために何回黒線をまたいだかを基準にしました。
**動いてる様子 [#l2a25748]
#ref(CIMG0238.JPG);
#ref(CIMG0239.JPG);&br;
~制作者としては、よちよち歩きもままならなかった我が子が、立って歩くのを見守る思い。道から外れないように頑張って!!
**コメントをどうぞ [#o413292f]
- ロボットの説明は良くできていると思います。後は、プログラムの工夫やラインとレースの原理を書いてみてください -- [[FI]] {2008-12-03 (水) 10:21:44};
- わかりました。 -- [[alpha]] {2008-12-04 (木) 16:26:30};
- 黒線の太さが均一でないのはめんどくさかったから? -- [[なかむら]] {2008-12-11 (木) 12:10:26};
- 黒線の太さについてですが、作者曰く「手書きだから」だそうです。 -- [[A子]] &new{2008-12-11 (木) 16:00:20};
#comment
ページ名: