2015b/Member/kobajun/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015b/MemberOnly]]
#contents
*今回の課題について [#ad57af90]
今回の課題は紙に引いた黒い線をトレースさせてロボットを進...
#ref(2015b/Member/kobajun/Mission2/2015b-mission2.png,100%)
B地点をスタートしてA地点へゴールさせるプログラムを組むの...
B地点 → P右折 → Q右折 → P左折 → Q左折 → Q直進 → P直進 → A...
とそれぞれの交差点で指示された方向へ進行させるプログラム...
*ロボットについて [#y80598c1]
&ref(2015b/Member/kobajun/Mission2/zentai.png,50%);
&ref(2015b/Member/kobajun/Mission2/zentai_yoko.png,50%);
ロボットは上の写真の用に組み立てた。運動をさせる前輪はモ...
#ref(2015b/Member/kobajun/Mission2/sensor.png,50%)
センサーは、前輪からあまり距離が発生しないように組んだ。
こうすることにより微調整するときにあまり大きくセンサーが...
*プログラムを立てる上で使った定義 [#y0fbed11]
**基本的な動作 [#idd5d259]
#define SPEED 30 ...
#define go_forward OnFwd(OUT_BC,SPEED); ...
#define turn_left OnFwd(OUT_B,SPEED);Off(OUT_C); ...
#define turn_right OnFwd(OUT_C,SPEED);Off(OUT_B); ...
#define turn_here_L OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED...
#define turn_here_R OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED...
進む上では前進、左折、右折の3つで事足りるのだが、
より綺麗にトレースさせるために微調整するために左旋回、右...
#define STEP 50
#define TMAX 150
STEPはライントレースをさせる回数、TMAXは左旋回をする最大...
元々TMAXはもう少し長かったのだが、交差点を間違えて左折す...
**閾値 [#nab00c93]
#define THRESHOLD 40
線の中央、線の境目、白い部分を測定したところ、それぞれ28...
そのため、確実に線の境目と認識できる40を基準にして、閾値...
**サブルーチン [#zf625e52]
sub turnL()
{
turn_here_L;
until(SENSOR_3>THRESHOLD+8);
turn_left;
Wait(500);
}
途中直角に曲がる箇所と急カーブがあるのだが、そこを交差点...
誤認する箇所はいずれも左折であり、交差点でも左折する箇所...
*プログラム [#q2aa951b]
以下のプログラムはtask mainの中にすべて入っているのだが、...
task main()
{
SetSensorLight(S3); //センサーをつけた位置
long t_left = CurrentTick(); //左旋回にかかる時間を...
int n=0; //交差点を通過する回数...
while(true){
while(CurrentTick()-t_left<TMAX){
if(SENSOR_3<THRESHOLD-10){
turn_here_L;
}else if(SENSOR_3<THRESHOLD-5){
turn_left;
t_left = CurrentTick();
}else if(SENSOR_3<THRESHOLD){
go_forward;
t_left = CurrentTick();
}else if(SENSOR_3<THRESHOLD+8){
turn_right;
t_left = CurrentTick();
}else{
turn_here_R;
t_left = CurrentTick();
}
}
測定した時間がTMAX(=150)を超えない時のプログラム。
閾値の項目で線の中央が28前後、白い部分が55前後という値に...
線の中央と確実に認識させるために線の中央を30として、線の...
先ほど定義した閾値をこの値になるように調整した。
左旋回以外は測定時間がリセットされるようにプログラムを立...
if(n<2){
Off(OUT_BC);
Wait(1000);
turn_right; //交差点を右折
until(SENSOR_3>THRESHOLD+10);
n++;
t_left = CurrentTick();
}else if(n<5){
turnL(); //直角及び急カーブを左折
n++;
t_left = CurrentTick();
}else if(n<7){
Off(OUT_BC);
Wait(1000);
turnL(); //交差点を左折
n++;
t_left = CurrentTick();
}else{
Off(OUT_BC);
Wait(1000);
turn_right; //交差点を直進
Wait(580);
t_left = CurrentTick();
}
}
交差点に到達した時のプログラム。
交差点を右折する長さを閾値で指定してあるが、間違って白い...
直角や急カーブの内側をトレースされる関係上どうしてもこれ...
交差点と誤認する3,4,5回目は、交差点を左折するプログラムと...
Wait(STEP);
}
*感想、考察 [#l85fdf6c]
今回の課題は、色の濃さの測定だけでなくタイマーやカウンタ...
また、条件文を多用したため中括弧を入力し損ねてプログラム...
しかし、そこをクリアできると思いの外実行させたい動きをし...
終了行:
[[2015b/MemberOnly]]
#contents
*今回の課題について [#ad57af90]
今回の課題は紙に引いた黒い線をトレースさせてロボットを進...
#ref(2015b/Member/kobajun/Mission2/2015b-mission2.png,100%)
B地点をスタートしてA地点へゴールさせるプログラムを組むの...
B地点 → P右折 → Q右折 → P左折 → Q左折 → Q直進 → P直進 → A...
とそれぞれの交差点で指示された方向へ進行させるプログラム...
*ロボットについて [#y80598c1]
&ref(2015b/Member/kobajun/Mission2/zentai.png,50%);
&ref(2015b/Member/kobajun/Mission2/zentai_yoko.png,50%);
ロボットは上の写真の用に組み立てた。運動をさせる前輪はモ...
#ref(2015b/Member/kobajun/Mission2/sensor.png,50%)
センサーは、前輪からあまり距離が発生しないように組んだ。
こうすることにより微調整するときにあまり大きくセンサーが...
*プログラムを立てる上で使った定義 [#y0fbed11]
**基本的な動作 [#idd5d259]
#define SPEED 30 ...
#define go_forward OnFwd(OUT_BC,SPEED); ...
#define turn_left OnFwd(OUT_B,SPEED);Off(OUT_C); ...
#define turn_right OnFwd(OUT_C,SPEED);Off(OUT_B); ...
#define turn_here_L OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED...
#define turn_here_R OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED...
進む上では前進、左折、右折の3つで事足りるのだが、
より綺麗にトレースさせるために微調整するために左旋回、右...
#define STEP 50
#define TMAX 150
STEPはライントレースをさせる回数、TMAXは左旋回をする最大...
元々TMAXはもう少し長かったのだが、交差点を間違えて左折す...
**閾値 [#nab00c93]
#define THRESHOLD 40
線の中央、線の境目、白い部分を測定したところ、それぞれ28...
そのため、確実に線の境目と認識できる40を基準にして、閾値...
**サブルーチン [#zf625e52]
sub turnL()
{
turn_here_L;
until(SENSOR_3>THRESHOLD+8);
turn_left;
Wait(500);
}
途中直角に曲がる箇所と急カーブがあるのだが、そこを交差点...
誤認する箇所はいずれも左折であり、交差点でも左折する箇所...
*プログラム [#q2aa951b]
以下のプログラムはtask mainの中にすべて入っているのだが、...
task main()
{
SetSensorLight(S3); //センサーをつけた位置
long t_left = CurrentTick(); //左旋回にかかる時間を...
int n=0; //交差点を通過する回数...
while(true){
while(CurrentTick()-t_left<TMAX){
if(SENSOR_3<THRESHOLD-10){
turn_here_L;
}else if(SENSOR_3<THRESHOLD-5){
turn_left;
t_left = CurrentTick();
}else if(SENSOR_3<THRESHOLD){
go_forward;
t_left = CurrentTick();
}else if(SENSOR_3<THRESHOLD+8){
turn_right;
t_left = CurrentTick();
}else{
turn_here_R;
t_left = CurrentTick();
}
}
測定した時間がTMAX(=150)を超えない時のプログラム。
閾値の項目で線の中央が28前後、白い部分が55前後という値に...
線の中央と確実に認識させるために線の中央を30として、線の...
先ほど定義した閾値をこの値になるように調整した。
左旋回以外は測定時間がリセットされるようにプログラムを立...
if(n<2){
Off(OUT_BC);
Wait(1000);
turn_right; //交差点を右折
until(SENSOR_3>THRESHOLD+10);
n++;
t_left = CurrentTick();
}else if(n<5){
turnL(); //直角及び急カーブを左折
n++;
t_left = CurrentTick();
}else if(n<7){
Off(OUT_BC);
Wait(1000);
turnL(); //交差点を左折
n++;
t_left = CurrentTick();
}else{
Off(OUT_BC);
Wait(1000);
turn_right; //交差点を直進
Wait(580);
t_left = CurrentTick();
}
}
交差点に到達した時のプログラム。
交差点を右折する長さを閾値で指定してあるが、間違って白い...
直角や急カーブの内側をトレースされる関係上どうしてもこれ...
交差点と誤認する3,4,5回目は、交差点を左折するプログラムと...
Wait(STEP);
}
*感想、考察 [#l85fdf6c]
今回の課題は、色の濃さの測定だけでなくタイマーやカウンタ...
また、条件文を多用したため中括弧を入力し損ねてプログラム...
しかし、そこをクリアできると思いの外実行させたい動きをし...
ページ名: