2019a/Member/w123/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
目次
#contents
*課題について [#n09c5be2]
次のようなコースを作ります。
#ref(2019a-mission3.png)
そして、4つのボールを空の弁当箱に集めます。
詳しくは[[2019a/Mission3]]を参照してください。
*基本的な作戦 [#jf8b7958]
1つのつかむ機構では、床のボールと弁当箱に入っているボール...
もともとは、1つのアームに2つのつかむ機構を搭載し、ボール...
しかし、アームが重すぎて上がらなくなってしまったことで、...
*ロボットの本体の説明 [#y99352ff]
#ref(IMG_4909.jpg)
ロボットの全体図
弁当箱の形に合わせて作られたアームで、しっかりとつかむこ...
NXTのコアを2つ用いて、Bluetoothで接続しています。
マスター側には、ラインセンサー1つとモーター2つが接続して...
スレーブ側には、モーターが3つ接続しており、アームの動作を...
移動を担っているNXTとアームの動作を担っているNXTが独立し...
このことによって、アームの動作が終わっていないのに、ロボ...
#ref(IMG_5014.jpg)
二輪駆動で移動します。
タイヤの少し前にラインセンサが付いており、モーターが回り...
#ref(IMG_4997.jpg)
弁当箱を持ち上げ、中に入っているボールをレールを伝わせて...
#ref(IMG_5015.jpg)
ボール収納スペースに入っているところ。
#ref(./IMG_5016.jpg)
ストッパーでボールが出てくるのを止めています。
#ref(IMG_4927.jpg)
坂になっているので、ストッパーをあげると、自動的にボール...
#ref(IMG_5017.jpg)
モーターに高いギヤ比をかけることで、大きなパワーを出すこ...
#ref(IMG_4952.jpg)
アームを開閉させるためのモーターをギヤによってアームの先...
#ref(IMG_4948.jpg)
ボールをつかむためのアーム
フェースギアを用い、モーターの回転軸を90度回転させること...
*プログラムの説明 [#l0b5f21e]
#ref(1.png)
図のように進んで行きます。
ボールが入っている弁当箱の目の前までは、ライントレースで...
ボールを回収した後は、そのまま空の弁当箱の前まで行き、ボ...
#ref(2.png)
ラインセンサの値は、黒のときが30くらいで、白のときが60く...
そのため、白と黒の境の値をを40として、図のように、白のと...
交差点では、いつもより黒の上を進む時間が長い(右に進む時...
右に進んでいるときは、Aの値が増え続け、左に進むとAは0にな...
Aの値が一定の値(400)以上になったときに、交差点にいると...
void re_stop_corner(){
SetSensorLight(S1);
while(A<400){
if(SENSOR_1>40){
hidari;
A=0;
B=B+1;
}else{
migi;
A=A+1;
B=B+1;
}
}
tomaru;
Wait(1000);
B=0;
}//交差点で止まるライントレース(ラインの右側を進む)
交差点を直進するプログラムと交差点で止まるプログラムがセ...
ライントレースをしている時間を計測するために変数Bを用いま...
ライントレースをしている間はBの値が増え続けます。
一定の値になり、一定の時間が経過したことがわかると、交差...
while(B<8000){
re_cross_line();//交差点を直進するライントレース(ラ...
}
while(B>=8000){
re_stop_corner();
}//交差点で止まるライントレース(ラインの右側を進む)
#ref(3.png)
弁当箱の前に移動するときに、アームが弁当箱にあたり、弁当...
また、スタートのときにはアームを上に上げておき、途中で下...
マスター側
#define CONN 1
#define on1 1
#define on2 2
#define on3 3
#define zenshin OnFwd(OUT_BC,60); //前進
#define koushin OnFwd(OUT_BC,-60); //後進
#define migikaiten OnFwd(OUT_B,-70);OnFwd(OUT_C,40); //...
#define hidarikaiten OnFwd(OUT_B,40);OnFwd(OUT_C,-70); /...
#define migi OnFwd(OUT_C,40);Off(OUT_B);//右に進む
#define hidari OnFwd(OUT_B,40);Off(OUT_C); //左に進む
#define tomaru Off(OUT_BC); //ストップ
long A=0;//ライン上を連続して進んでいる時間を計測する変数
long B=0;//ライントレースしている時間を計測する変数
void re_stop_corner(){
SetSensorLight(S1);
while(A<400){
if(SENSOR_1>40){
hidari;
A=0;
B=B+1;
}else{
migi;
A=A+1;
B=B+1;
}
}
tomaru;
Wait(1000);
B=0;
}//交差点で止まるライントレース(ラインの右側を進む)
void re_cross_line(){
SetSensorLight(S1);
if(SENSOR_1>40){
hidari;
B=B+1;
}else{
migi;
B=B+1;
}
}//交差点を直進するライントレース(ラインの右側を進む)
task main()
{
SetSensorLight(S1);
while(B<8000){
re_cross_line();//交差点を直進するライントレース...
}
while(B>=8000){
re_stop_corner();
}//交差点で止まるライントレース(ラインの右側を進む)
tomaru;
Wait(500);
koushin;
Wait(1600);
migi;
Wait(300);
zenshin;
Wait(1300);
migikaiten;
Wait(1300);
tomaru;
Wait(100);
koushin;
Wait(300);
tomaru;
Wait(100);
zenshin;
Wait(300);
tomaru;
Wait(100);//弁当箱をつかむために、向きを変えるための...
SendRemoteNumber(CONN,MAILBOX1,on2);
Wait(18000);//アームを下げる動作
zenshin;
Wait(300);
tomaru;
Wait(100);//前進して、弁当箱の目の前に移動する動作ー...
SendRemoteNumber(CONN,MAILBOX1,on1);
Wait(30000);//弁当箱をつかみ、アームを上げ、下げて、...
OnFwd(OUT_B,50);OnFwd(OUT_C,-80); //少し強く左回転
Wait(400);
tomaru;
Wait(100);
koushin;
Wait(1500);
tomaru;
Wait(100);//空の弁当箱の前に移動する動作
SendRemoteNumber(CONN,MAILBOX1,on3);
Wait(1000);//ストッパーを上げて、回収したボールを空...
tomaru;
Wait(100);
}
スレーブ側
#define on1 1
#define on2 2
#define on3 3
#define tomaru Off(OUT_AB);Wait(100);//ストップ
task main()
{
int msg1;
int msg2;
while(1){
ReceiveRemoteNumber(MAILBOX1,true,msg1);
if(msg1==on1){
OnFwd(OUT_B,50);
Wait(1500);//弁当箱をつかむ動作
tomaru;
OnFwd(OUT_A,-100);
Wait(20000); //アームを上げる動作
OnFwd(OUT_A,100);
Wait(20000);//アームを下げる動作
tomaru;
OnFwd(OUT_B,-50);
Wait(1500);//弁当箱を放す動作
tomaru;//弁当箱をつかみ、アームを上げ、下げ...
msg1=100;//msg1に1,2,3以外の関係ない数を代入...
}
if(msg1==on2){
OnFwd(OUT_A,100);
Wait(20000);//アームを下げる動作
msg1=100;//msg1に1,2,3以外の関係ない数を代入...
}
if(msg1==on3){
OnFwd(OUT_C,-30);
Wait(200);//ストッパーをあげる動作
msg1=100;//msg1に1,2,3以外の関係ない数を代入...
}
}
}
*難しかったところ [#q17bbad3]
#ref(IMG_4955.jpg)
機体が重いので、キャスター1つでは、バランスを崩す可能性が...
そのため、小さな車輪をつけたのですが、そうすると回転移動...
そのため、プログラムが大変になってしまいました。
終了行:
[[2019a/Member]]
目次
#contents
*課題について [#n09c5be2]
次のようなコースを作ります。
#ref(2019a-mission3.png)
そして、4つのボールを空の弁当箱に集めます。
詳しくは[[2019a/Mission3]]を参照してください。
*基本的な作戦 [#jf8b7958]
1つのつかむ機構では、床のボールと弁当箱に入っているボール...
もともとは、1つのアームに2つのつかむ機構を搭載し、ボール...
しかし、アームが重すぎて上がらなくなってしまったことで、...
*ロボットの本体の説明 [#y99352ff]
#ref(IMG_4909.jpg)
ロボットの全体図
弁当箱の形に合わせて作られたアームで、しっかりとつかむこ...
NXTのコアを2つ用いて、Bluetoothで接続しています。
マスター側には、ラインセンサー1つとモーター2つが接続して...
スレーブ側には、モーターが3つ接続しており、アームの動作を...
移動を担っているNXTとアームの動作を担っているNXTが独立し...
このことによって、アームの動作が終わっていないのに、ロボ...
#ref(IMG_5014.jpg)
二輪駆動で移動します。
タイヤの少し前にラインセンサが付いており、モーターが回り...
#ref(IMG_4997.jpg)
弁当箱を持ち上げ、中に入っているボールをレールを伝わせて...
#ref(IMG_5015.jpg)
ボール収納スペースに入っているところ。
#ref(./IMG_5016.jpg)
ストッパーでボールが出てくるのを止めています。
#ref(IMG_4927.jpg)
坂になっているので、ストッパーをあげると、自動的にボール...
#ref(IMG_5017.jpg)
モーターに高いギヤ比をかけることで、大きなパワーを出すこ...
#ref(IMG_4952.jpg)
アームを開閉させるためのモーターをギヤによってアームの先...
#ref(IMG_4948.jpg)
ボールをつかむためのアーム
フェースギアを用い、モーターの回転軸を90度回転させること...
*プログラムの説明 [#l0b5f21e]
#ref(1.png)
図のように進んで行きます。
ボールが入っている弁当箱の目の前までは、ライントレースで...
ボールを回収した後は、そのまま空の弁当箱の前まで行き、ボ...
#ref(2.png)
ラインセンサの値は、黒のときが30くらいで、白のときが60く...
そのため、白と黒の境の値をを40として、図のように、白のと...
交差点では、いつもより黒の上を進む時間が長い(右に進む時...
右に進んでいるときは、Aの値が増え続け、左に進むとAは0にな...
Aの値が一定の値(400)以上になったときに、交差点にいると...
void re_stop_corner(){
SetSensorLight(S1);
while(A<400){
if(SENSOR_1>40){
hidari;
A=0;
B=B+1;
}else{
migi;
A=A+1;
B=B+1;
}
}
tomaru;
Wait(1000);
B=0;
}//交差点で止まるライントレース(ラインの右側を進む)
交差点を直進するプログラムと交差点で止まるプログラムがセ...
ライントレースをしている時間を計測するために変数Bを用いま...
ライントレースをしている間はBの値が増え続けます。
一定の値になり、一定の時間が経過したことがわかると、交差...
while(B<8000){
re_cross_line();//交差点を直進するライントレース(ラ...
}
while(B>=8000){
re_stop_corner();
}//交差点で止まるライントレース(ラインの右側を進む)
#ref(3.png)
弁当箱の前に移動するときに、アームが弁当箱にあたり、弁当...
また、スタートのときにはアームを上に上げておき、途中で下...
マスター側
#define CONN 1
#define on1 1
#define on2 2
#define on3 3
#define zenshin OnFwd(OUT_BC,60); //前進
#define koushin OnFwd(OUT_BC,-60); //後進
#define migikaiten OnFwd(OUT_B,-70);OnFwd(OUT_C,40); //...
#define hidarikaiten OnFwd(OUT_B,40);OnFwd(OUT_C,-70); /...
#define migi OnFwd(OUT_C,40);Off(OUT_B);//右に進む
#define hidari OnFwd(OUT_B,40);Off(OUT_C); //左に進む
#define tomaru Off(OUT_BC); //ストップ
long A=0;//ライン上を連続して進んでいる時間を計測する変数
long B=0;//ライントレースしている時間を計測する変数
void re_stop_corner(){
SetSensorLight(S1);
while(A<400){
if(SENSOR_1>40){
hidari;
A=0;
B=B+1;
}else{
migi;
A=A+1;
B=B+1;
}
}
tomaru;
Wait(1000);
B=0;
}//交差点で止まるライントレース(ラインの右側を進む)
void re_cross_line(){
SetSensorLight(S1);
if(SENSOR_1>40){
hidari;
B=B+1;
}else{
migi;
B=B+1;
}
}//交差点を直進するライントレース(ラインの右側を進む)
task main()
{
SetSensorLight(S1);
while(B<8000){
re_cross_line();//交差点を直進するライントレース...
}
while(B>=8000){
re_stop_corner();
}//交差点で止まるライントレース(ラインの右側を進む)
tomaru;
Wait(500);
koushin;
Wait(1600);
migi;
Wait(300);
zenshin;
Wait(1300);
migikaiten;
Wait(1300);
tomaru;
Wait(100);
koushin;
Wait(300);
tomaru;
Wait(100);
zenshin;
Wait(300);
tomaru;
Wait(100);//弁当箱をつかむために、向きを変えるための...
SendRemoteNumber(CONN,MAILBOX1,on2);
Wait(18000);//アームを下げる動作
zenshin;
Wait(300);
tomaru;
Wait(100);//前進して、弁当箱の目の前に移動する動作ー...
SendRemoteNumber(CONN,MAILBOX1,on1);
Wait(30000);//弁当箱をつかみ、アームを上げ、下げて、...
OnFwd(OUT_B,50);OnFwd(OUT_C,-80); //少し強く左回転
Wait(400);
tomaru;
Wait(100);
koushin;
Wait(1500);
tomaru;
Wait(100);//空の弁当箱の前に移動する動作
SendRemoteNumber(CONN,MAILBOX1,on3);
Wait(1000);//ストッパーを上げて、回収したボールを空...
tomaru;
Wait(100);
}
スレーブ側
#define on1 1
#define on2 2
#define on3 3
#define tomaru Off(OUT_AB);Wait(100);//ストップ
task main()
{
int msg1;
int msg2;
while(1){
ReceiveRemoteNumber(MAILBOX1,true,msg1);
if(msg1==on1){
OnFwd(OUT_B,50);
Wait(1500);//弁当箱をつかむ動作
tomaru;
OnFwd(OUT_A,-100);
Wait(20000); //アームを上げる動作
OnFwd(OUT_A,100);
Wait(20000);//アームを下げる動作
tomaru;
OnFwd(OUT_B,-50);
Wait(1500);//弁当箱を放す動作
tomaru;//弁当箱をつかみ、アームを上げ、下げ...
msg1=100;//msg1に1,2,3以外の関係ない数を代入...
}
if(msg1==on2){
OnFwd(OUT_A,100);
Wait(20000);//アームを下げる動作
msg1=100;//msg1に1,2,3以外の関係ない数を代入...
}
if(msg1==on3){
OnFwd(OUT_C,-30);
Wait(200);//ストッパーをあげる動作
msg1=100;//msg1に1,2,3以外の関係ない数を代入...
}
}
}
*難しかったところ [#q17bbad3]
#ref(IMG_4955.jpg)
機体が重いので、キャスター1つでは、バランスを崩す可能性が...
そのため、小さな車輪をつけたのですが、そうすると回転移動...
そのため、プログラムが大変になってしまいました。
ページ名: