2014b/Member/maji/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*課題 [#b7a8adc9]
[[mission2:http://yakushi.shinshu-u.ac.jp/robotics/?2014b...
*ロボット組み立て [#mfcf9c67]
ロボットはnxt組み立て解説書に掲載されているモデルを真似...
**全体 [#tea90503]
#ref(all.jpg)
**真横 [#ocf89543]
#ref(yoko.jpg)
*課題攻略に向けて [#f1f4a875]
ロボットは黒色を探知したら左へ、白色を探知したら右へ曲が...
**交差点直進[#c5e48063]
#ref(11.jpg)
**交差点左折→交差点直進 [#v194c7de]
#ref(12.jpg)
#ref(13.jpg)
**交差点右折→交差点右折 [#mef3f306]
#ref(14.jpg)
#ref(15.jpg)
*プログラム [#v575e7e7]
**定義 [#e1cfad46]
#define THRESHOLD 49
#define SPEED_H 35
#define SPEED_L 25
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H,SPEED_H);
#define turn_left1 OnRL(SPEED_L,-SPEED_L);//左旋回
#define turn_left0 OnRL(SPEED_L,0);//左折
#define turn_right0 OnRL(0,SPEED_L);//右折
#define turn_right1 OnRL(-SPEED_L,SPEED_L);//右旋回
#define STEP 1//1回の動作で判断させる時間
#define nMAX 300//交差点を直進するプログラム時のカーブと...
#define nMAX2 450//交差点を左折するプログラム時のカーブ...
#define short_break Off(OUT_BC);Wait(1000);//小休止
#define CROSS_TIME 250//交差点通過にかかる時間
#define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
**カウンタと光センサの設定 [#qaf75295]
task main()
{
SetSensorLight(S3);
int nOnline=0;//黒になった回数
int cross_number=0;//交差点に差し掛かった回数
**1回目と3回目の交差点を直進するためのプログラム [#rd9a...
while(cross_number==0 || cross_number==2){//1回目と3回...
while(nOnline<nMAX)
{
if(SENSOR_3<THRESHOLD-15)
{
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7)
{
turn_left0;
}
else if(SENSOR_3<THRESHOLD+7)
{
go_forward;
}else if(SENSOR_3<THRESHOLD+15)
{
turn_right0;
}else{
turn_right1;
}
nOnline=0;//カウンタをリセット
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);Wait(1000);//交差点のたびに鳴らす
short_break;
turn_right1;Wait(nMAX*STEP);//進行方向を右に修正し直進コ...
cross_line;
nOnline=0;
cross_number++;//交差点の判断をする毎にカウンタを増やす。
}
**2回目の交差点を左折するためのプログラム [#tb0865e2]
while(cross_number==1){//2回目の交差点で左折
while(nOnline<nMAX2)
{
if(SENSOR_3<THRESHOLD-15)
{
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7)
{
turn_left0;
}
else if(SENSOR_3<THRESHOLD+7)
{
go_forward;
}else if(SENSOR_3<THRESHOLD+15)
{
turn_right0;
}else{
turn_right1;
}
nOnline=0;//カウンタをリセット
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);Wait(1000);//交差点のたびに鳴らす
short_break;
turn_right1;Wait(nMAX*STEP);//進行方向修正
cross_line;
nOnline=0;
cross_number++;
}
**4回目以降の交差点を右折するためのプログラム [#rea7e84f]
while(cross_number>=3){//4回目以降の交差点で右折
while(nOnline<nMAX)
{
if(SENSOR_3<THRESHOLD-15)
{
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7)
{
turn_left0;
}
else if(SENSOR_3<THRESHOLD+7)
{
go_forward;
}else if(SENSOR_3<THRESHOLD+15)
{
turn_right0;
}else{
turn_right1;
}
nOnline=0;//カウンタをリセット
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);Wait(1000);//交差点のたびに鳴らす
short_break;
turn_right1;Wait(nMAX*STEP);//進行方向を右に修正し直進コ...
cross_line;
Wait(1000);
turn_right1;Wait(600);//進行方向をさらに右に修正し右折コ...
nOnline=0;
cross_number++;
}
}
*感想・反省 [#g2db524b]
プログラムを分かりやすくするために大きく3つに分けたので...
終了行:
*課題 [#b7a8adc9]
[[mission2:http://yakushi.shinshu-u.ac.jp/robotics/?2014b...
*ロボット組み立て [#mfcf9c67]
ロボットはnxt組み立て解説書に掲載されているモデルを真似...
**全体 [#tea90503]
#ref(all.jpg)
**真横 [#ocf89543]
#ref(yoko.jpg)
*課題攻略に向けて [#f1f4a875]
ロボットは黒色を探知したら左へ、白色を探知したら右へ曲が...
**交差点直進[#c5e48063]
#ref(11.jpg)
**交差点左折→交差点直進 [#v194c7de]
#ref(12.jpg)
#ref(13.jpg)
**交差点右折→交差点右折 [#mef3f306]
#ref(14.jpg)
#ref(15.jpg)
*プログラム [#v575e7e7]
**定義 [#e1cfad46]
#define THRESHOLD 49
#define SPEED_H 35
#define SPEED_L 25
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H,SPEED_H);
#define turn_left1 OnRL(SPEED_L,-SPEED_L);//左旋回
#define turn_left0 OnRL(SPEED_L,0);//左折
#define turn_right0 OnRL(0,SPEED_L);//右折
#define turn_right1 OnRL(-SPEED_L,SPEED_L);//右旋回
#define STEP 1//1回の動作で判断させる時間
#define nMAX 300//交差点を直進するプログラム時のカーブと...
#define nMAX2 450//交差点を左折するプログラム時のカーブ...
#define short_break Off(OUT_BC);Wait(1000);//小休止
#define CROSS_TIME 250//交差点通過にかかる時間
#define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
**カウンタと光センサの設定 [#qaf75295]
task main()
{
SetSensorLight(S3);
int nOnline=0;//黒になった回数
int cross_number=0;//交差点に差し掛かった回数
**1回目と3回目の交差点を直進するためのプログラム [#rd9a...
while(cross_number==0 || cross_number==2){//1回目と3回...
while(nOnline<nMAX)
{
if(SENSOR_3<THRESHOLD-15)
{
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7)
{
turn_left0;
}
else if(SENSOR_3<THRESHOLD+7)
{
go_forward;
}else if(SENSOR_3<THRESHOLD+15)
{
turn_right0;
}else{
turn_right1;
}
nOnline=0;//カウンタをリセット
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);Wait(1000);//交差点のたびに鳴らす
short_break;
turn_right1;Wait(nMAX*STEP);//進行方向を右に修正し直進コ...
cross_line;
nOnline=0;
cross_number++;//交差点の判断をする毎にカウンタを増やす。
}
**2回目の交差点を左折するためのプログラム [#tb0865e2]
while(cross_number==1){//2回目の交差点で左折
while(nOnline<nMAX2)
{
if(SENSOR_3<THRESHOLD-15)
{
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7)
{
turn_left0;
}
else if(SENSOR_3<THRESHOLD+7)
{
go_forward;
}else if(SENSOR_3<THRESHOLD+15)
{
turn_right0;
}else{
turn_right1;
}
nOnline=0;//カウンタをリセット
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);Wait(1000);//交差点のたびに鳴らす
short_break;
turn_right1;Wait(nMAX*STEP);//進行方向修正
cross_line;
nOnline=0;
cross_number++;
}
**4回目以降の交差点を右折するためのプログラム [#rea7e84f]
while(cross_number>=3){//4回目以降の交差点で右折
while(nOnline<nMAX)
{
if(SENSOR_3<THRESHOLD-15)
{
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7)
{
turn_left0;
}
else if(SENSOR_3<THRESHOLD+7)
{
go_forward;
}else if(SENSOR_3<THRESHOLD+15)
{
turn_right0;
}else{
turn_right1;
}
nOnline=0;//カウンタをリセット
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);Wait(1000);//交差点のたびに鳴らす
short_break;
turn_right1;Wait(nMAX*STEP);//進行方向を右に修正し直進コ...
cross_line;
Wait(1000);
turn_right1;Wait(600);//進行方向をさらに右に修正し右折コ...
nOnline=0;
cross_number++;
}
}
*感想・反省 [#g2db524b]
プログラムを分かりやすくするために大きく3つに分けたので...
ページ名: