2013b/Member/jogio/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013b/Member]]
* ロボットについて [#wd7c5b84]
#ref(2013b/Member/jogio/Mission1/image-22.jpeg,100%,コース)
今回作ったロボットは、写真のような自作のコースの黒線に沿...
#ref(2013b/Member/jogio/Mission1/image-10.jpeg,100%,全体像)
こちらがロボットの全体像です。
#ref(2013b/Member/jogio/Mission1/image-11.jpeg,100%,ドラ...
こちらはドライブベースになります。
車輪は2つにしました。
前に少し出ている部分に光センサーを取り付けます。
#ref(2013b/Member/jogio/Mission1/image-12.jpeg,100%,ドラ...
* プログラム [#k8a26194]
#define THRESHOLD 42
#define MOVE_TIME1 1385 //1番目の交差点に到着す...
#define MOVE_TIME2 905 //2番目の交差点に到着す...
#define MOVE_TIME3 190 //3番目の交差点に到着す...
#define MOVE_TIME4 973 //4番目の交差点に到着す...
#define HIPOWER 7
#define LOWPOWER 2
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define go_forward set_power_H;OnFwd(OUT_AC);
#define turn_left1 set_power_L;OnFwd(OUT_C);OnRev(OUT_A)...
#define turn_left0 set_power_L;OnFwd(OUT_C);Off(OUT_A); ...
#define turn_right0 set_power_L;OnFwd(OUT_A);Off(OUT_C);...
#define turn_right1 set_power_L;OnFwd(OUT_A);OnRev(OUT_C...
#define STEP 1 //1回の判断で動作させる時間
#define nMAX 250 //通常のカーブとして許容できる...
#define short_break Off(OUT_AC);Wait(100); //小...
#define CROSS_TIME 45 //交差点通過にかかる時間
/*交差点を渡る*/
#define cross_line set_power_L;OnFwd(OUT_AC);Wait(CROSS_...
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int nOnline=0; //続けて黒になった回数
ClearTimer(0); //0番目のタイマーをリセット
/*1番目の交差点に到着するまで、通常のライントレース...
while(FastTimer(0)<=MOVE_TIME1){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
short_break; //小休止
turn_right1;Wait(30); //進行方向修正
cross_line; //交差点を渡る
nOnline=0; //カウンタをリセット
ClearTimer(0); //0番目のタイマーをリセット
/*2番目の交差点に到着するまで、通常のライントレース...
while(FastTimer(0)<=MOVE_TIME2){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
short_break;
turn_right1;Wait(30);
cross_line;
nOnline=0;
ClearTimer(0); //0番目のタイマーをリセット
/*3番目の交差点に到着するまで、通常のライントレース...
while(FastTimer(0)<=MOVE_TIME3){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
short_break;
turn_right1;Wait(30);
cross_line;
nOnline=0;
ClearTimer(0); //0番目のタイマーをリセット
/*4番目の交差点に到着するまで、通常のライントレース...
while(FastTimer(0)<=MOVE_TIME4){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
short_break;
turn_right1;Wait(30);
cross_line;
nOnline=0;
/*ゴールまで、通常のライントレースをする*/
while(true){
while(nOnline<nMAX){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
}
}
* 工夫した点 [#r174c7ea]
-課題のコースには急なヘアピンカーブがあるので、ロボットは...
-光センサーはなるべく本体の近くに付けたかったので、ドライ...
-プログラムについては、交差点に到着する時間を計り、交差点...
* 反省点 [#d5c6e989]
コースを一周させるのに苦労し、空き缶を動かすプログラムを...
終了行:
[[2013b/Member]]
* ロボットについて [#wd7c5b84]
#ref(2013b/Member/jogio/Mission1/image-22.jpeg,100%,コース)
今回作ったロボットは、写真のような自作のコースの黒線に沿...
#ref(2013b/Member/jogio/Mission1/image-10.jpeg,100%,全体像)
こちらがロボットの全体像です。
#ref(2013b/Member/jogio/Mission1/image-11.jpeg,100%,ドラ...
こちらはドライブベースになります。
車輪は2つにしました。
前に少し出ている部分に光センサーを取り付けます。
#ref(2013b/Member/jogio/Mission1/image-12.jpeg,100%,ドラ...
* プログラム [#k8a26194]
#define THRESHOLD 42
#define MOVE_TIME1 1385 //1番目の交差点に到着す...
#define MOVE_TIME2 905 //2番目の交差点に到着す...
#define MOVE_TIME3 190 //3番目の交差点に到着す...
#define MOVE_TIME4 973 //4番目の交差点に到着す...
#define HIPOWER 7
#define LOWPOWER 2
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define go_forward set_power_H;OnFwd(OUT_AC);
#define turn_left1 set_power_L;OnFwd(OUT_C);OnRev(OUT_A)...
#define turn_left0 set_power_L;OnFwd(OUT_C);Off(OUT_A); ...
#define turn_right0 set_power_L;OnFwd(OUT_A);Off(OUT_C);...
#define turn_right1 set_power_L;OnFwd(OUT_A);OnRev(OUT_C...
#define STEP 1 //1回の判断で動作させる時間
#define nMAX 250 //通常のカーブとして許容できる...
#define short_break Off(OUT_AC);Wait(100); //小...
#define CROSS_TIME 45 //交差点通過にかかる時間
/*交差点を渡る*/
#define cross_line set_power_L;OnFwd(OUT_AC);Wait(CROSS_...
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int nOnline=0; //続けて黒になった回数
ClearTimer(0); //0番目のタイマーをリセット
/*1番目の交差点に到着するまで、通常のライントレース...
while(FastTimer(0)<=MOVE_TIME1){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
short_break; //小休止
turn_right1;Wait(30); //進行方向修正
cross_line; //交差点を渡る
nOnline=0; //カウンタをリセット
ClearTimer(0); //0番目のタイマーをリセット
/*2番目の交差点に到着するまで、通常のライントレース...
while(FastTimer(0)<=MOVE_TIME2){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
short_break;
turn_right1;Wait(30);
cross_line;
nOnline=0;
ClearTimer(0); //0番目のタイマーをリセット
/*3番目の交差点に到着するまで、通常のライントレース...
while(FastTimer(0)<=MOVE_TIME3){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
short_break;
turn_right1;Wait(30);
cross_line;
nOnline=0;
ClearTimer(0); //0番目のタイマーをリセット
/*4番目の交差点に到着するまで、通常のライントレース...
while(FastTimer(0)<=MOVE_TIME4){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
short_break;
turn_right1;Wait(30);
cross_line;
nOnline=0;
/*ゴールまで、通常のライントレースをする*/
while(true){
while(nOnline<nMAX){
if(SENSOR_2<THRESHOLD-5){
turn_left1;
}else if(SENSOR_2<THRESHOLD-3){
turn_left0;
}else if(SENSOR_2<THRESHOLD+3){
go_forward;
}else if(SENSOR_2<THRESHOLD+8){
turn_right0;
}else{
turn_right1;
}
Wait(STEP);
}
}
}
* 工夫した点 [#r174c7ea]
-課題のコースには急なヘアピンカーブがあるので、ロボットは...
-光センサーはなるべく本体の近くに付けたかったので、ドライ...
-プログラムについては、交差点に到着する時間を計り、交差点...
* 反省点 [#d5c6e989]
コースを一周させるのに苦労し、空き缶を動かすプログラムを...
ページ名: