2010b/A2/課題3左
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2010b]]
#contents
*メンバー [#ke317d14]
-仁野
-伊吹
*課題 [#h3a33568]
-コース上を走る相手のロボットを見つけ、そのロボットを5秒追尾し指定されたホイールを相手のロボットめがけて投げる。
-車輪を動かすためにはモーターをひとつしか使えない。
-ライントレースには光センサーをひとつしか使えない。
-ホイールは2以上投げる。
*コース [#b84103d5]
課題2に使ったコースを使います。
*ロボット [#i319ac69]
全体像
&ref(4.jpg);&ref(3.jpg);
発射装置
#ref(5.jpg)
レール上に押し出されたブロックは、レールを転がっていき高速で回り続けるタイヤの回転に巻き込まれ加速し、発射される。バーで打ち出す方法より優れている点はブロックが高速で発射され飛距離が長いこと。悪い点は、装置が大がかりになってブロックを消費しすぎ車体が重くなること。ブロックを装填する方法が、打ち出す方式ならば位置エネルギーを使えば簡単にできるが、回転するタイヤでは、静止しているブロックをタイヤに巻き込ませてもスピードが足りずにブロックがとまってしまう。そのためレール上を転がらせる必要があったので、レール上にブロックを押し出す方式を使わないといけなくなりとにかく面倒くさい。
装填装置
#ref(6.jpg)
ラックギヤが写真左に動きブロックをレールに押し出す。最初はレールの上のほうにブロックを待機させておいて、上下するバーでブロックを1つずつ転がせようとしたが、ブロックが思ったより速く動きだしてしまい1度に2,3個同時に転がってしまった。押し出したブロックを上手くレール上に入れるのも大変で、レールに入る角度がきつくて詰まってしまったりしたので、台形のブロックで斜めの壁を作り、その壁を滑ってレールに入るようにした。
ディファレンシャルギヤ
#ref(7.jpg)
今回はロボットが進むのに使えるモーターが一つに限られているのでディファレンシャルギヤを使用した。左右のタイヤにバーのブロックのストッパーがつけられており、それぞれ後ろに回転することのないようになっている。その結果左右いづれかの回転しかできず、前進するときはそれらを交互に繰り返すことによってジグザグに進む。
*プログラム [#rcf05db8]
**ライントレースするプログラム [#u989b1b8]
#define THRESHOLD 50
#define turn_left(t) OnFwd(OUT_A);Wait(t);Off(OUT_A);
#define turn_light(t) OnRev(OUT_A);Wait(t);Off(OUT_A);
#define RUN_TIME 75
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0); //タイマー0をリセットする
While(ture){
if(SENSOR_1<THRESHOLD){ //黒色の上にいるときは
turn_left(3); } 白色の方にすすむ
else_if(SENSOR_1<THRESHOLD){ //白色の上にいるときは
turn_light(3);} 黒色の方にすすむ
}
off(OUT_A);
}
**追尾するプログラム(仁野) [#k96fe634]
#define TURN_TIME 150
sub shot() //ブロックを発射するプログラム
{
OnFwd(OUT_C); Wait(50);
OnFwd(OUT_B);Wait(100);
Off(OUT_C+OUT_B);
}
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー1が光センサー
ClearTimer(0); //タイマーをリセット
int LM = 0; //光の明るさを変数でおく
while(Timer(0)<=TURN_TIME) //時間になるまで繰り返す
{
OnFwd(OUT_A);
if (SENSOR_2>LM) //光の最大値を測る
{ LM = SENSOR_2;}
}
OnFwd(OUT_A);
until(SENSOR_2 == LM);
ClearTimer(1); //タイマーをリセット
while(Timer(1)<=50) //時間になるまで繰り返す
{
OnFwd(OUT_A); //前進
Wait(030);
OnRev(OUT_A);
Wait(030);
}
shot() //ブロックを発射する
}
**追尾しないプログラム(伊吹) [#ma9a3d32]
#define turn_left(t) OnFwd(OUT_A);Wait(t);Off(OUT_A); //左に回る
sub shot()
{ //ブロックを発射するプログラム
OnFwd(OUT_C);Wait(50); //ボールを押し出す
OnFwd(OUT_B);Wait(100); //車輪を回転させる
Off(OUT_C+OUT_B);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1が光センサー
int light_max=0; //光の明るさを変数でおく
if(SENSOR_1>light_max){ //光の最大値を測る
light_max=SENSOR_1;
turn_left(380) //回転する
OnFwd(OUT_A);
until(SENSOR_1>=light_max); //光がもっとも明るくなるところまで回転する
Off(OUT_A);
shot(); //ブロックを発射する
}
*感想・反省 [#w13f79cd]
***仁野 [#b323d23a]
玉を一つずつ装填するのもプログラムも大変だったけど、ディファレンシャルギアを使って走らすのが得に大変だった。最初、車体が重いせいもあってギアがうまくかみ合わず、ギア比を調節したり苦労した。
***伊吹 [#nff0d84f]
一番大変なのはディファレンシャルギアだった。と思います。でも、ディファレンシャルギアと発射する装置は隣の人がやってくれたから僕は比較的ラクなとこだけですみました。それでも装填するやつは後付けな感じだったので、できうるかぎりコンパクトにしなければならず、そのうえ耐久性も兼ね備えたものにするのは結構大変だった。でも苦労の末に出来上がったロボはとても愛着がわいていて、ブロックを発射するのなんかもー実に快感で、ちょっといい思い出だったりする。
*コメント [#fb5a3fd5]
- 書くべき点を簡潔にまとめていると思います。ロボットがどういう動きをするかという説明だけではなく、どのような意図でその動きをさせるのかという点まで踏み込んだ説明があるとより良いレポートになると思います。 -- [[FI]] &new{2011-02-08 (火) 01:13:37};
- 苦労した点、課題について詳しく述べられているとさらに良いと思います。 -- [[TAKA]] &new{2011-02-08 (火) 13:22:55};
#comment
終了行:
[[2010b]]
#contents
*メンバー [#ke317d14]
-仁野
-伊吹
*課題 [#h3a33568]
-コース上を走る相手のロボットを見つけ、そのロボットを5秒追尾し指定されたホイールを相手のロボットめがけて投げる。
-車輪を動かすためにはモーターをひとつしか使えない。
-ライントレースには光センサーをひとつしか使えない。
-ホイールは2以上投げる。
*コース [#b84103d5]
課題2に使ったコースを使います。
*ロボット [#i319ac69]
全体像
&ref(4.jpg);&ref(3.jpg);
発射装置
#ref(5.jpg)
レール上に押し出されたブロックは、レールを転がっていき高速で回り続けるタイヤの回転に巻き込まれ加速し、発射される。バーで打ち出す方法より優れている点はブロックが高速で発射され飛距離が長いこと。悪い点は、装置が大がかりになってブロックを消費しすぎ車体が重くなること。ブロックを装填する方法が、打ち出す方式ならば位置エネルギーを使えば簡単にできるが、回転するタイヤでは、静止しているブロックをタイヤに巻き込ませてもスピードが足りずにブロックがとまってしまう。そのためレール上を転がらせる必要があったので、レール上にブロックを押し出す方式を使わないといけなくなりとにかく面倒くさい。
装填装置
#ref(6.jpg)
ラックギヤが写真左に動きブロックをレールに押し出す。最初はレールの上のほうにブロックを待機させておいて、上下するバーでブロックを1つずつ転がせようとしたが、ブロックが思ったより速く動きだしてしまい1度に2,3個同時に転がってしまった。押し出したブロックを上手くレール上に入れるのも大変で、レールに入る角度がきつくて詰まってしまったりしたので、台形のブロックで斜めの壁を作り、その壁を滑ってレールに入るようにした。
ディファレンシャルギヤ
#ref(7.jpg)
今回はロボットが進むのに使えるモーターが一つに限られているのでディファレンシャルギヤを使用した。左右のタイヤにバーのブロックのストッパーがつけられており、それぞれ後ろに回転することのないようになっている。その結果左右いづれかの回転しかできず、前進するときはそれらを交互に繰り返すことによってジグザグに進む。
*プログラム [#rcf05db8]
**ライントレースするプログラム [#u989b1b8]
#define THRESHOLD 50
#define turn_left(t) OnFwd(OUT_A);Wait(t);Off(OUT_A);
#define turn_light(t) OnRev(OUT_A);Wait(t);Off(OUT_A);
#define RUN_TIME 75
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0); //タイマー0をリセットする
While(ture){
if(SENSOR_1<THRESHOLD){ //黒色の上にいるときは
turn_left(3); } 白色の方にすすむ
else_if(SENSOR_1<THRESHOLD){ //白色の上にいるときは
turn_light(3);} 黒色の方にすすむ
}
off(OUT_A);
}
**追尾するプログラム(仁野) [#k96fe634]
#define TURN_TIME 150
sub shot() //ブロックを発射するプログラム
{
OnFwd(OUT_C); Wait(50);
OnFwd(OUT_B);Wait(100);
Off(OUT_C+OUT_B);
}
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー1が光センサー
ClearTimer(0); //タイマーをリセット
int LM = 0; //光の明るさを変数でおく
while(Timer(0)<=TURN_TIME) //時間になるまで繰り返す
{
OnFwd(OUT_A);
if (SENSOR_2>LM) //光の最大値を測る
{ LM = SENSOR_2;}
}
OnFwd(OUT_A);
until(SENSOR_2 == LM);
ClearTimer(1); //タイマーをリセット
while(Timer(1)<=50) //時間になるまで繰り返す
{
OnFwd(OUT_A); //前進
Wait(030);
OnRev(OUT_A);
Wait(030);
}
shot() //ブロックを発射する
}
**追尾しないプログラム(伊吹) [#ma9a3d32]
#define turn_left(t) OnFwd(OUT_A);Wait(t);Off(OUT_A); //左に回る
sub shot()
{ //ブロックを発射するプログラム
OnFwd(OUT_C);Wait(50); //ボールを押し出す
OnFwd(OUT_B);Wait(100); //車輪を回転させる
Off(OUT_C+OUT_B);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1が光センサー
int light_max=0; //光の明るさを変数でおく
if(SENSOR_1>light_max){ //光の最大値を測る
light_max=SENSOR_1;
turn_left(380) //回転する
OnFwd(OUT_A);
until(SENSOR_1>=light_max); //光がもっとも明るくなるところまで回転する
Off(OUT_A);
shot(); //ブロックを発射する
}
*感想・反省 [#w13f79cd]
***仁野 [#b323d23a]
玉を一つずつ装填するのもプログラムも大変だったけど、ディファレンシャルギアを使って走らすのが得に大変だった。最初、車体が重いせいもあってギアがうまくかみ合わず、ギア比を調節したり苦労した。
***伊吹 [#nff0d84f]
一番大変なのはディファレンシャルギアだった。と思います。でも、ディファレンシャルギアと発射する装置は隣の人がやってくれたから僕は比較的ラクなとこだけですみました。それでも装填するやつは後付けな感じだったので、できうるかぎりコンパクトにしなければならず、そのうえ耐久性も兼ね備えたものにするのは結構大変だった。でも苦労の末に出来上がったロボはとても愛着がわいていて、ブロックを発射するのなんかもー実に快感で、ちょっといい思い出だったりする。
*コメント [#fb5a3fd5]
- 書くべき点を簡潔にまとめていると思います。ロボットがどういう動きをするかという説明だけではなく、どのような意図でその動きをさせるのかという点まで踏み込んだ説明があるとより良いレポートになると思います。 -- [[FI]] &new{2011-02-08 (火) 01:13:37};
- 苦労した点、課題について詳しく述べられているとさらに良いと思います。 -- [[TAKA]] &new{2011-02-08 (火) 13:22:55};
#comment
ページ名: