2019b/Member/sumi/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
[[2019b/Member]]
*課題2 [#zee55005]
[[2019b/Mission1]]を参照
自分は第二コースを走らせた。
*ロボットの構造について [#kae73407]
#ref(2019b/Member/sumi/Mission2/all.png,50%,ロボット体)
今回のロボットは、基本は最初に配布される資料に書かれてあ...
**ロボットのアームについて [#fa2615dc]
#ref(2019b/Member/sumi/Mission2/arm2.png,50%,ロボット腕)
このアームはほかの班が多く採用している、ボールを囲ってそ...
**ロボットのせんさーについて [#ad81bd27]
#ref(2019b/Member/sumi/Mission2/sensor.jpg,50%,ロボッット...
工夫した点は、2つで、ラインとセンサー部の距離をできるだ...
*プログラミングについて [#ib9b8822]
**使用したセンサーの値 [#ic461231]
#ref(2019b/Member/sumi/Mission2/color.png,50%,せんさー)
上の図の通りである。見ずらかったら申し訳ない。これを作成...
**プログラミングの全体像 [#mca87d2b]
#define turn_right OnFwd(OUT_C,25);OnRev(OUT_B,15);//右折
#define turn_left OnFwd(OUT_B,25);OnRev(OUT_C,15);//左折
#define rotate_right OnFwd(OUT_C,20);OnRev(OUT_B,25);//...
#define rotate_left OnFwd(OUT_B,20);OnRev(OUT_C,25);//左...
#define go_straight OnFwd(OUT_BC,30);//直進
#define black 35//黒の値は35
#define white 65//白の値は65
#define lightgray 57//灰白色は57
#define darkgray 43//灰黒色は43
sub followline_L(int stop_time,long tmin,long tmax) //左...
{
SetSensorLight(S1);
long t0=CurrentTick();
long t_start=CurrentTick();
while((CurrentTick()-t0<=stop_time||CurrentTick()-t_...
t_start<=tmax){//現在の時刻が一定の値を超えるまで
if(SENSOR_1<black){//センサーが黒の時
rotate_left;//左旋回
}else if(SENSOR_1<darkgray){//センサーが黒灰なら
turn_left;//左折
t0=CurrentTick();//時間をリセット
}else if(SENSOR_1<lightgray){//明るさ50以下で
go_straight;//直進
t0=CurrentTick();//時間をリセット
}else{//それ以外は
rotate_right;//右旋回
t0=CurrentTick();//時間をリセット
}
}
Off(OUT_BC);//時刻が一定の値を超えると停止
Wait(1000);//1秒間停止
}
sub followline_R(int stop_time,long tmin,long tmax)
{
SetSensorLight(S1);
long t0=CurrentTick();
long t_start=CurrentTick();
while((CurrentTick()-t0<=stop_time||CurrentTick()-t_s...
t_start<=tmax){//現在の時刻が一定の値を超えるまで
if(SENSOR_1<black){//センサーが黒の時
rotate_right;//右旋回
}else if(SENSOR_1<darkgray){//センサーが黒灰なら
turn_right;//右折
t0=CurrentTick();//時間をリセット
}else if(SENSOR_1<lightgray){//明るさ50以下で
go_straight;//直進
t0=CurrentTick();//時間をリセット
}else{//それ以外は
rotate_left;//左旋回
t0=CurrentTick();//時間をリセット
}
}
Off(OUT_BC);//時刻が一定の値を超えると停止
Wait(1000);//1秒間停止
}
sub catch_ball(){
OnFwd(OUT_A,-15);
Wait(4000);
}
task main (){
SetSensorLight(S1);
OnFwd(OUT_BC,25);Wait(1000);
followline_L(100,10000,100000);
OnFwd(OUT_B,-18);OnFwd(OUT_C,18);Wait(650);
Off(OUT_BC);
OnFwd(OUT_BC,30);
Wait(750);
Off(OUT_BC);
catch_ball();
Wait(2000);
Off(OUT_BC);
OnFwd(OUT_B,20);OnFwd(OUT_C,-20);Wait(500);
followline_R(100,10000,100000);
Off(OUT_BC);
OnFwd(OUT_BC,20);Wait(800);
followline_R(100,10000,8500);
Off(OUT_BC);
OnFwd(OUT_BC,30);Wait(1700);
Off(OUT_BC);
Wait(3000);
Off(OUT_BC);
}
プログラミングの全体像はこうなっている。見たらわかるかも...
詳細は以下で説明する。
**定義にしたプログラミング [#pcac06c6]
#define turn_right OnFwd(OUT_C,25);OnRev(OUT_B,15);//右折
#define turn_left OnFwd(OUT_B,25);OnRev(OUT_C,15);//左折
#define rotate_right OnFwd(OUT_C,20);OnRev(OUT_B,25);//...
#define rotate_left OnFwd(OUT_B,20);OnRev(OUT_C,25);//左...
#define go_straight OnFwd(OUT_BC,30);//直進
#define black 35//黒の値は35
#define white 65//白の値は65
#define lightgray 57//灰白色は57
#define darkgray 43//灰黒色は43
これが、定義化してしまったもので、上半分がロボットの動作...
**黒線の左側を交差点までトレースしていって交差点で一時停...
sub followline_L(int stop_time,long tmin,long tmax) //左...
{
SetSensorLight(S1);
long t0=CurrentTick();
long t_start=CurrentTick();
while((CurrentTick()-t0<=stop_time||CurrentTick()-t_...
t_start<=tmax){//黒と認識した時間が0.1s以上で交差点認識...
if(SENSOR_1<black){//センサーが黒の時
rotate_left;//左旋回
}else if(SENSOR_1<darkgray){//センサーが黒灰なら
turn_left;//左折
t0=CurrentTick();//時間をリセット
}else if(SENSOR_1<lightgray){//明るさ50以下で
go_straight;//直進
t0=CurrentTick();//時間をリセット
}else{//それ以外は
rotate_right;//右旋回
t0=CurrentTick();//時間をリセット
}
}
Off(OUT_BC);//時刻が一定の値を超えると停止
Wait(1000);//1秒間停止
}
#ref(2019b/Member/sumi/Mission2/kousaten.png,50%,交差点)
このプログラムは、左側のライントレース並びに交差点に差し...
int stop_time//
センサーが黒の値を検知し続けた時間が一定の値を超えた場合...
long tmin
ここに設定した時間の間は、交差点の認識を行わずに、ライン...
long tmax
ここに設定した時間は、ロボットの稼働可能時間の最大値で、...
**黒線の右側を交差点までトレースしていって交差点で一時停...
sub followline_R(int stop_time,long tmin,long tmax)
{
SetSensorLight(S1);
long t0=CurrentTick();
long t_start=CurrentTick();
while((CurrentTick()-t0<=stop_time||CurrentTick()-t_s...
t_start<=tmax){//現在の時刻が一定の値を超えるまで
if(SENSOR_1<black){//センサーが黒の時
rotate_right;//右旋回
}else if(SENSOR_1<darkgray){//センサーが黒灰なら
turn_right;//右折
t0=CurrentTick();//時間をリセット
}else if(SENSOR_1<lightgray){//明るさ50以下で
go_straight;//直進
t0=CurrentTick();//時間をリセット
}else{//それ以外は
rotate_left;//左旋回
t0=CurrentTick();//時間をリセット
}
}
Off(OUT_BC);//時刻が一定の値を超えると停止
Wait(1000);//1秒間停止
}
先ほど説明した左側のライントレースの旋回や右左折の仕様を...
sub catch_ball(){
OnFwd(OUT_A,-15);
Wait(4000);
}
これはロボットのアームの動作に関するプログラム。モーター...
task main (){
SetSensorLight(S1);
OnFwd(OUT_BC,25);Wait(1000);ライントレースのスタート位置...
followline_L(100,10000,100000);左側のライントレースの開...
OnFwd(OUT_B,-18);OnFwd(OUT_C,18);Wait(650);ボールに対し...
Off(OUT_BC);
OnFwd(OUT_BC,30);アームとボールとの距離を再調整
Wait(750);
Off(OUT_BC);
catch_ball();ボールを確保
Wait(2000);
Off(OUT_BC);
OnFwd(OUT_B,20);OnFwd(OUT_C,-20);Wait(500);Gに向かうよう...
followline_R(100,10000,100000);右側のライントレースを開...
Off(OUT_BC);
OnFwd(OUT_BC,20);Wait(800);交差点の通過
followline_R(100,10000,8500);右側ライントレースの再開 D...
Off(OUT_BC);
OnFwd(OUT_BC,30);Wait(1700);ゴールイン
Off(OUT_BC);
Wait(3000);
Off(OUT_BC);
これがメインプログラムです。
*今回の反省点 [#t5704513]
今回はひじょうにうまくいった。この調子で最後の課題もこな...
終了行:
目次
#contents
[[2019b/Member]]
*課題2 [#zee55005]
[[2019b/Mission1]]を参照
自分は第二コースを走らせた。
*ロボットの構造について [#kae73407]
#ref(2019b/Member/sumi/Mission2/all.png,50%,ロボット体)
今回のロボットは、基本は最初に配布される資料に書かれてあ...
**ロボットのアームについて [#fa2615dc]
#ref(2019b/Member/sumi/Mission2/arm2.png,50%,ロボット腕)
このアームはほかの班が多く採用している、ボールを囲ってそ...
**ロボットのせんさーについて [#ad81bd27]
#ref(2019b/Member/sumi/Mission2/sensor.jpg,50%,ロボッット...
工夫した点は、2つで、ラインとセンサー部の距離をできるだ...
*プログラミングについて [#ib9b8822]
**使用したセンサーの値 [#ic461231]
#ref(2019b/Member/sumi/Mission2/color.png,50%,せんさー)
上の図の通りである。見ずらかったら申し訳ない。これを作成...
**プログラミングの全体像 [#mca87d2b]
#define turn_right OnFwd(OUT_C,25);OnRev(OUT_B,15);//右折
#define turn_left OnFwd(OUT_B,25);OnRev(OUT_C,15);//左折
#define rotate_right OnFwd(OUT_C,20);OnRev(OUT_B,25);//...
#define rotate_left OnFwd(OUT_B,20);OnRev(OUT_C,25);//左...
#define go_straight OnFwd(OUT_BC,30);//直進
#define black 35//黒の値は35
#define white 65//白の値は65
#define lightgray 57//灰白色は57
#define darkgray 43//灰黒色は43
sub followline_L(int stop_time,long tmin,long tmax) //左...
{
SetSensorLight(S1);
long t0=CurrentTick();
long t_start=CurrentTick();
while((CurrentTick()-t0<=stop_time||CurrentTick()-t_...
t_start<=tmax){//現在の時刻が一定の値を超えるまで
if(SENSOR_1<black){//センサーが黒の時
rotate_left;//左旋回
}else if(SENSOR_1<darkgray){//センサーが黒灰なら
turn_left;//左折
t0=CurrentTick();//時間をリセット
}else if(SENSOR_1<lightgray){//明るさ50以下で
go_straight;//直進
t0=CurrentTick();//時間をリセット
}else{//それ以外は
rotate_right;//右旋回
t0=CurrentTick();//時間をリセット
}
}
Off(OUT_BC);//時刻が一定の値を超えると停止
Wait(1000);//1秒間停止
}
sub followline_R(int stop_time,long tmin,long tmax)
{
SetSensorLight(S1);
long t0=CurrentTick();
long t_start=CurrentTick();
while((CurrentTick()-t0<=stop_time||CurrentTick()-t_s...
t_start<=tmax){//現在の時刻が一定の値を超えるまで
if(SENSOR_1<black){//センサーが黒の時
rotate_right;//右旋回
}else if(SENSOR_1<darkgray){//センサーが黒灰なら
turn_right;//右折
t0=CurrentTick();//時間をリセット
}else if(SENSOR_1<lightgray){//明るさ50以下で
go_straight;//直進
t0=CurrentTick();//時間をリセット
}else{//それ以外は
rotate_left;//左旋回
t0=CurrentTick();//時間をリセット
}
}
Off(OUT_BC);//時刻が一定の値を超えると停止
Wait(1000);//1秒間停止
}
sub catch_ball(){
OnFwd(OUT_A,-15);
Wait(4000);
}
task main (){
SetSensorLight(S1);
OnFwd(OUT_BC,25);Wait(1000);
followline_L(100,10000,100000);
OnFwd(OUT_B,-18);OnFwd(OUT_C,18);Wait(650);
Off(OUT_BC);
OnFwd(OUT_BC,30);
Wait(750);
Off(OUT_BC);
catch_ball();
Wait(2000);
Off(OUT_BC);
OnFwd(OUT_B,20);OnFwd(OUT_C,-20);Wait(500);
followline_R(100,10000,100000);
Off(OUT_BC);
OnFwd(OUT_BC,20);Wait(800);
followline_R(100,10000,8500);
Off(OUT_BC);
OnFwd(OUT_BC,30);Wait(1700);
Off(OUT_BC);
Wait(3000);
Off(OUT_BC);
}
プログラミングの全体像はこうなっている。見たらわかるかも...
詳細は以下で説明する。
**定義にしたプログラミング [#pcac06c6]
#define turn_right OnFwd(OUT_C,25);OnRev(OUT_B,15);//右折
#define turn_left OnFwd(OUT_B,25);OnRev(OUT_C,15);//左折
#define rotate_right OnFwd(OUT_C,20);OnRev(OUT_B,25);//...
#define rotate_left OnFwd(OUT_B,20);OnRev(OUT_C,25);//左...
#define go_straight OnFwd(OUT_BC,30);//直進
#define black 35//黒の値は35
#define white 65//白の値は65
#define lightgray 57//灰白色は57
#define darkgray 43//灰黒色は43
これが、定義化してしまったもので、上半分がロボットの動作...
**黒線の左側を交差点までトレースしていって交差点で一時停...
sub followline_L(int stop_time,long tmin,long tmax) //左...
{
SetSensorLight(S1);
long t0=CurrentTick();
long t_start=CurrentTick();
while((CurrentTick()-t0<=stop_time||CurrentTick()-t_...
t_start<=tmax){//黒と認識した時間が0.1s以上で交差点認識...
if(SENSOR_1<black){//センサーが黒の時
rotate_left;//左旋回
}else if(SENSOR_1<darkgray){//センサーが黒灰なら
turn_left;//左折
t0=CurrentTick();//時間をリセット
}else if(SENSOR_1<lightgray){//明るさ50以下で
go_straight;//直進
t0=CurrentTick();//時間をリセット
}else{//それ以外は
rotate_right;//右旋回
t0=CurrentTick();//時間をリセット
}
}
Off(OUT_BC);//時刻が一定の値を超えると停止
Wait(1000);//1秒間停止
}
#ref(2019b/Member/sumi/Mission2/kousaten.png,50%,交差点)
このプログラムは、左側のライントレース並びに交差点に差し...
int stop_time//
センサーが黒の値を検知し続けた時間が一定の値を超えた場合...
long tmin
ここに設定した時間の間は、交差点の認識を行わずに、ライン...
long tmax
ここに設定した時間は、ロボットの稼働可能時間の最大値で、...
**黒線の右側を交差点までトレースしていって交差点で一時停...
sub followline_R(int stop_time,long tmin,long tmax)
{
SetSensorLight(S1);
long t0=CurrentTick();
long t_start=CurrentTick();
while((CurrentTick()-t0<=stop_time||CurrentTick()-t_s...
t_start<=tmax){//現在の時刻が一定の値を超えるまで
if(SENSOR_1<black){//センサーが黒の時
rotate_right;//右旋回
}else if(SENSOR_1<darkgray){//センサーが黒灰なら
turn_right;//右折
t0=CurrentTick();//時間をリセット
}else if(SENSOR_1<lightgray){//明るさ50以下で
go_straight;//直進
t0=CurrentTick();//時間をリセット
}else{//それ以外は
rotate_left;//左旋回
t0=CurrentTick();//時間をリセット
}
}
Off(OUT_BC);//時刻が一定の値を超えると停止
Wait(1000);//1秒間停止
}
先ほど説明した左側のライントレースの旋回や右左折の仕様を...
sub catch_ball(){
OnFwd(OUT_A,-15);
Wait(4000);
}
これはロボットのアームの動作に関するプログラム。モーター...
task main (){
SetSensorLight(S1);
OnFwd(OUT_BC,25);Wait(1000);ライントレースのスタート位置...
followline_L(100,10000,100000);左側のライントレースの開...
OnFwd(OUT_B,-18);OnFwd(OUT_C,18);Wait(650);ボールに対し...
Off(OUT_BC);
OnFwd(OUT_BC,30);アームとボールとの距離を再調整
Wait(750);
Off(OUT_BC);
catch_ball();ボールを確保
Wait(2000);
Off(OUT_BC);
OnFwd(OUT_B,20);OnFwd(OUT_C,-20);Wait(500);Gに向かうよう...
followline_R(100,10000,100000);右側のライントレースを開...
Off(OUT_BC);
OnFwd(OUT_BC,20);Wait(800);交差点の通過
followline_R(100,10000,8500);右側ライントレースの再開 D...
Off(OUT_BC);
OnFwd(OUT_BC,30);Wait(1700);ゴールイン
Off(OUT_BC);
Wait(3000);
Off(OUT_BC);
これがメインプログラムです。
*今回の反省点 [#t5704513]
今回はひじょうにうまくいった。この調子で最後の課題もこな...
ページ名: