2015a/Member/sansa/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
**目次 [#p4c77eaa]
#contents
*課題 [#y6dc8d24]
決められたラインを通りゴールまで行く。~
途中でボールをキャッチしゴールでシュートする。~
決められたラインの図は[[課題2:http://yakushi.shinshu-u.a...
私はCからAへ行く課題です。
*ロボット [#i73b3712]
#ref(1.jpg)
**本体 [#fa6f6cc5]
本体はマインドストームの冊子12p〜17pのドライブベー...
#ref(3.jpg)
ここが最大の工夫点です。
光センサーをドライブベースのほぼ中心に配置することができ...
このことによりモーターの軸と光センサーがほぼ一直線になる...
またドライブベースの前方が綺麗になったためアームの拡張性...
**アーム [#hce0ca54]
簡単につけ外しができます。
#ref(2.jpg)
アームはモーターによって動く部分と固定してある部分に分か...
モーターで動く部分は上から見て左が短く、右が長くなってい...
ギア比の違いによってシュートするときに左のアームが1回転...
*プログラム [#o1d1885d]
プログラムの作成にあたっては「[[マインドストームを使って...
~
プログラムは大きく分けて2つになります。~
・ライントレースによって前に進む部分~
・交差点を渡ったり曲がったりするものとボールを掴んだり放...
です。~
~
プログラム内にも説明があります。
**ライントレース部分 [#h3fc410b]
基本はラインの左端をたどっていくことです。~
白と黒との色の違いは数字で表すとはっきり分かれるのではな...
したがって光センサーで白と黒を読み取った値を大きく二つに...
そこから数字を少し足し引きし白黒を5つに分け、ロボットの...
**交差点部分 [#j422dbdb]
交差点やT字路ではライントレースプログラムだけではロボット...
このプログラムは右に小さく曲がった回数を記録してその数を...
『1回目は真っ直ぐ進みボールをキャッチ、2回目は右へ、3...
~
~
#define iro 45 //白黒判別用の閾値
#define turn_R_s OnRev(OUT_C);OnFwd(OUT_A);//右に小さく...
#define turn_L_s OnRev(OUT_A);OnFwd(OUT_C);//左に小さく...
#define turn_R_b Off(OUT_C);OnFwd(OUT_A);//右に大きく進む
#define turn_L_b Off(OUT_A);OnFwd(OUT_C);//左に大きく進む
#define go_S OnFwd(OUT_AC);//まっすぐ進む
#define TIME 1 //進むときのプログラム間の時間
#define MAX 10 //交差点判別;
#define back_time FastTimer(0)//進み過ぎの時間を計る
#define cross_line_time 20 //交差点を渡る時間
#define back_cross_line OnRev(OUT_C);OnFwd(OUT_A);Wait(F...
#define cross_line OnFwd(OUT_AC);Wait(cross_line_time);/...
#define breakT Off(OUT_AC);Wait(200);//休む
#define catc OnFwd(OUT_B);Wait(13);Off(OUT_B);//ボールを...
#define shot OnRev(OUT_B);Wait(60);//ボールを放す
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int irocount=0; //交差点判別用カウンター
int crosscount=0; //何回普通と違うことをしたか
int endcount=0;//終了するためのカウンター
ClearTimer(0);
while(endcount==0){
while(irocount<MAX){
if(SENSOR_2<iro-6){ //もし濃い黒ならば小さく左へ
turn_L_s;
irocount++;//小さく曲がった数を数える
}
else if(SENSOR_2<iro-2){ //薄い黒ならば大き...
turn_L_b;
irocount=0; //大きく曲がったら数えた数を0にする。
}
else if(SENSOR_2<iro+1){ //もし灰色ならまっ...
ClearTimer(0);
go_S;
}
else if(SENSOR_2<iro+5){ //更に白くなったら...
turn_R_b;
}
else{ //そうでなければ小さく右へ
turn_R_s;
}
Wait(TIME);
}
//ここからライントレースではないところのプログラム
crosscount++;
if(crosscount==1){ //1回目の交差点ではまっす...
PlaySound(SOUND_LOW_BEEP);
breakT;
back_cross_line;
cross_line;
catc;
}
if(crosscount==2){ //2回目の交差点では右に曲...
PlaySound(SOUND_LOW_BEEP);
breakT;
back_cross_line;
turn_R_b;
Wait(30);
turn_R_s;
Wait(20);
}
if(crosscount==3){ //3回目の交差点ではシュー...
PlaySound(SOUND_LOW_BEEP);
breakT;
back_cross_line;
shot;
OnFwd(OUT_AC);
Off(OUT_AC);
endcount==1;//プログラムを終了させる
}
irocount=0; //プログラムが実行し終わったらirocount...
}
}
*反省点と改善点[#w511b1c1]
アームをもう少し工夫してより掴みやすくシュートしやすい構...
プログラムはこの自分のコースのみしか走れないのでもっと普...
ボールの位置が決まっていたためプログラムで指定できたが、...
終了行:
**目次 [#p4c77eaa]
#contents
*課題 [#y6dc8d24]
決められたラインを通りゴールまで行く。~
途中でボールをキャッチしゴールでシュートする。~
決められたラインの図は[[課題2:http://yakushi.shinshu-u.a...
私はCからAへ行く課題です。
*ロボット [#i73b3712]
#ref(1.jpg)
**本体 [#fa6f6cc5]
本体はマインドストームの冊子12p〜17pのドライブベー...
#ref(3.jpg)
ここが最大の工夫点です。
光センサーをドライブベースのほぼ中心に配置することができ...
このことによりモーターの軸と光センサーがほぼ一直線になる...
またドライブベースの前方が綺麗になったためアームの拡張性...
**アーム [#hce0ca54]
簡単につけ外しができます。
#ref(2.jpg)
アームはモーターによって動く部分と固定してある部分に分か...
モーターで動く部分は上から見て左が短く、右が長くなってい...
ギア比の違いによってシュートするときに左のアームが1回転...
*プログラム [#o1d1885d]
プログラムの作成にあたっては「[[マインドストームを使って...
~
プログラムは大きく分けて2つになります。~
・ライントレースによって前に進む部分~
・交差点を渡ったり曲がったりするものとボールを掴んだり放...
です。~
~
プログラム内にも説明があります。
**ライントレース部分 [#h3fc410b]
基本はラインの左端をたどっていくことです。~
白と黒との色の違いは数字で表すとはっきり分かれるのではな...
したがって光センサーで白と黒を読み取った値を大きく二つに...
そこから数字を少し足し引きし白黒を5つに分け、ロボットの...
**交差点部分 [#j422dbdb]
交差点やT字路ではライントレースプログラムだけではロボット...
このプログラムは右に小さく曲がった回数を記録してその数を...
『1回目は真っ直ぐ進みボールをキャッチ、2回目は右へ、3...
~
~
#define iro 45 //白黒判別用の閾値
#define turn_R_s OnRev(OUT_C);OnFwd(OUT_A);//右に小さく...
#define turn_L_s OnRev(OUT_A);OnFwd(OUT_C);//左に小さく...
#define turn_R_b Off(OUT_C);OnFwd(OUT_A);//右に大きく進む
#define turn_L_b Off(OUT_A);OnFwd(OUT_C);//左に大きく進む
#define go_S OnFwd(OUT_AC);//まっすぐ進む
#define TIME 1 //進むときのプログラム間の時間
#define MAX 10 //交差点判別;
#define back_time FastTimer(0)//進み過ぎの時間を計る
#define cross_line_time 20 //交差点を渡る時間
#define back_cross_line OnRev(OUT_C);OnFwd(OUT_A);Wait(F...
#define cross_line OnFwd(OUT_AC);Wait(cross_line_time);/...
#define breakT Off(OUT_AC);Wait(200);//休む
#define catc OnFwd(OUT_B);Wait(13);Off(OUT_B);//ボールを...
#define shot OnRev(OUT_B);Wait(60);//ボールを放す
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int irocount=0; //交差点判別用カウンター
int crosscount=0; //何回普通と違うことをしたか
int endcount=0;//終了するためのカウンター
ClearTimer(0);
while(endcount==0){
while(irocount<MAX){
if(SENSOR_2<iro-6){ //もし濃い黒ならば小さく左へ
turn_L_s;
irocount++;//小さく曲がった数を数える
}
else if(SENSOR_2<iro-2){ //薄い黒ならば大き...
turn_L_b;
irocount=0; //大きく曲がったら数えた数を0にする。
}
else if(SENSOR_2<iro+1){ //もし灰色ならまっ...
ClearTimer(0);
go_S;
}
else if(SENSOR_2<iro+5){ //更に白くなったら...
turn_R_b;
}
else{ //そうでなければ小さく右へ
turn_R_s;
}
Wait(TIME);
}
//ここからライントレースではないところのプログラム
crosscount++;
if(crosscount==1){ //1回目の交差点ではまっす...
PlaySound(SOUND_LOW_BEEP);
breakT;
back_cross_line;
cross_line;
catc;
}
if(crosscount==2){ //2回目の交差点では右に曲...
PlaySound(SOUND_LOW_BEEP);
breakT;
back_cross_line;
turn_R_b;
Wait(30);
turn_R_s;
Wait(20);
}
if(crosscount==3){ //3回目の交差点ではシュー...
PlaySound(SOUND_LOW_BEEP);
breakT;
back_cross_line;
shot;
OnFwd(OUT_AC);
Off(OUT_AC);
endcount==1;//プログラムを終了させる
}
irocount=0; //プログラムが実行し終わったらirocount...
}
}
*反省点と改善点[#w511b1c1]
アームをもう少し工夫してより掴みやすくシュートしやすい構...
プログラムはこの自分のコースのみしか走れないのでもっと普...
ボールの位置が決まっていたためプログラムで指定できたが、...
ページ名: