2015b/Member/velocity/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015b/Member]]
#contents
*課題 [#x08873a6]
&size(20){ライントレース};
**ミッション [#a8ef6f75]
次のいずれかの経路を黒い線にそって動くロボットを作成する...
コース
-A地点 → P直進 → Q直進 → Q右折 → P右折 → Q左折 → P左折 → ...
#ref(2015b/Member/velocity/Mission2/2015b-mission2.png,50...
*ロボット [#m8c9c207]
今回使用したロボットはライトセンサーを用いた次のようなロ...
#ref(2015b/Member/velocity/Mission2/IMG_20160107_162620.j...
**仕組み [#x7aa538a]
***ライトセンサー [#v4cdfbd9]
できるだけ周りの影響を受けないように高さ約1mmの箇所に設置...
#ref(2015b/Member/velocity/Mission2/IMG_20160107_162637.j...
***進み方 [#wee820ac]
ライトセンサーを使いコースの線の境を沿って進んでいく。セ...
-a&size(18){左旋回};<40<b&size(18){左};<45<c&size(18)...
#ref(2015b/Member/velocity/Mission2/sikiiti.png,50%,閾値)
***交差点 [#rc85affb]
ある一定時間旋回を続けると、そこを交差点と認識するように...
交差点に侵入した場合、指示通り一時停止した後、右折左折直...
今回は便宜上90度カーブも交差点とみなすこととする。
*プログラム [#b5e81784]
**定義 [#j84a738e]
#define right_turn OnFwd(OUT_A,20);OnRev(OUT_B,20); /...
#define right OnFwd(OUT_A,90); /...
#define go OnFwd(OUT_AB,80); /...
#define left OnFwd(OUT_B,90); /...
#define left_turn OnFwd(OUT_B,20);OnRev(OUT_A,20); /...
#define tMAX 250 /...
int n = 1; /...
それぞれ基本となる動作を定義した。
**サブルーチン [#v2d2493e]
***交差点 [#k382b9e7]
はじめに定義したnを使い交差点の数を数えていく。
sub kousaten()
{
PlaySound(SOUND_UP); //交差点に入っ...
Off(OUT_AB);
Wait(1000); //一時停止
if(n <= 2){ //交差点1個目...
right_turn; //一旦戻って、前進せよ
Wait(600);
Off(OUT_AB);
go;
Wait(300);
Off(OUT_AB);}
else if(n = 3){ //交差点3個目...
right_turn; //右向きに約180度回転し...
Wait(1100);
Off(OUT_AB);
go;
Wait(150);
Off(OUT_AB);}
else if(n = 7){ //交差点7個目な...
left_turn; //左向きに約180度回転し...
Wait(1100);
Off(OUT_AB);
go;
Wait(150);
Off(OUT_AB);}
else{} //その他の交差点...
n++; //交差点の数を数...
}
交差点と認識するとまず指示通り1秒間一時停止し、交差点に入...
その後、何個目の交差点かによって直進右折左折をし、最後に...
交差点番号は次の通り
#ref(2015b/Member/velocity/Mission2/2015b-mission23.png,5...
**タスクメイン [#i8219603]
task main()
{
long t0 = CurrentTick(); ...
long ta = CurrentTick(); ...
SetSensorLight(S1);
while(true){
long tz = CurrentTick();
long taz = tz - ta; ...
if(((taz < 25000) || (75000 < taz < 900000))||(11500 < ...
if(SENSOR_1 <= 40){ ...
left_turn;
t0 = CurrentTick();}
else if(SENSOR_1 <= 45){
left;
t0 = CurrentTick();}
else if(SENSOR_1 <= 52){
go;
t0 = CurrentTick();}
else if(SENSOR_1 <= 58){
right;
t0 = CurrentTick();}
else{right_turn;
t0 = CurrentTick();}
Wait(1);
}else if(CurrentTick()-t0 < tMAX){ ...
if(SENSOR_1 <= 40){ ...
left_turn;}
else if(SENSOR_1 <= 45){
left;
t0 = CurrentTick();}
else if(SENSOR_1 <= 52){
go;
t0 = CurrentTick();}
else if(SENSOR_1 <= 58){
right;
t0 = CurrentTick();}
else{right_turn;}
Wait(1);
}else {kousaten();}} ...
}
旋回した時間を資料とし、交差点を認識している。なので旋回...
*最後に [#wea7611c]
**工夫点 [#recd1661]
-交差点の認識
何度やっても交差点でないのに交差点と認識してしまうポイン...
以下の図の赤い部分が交差点警戒範囲として設定した部分であ...
#ref(2015b/Member/velocity/Mission2/2015b-mission22.png,5...
-交差点での行動の選択
交差点と一口に言っても、その後の行動パターンは直進、左折...
**壁 [#ife92742]
工夫点でも述べたが、交差点の誤認識に悩まされた。初めは閾...
**改善点・欠点 [#sc40c962]
今回は交差点の動作のみをサブルーチンで表した。しかし当初...
閾値を決めて、それを元に動作を決めていたが、今回作成した...
**感想 [#c152c5b1]
課題2では課題1に比べプログラムが複雑で、悩む部分も多か...
終了行:
[[2015b/Member]]
#contents
*課題 [#x08873a6]
&size(20){ライントレース};
**ミッション [#a8ef6f75]
次のいずれかの経路を黒い線にそって動くロボットを作成する...
コース
-A地点 → P直進 → Q直進 → Q右折 → P右折 → Q左折 → P左折 → ...
#ref(2015b/Member/velocity/Mission2/2015b-mission2.png,50...
*ロボット [#m8c9c207]
今回使用したロボットはライトセンサーを用いた次のようなロ...
#ref(2015b/Member/velocity/Mission2/IMG_20160107_162620.j...
**仕組み [#x7aa538a]
***ライトセンサー [#v4cdfbd9]
できるだけ周りの影響を受けないように高さ約1mmの箇所に設置...
#ref(2015b/Member/velocity/Mission2/IMG_20160107_162637.j...
***進み方 [#wee820ac]
ライトセンサーを使いコースの線の境を沿って進んでいく。セ...
-a&size(18){左旋回};<40<b&size(18){左};<45<c&size(18)...
#ref(2015b/Member/velocity/Mission2/sikiiti.png,50%,閾値)
***交差点 [#rc85affb]
ある一定時間旋回を続けると、そこを交差点と認識するように...
交差点に侵入した場合、指示通り一時停止した後、右折左折直...
今回は便宜上90度カーブも交差点とみなすこととする。
*プログラム [#b5e81784]
**定義 [#j84a738e]
#define right_turn OnFwd(OUT_A,20);OnRev(OUT_B,20); /...
#define right OnFwd(OUT_A,90); /...
#define go OnFwd(OUT_AB,80); /...
#define left OnFwd(OUT_B,90); /...
#define left_turn OnFwd(OUT_B,20);OnRev(OUT_A,20); /...
#define tMAX 250 /...
int n = 1; /...
それぞれ基本となる動作を定義した。
**サブルーチン [#v2d2493e]
***交差点 [#k382b9e7]
はじめに定義したnを使い交差点の数を数えていく。
sub kousaten()
{
PlaySound(SOUND_UP); //交差点に入っ...
Off(OUT_AB);
Wait(1000); //一時停止
if(n <= 2){ //交差点1個目...
right_turn; //一旦戻って、前進せよ
Wait(600);
Off(OUT_AB);
go;
Wait(300);
Off(OUT_AB);}
else if(n = 3){ //交差点3個目...
right_turn; //右向きに約180度回転し...
Wait(1100);
Off(OUT_AB);
go;
Wait(150);
Off(OUT_AB);}
else if(n = 7){ //交差点7個目な...
left_turn; //左向きに約180度回転し...
Wait(1100);
Off(OUT_AB);
go;
Wait(150);
Off(OUT_AB);}
else{} //その他の交差点...
n++; //交差点の数を数...
}
交差点と認識するとまず指示通り1秒間一時停止し、交差点に入...
その後、何個目の交差点かによって直進右折左折をし、最後に...
交差点番号は次の通り
#ref(2015b/Member/velocity/Mission2/2015b-mission23.png,5...
**タスクメイン [#i8219603]
task main()
{
long t0 = CurrentTick(); ...
long ta = CurrentTick(); ...
SetSensorLight(S1);
while(true){
long tz = CurrentTick();
long taz = tz - ta; ...
if(((taz < 25000) || (75000 < taz < 900000))||(11500 < ...
if(SENSOR_1 <= 40){ ...
left_turn;
t0 = CurrentTick();}
else if(SENSOR_1 <= 45){
left;
t0 = CurrentTick();}
else if(SENSOR_1 <= 52){
go;
t0 = CurrentTick();}
else if(SENSOR_1 <= 58){
right;
t0 = CurrentTick();}
else{right_turn;
t0 = CurrentTick();}
Wait(1);
}else if(CurrentTick()-t0 < tMAX){ ...
if(SENSOR_1 <= 40){ ...
left_turn;}
else if(SENSOR_1 <= 45){
left;
t0 = CurrentTick();}
else if(SENSOR_1 <= 52){
go;
t0 = CurrentTick();}
else if(SENSOR_1 <= 58){
right;
t0 = CurrentTick();}
else{right_turn;}
Wait(1);
}else {kousaten();}} ...
}
旋回した時間を資料とし、交差点を認識している。なので旋回...
*最後に [#wea7611c]
**工夫点 [#recd1661]
-交差点の認識
何度やっても交差点でないのに交差点と認識してしまうポイン...
以下の図の赤い部分が交差点警戒範囲として設定した部分であ...
#ref(2015b/Member/velocity/Mission2/2015b-mission22.png,5...
-交差点での行動の選択
交差点と一口に言っても、その後の行動パターンは直進、左折...
**壁 [#ife92742]
工夫点でも述べたが、交差点の誤認識に悩まされた。初めは閾...
**改善点・欠点 [#sc40c962]
今回は交差点の動作のみをサブルーチンで表した。しかし当初...
閾値を決めて、それを元に動作を決めていたが、今回作成した...
**感想 [#c152c5b1]
課題2では課題1に比べプログラムが複雑で、悩む部分も多か...
ページ名: