2015b/Member/nakamura/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015b/MemberOnly]]
*ボール打ち出しロボット [#ucbc2881]
**課題 [#gb654b97]
今回の課題は2つのロボットを用いて一つがAから発進しボール...
#ref(2015b/Member/nakamura/Mission3/22015b-mission31.png...
**ロボット -打ち出し側-[#ib05a45e]
車体はライントレースができるようにドライブベースを使った...
#ref(2015b/Member/nakamura/Mission3/IMG_0735 - コピー.JPG...
ロボットは図のようであり、全体的に上にパーツを盛る形とな...
***車体 [#u8592b68]
車体は前回と同様にドライブベースを用いたので説明は省略す...
***アーム [#fe5864ab]
アームは1つのモーターでボールをつかむ動作、投げる動作を...
#ref(2015b/Member/nakamura/Mission3/IMG_0738.JPG,50%)
図の中では黄色のブロックが押し出す部分である。初めは固定...
と考えた。しかし前についている黒いブロックを横に広げ、さ...
**ロボット-受け取り側- [#v2351bc5]
#ref(2015b/Member/nakamura/Mission3/IMG_0804.JPG,70%,)
受け取り側のロボットは、はさみ状のアームでボールをつかむ...
**プログラム -打ち出し側-[#ye1e08ae]
最初に、今回はモーターの配置の関係でモーターA,Cは「OnFwd...
「OnRev(OUT_AC)」
と入力している。
プログラムの内容はまずA地点から出て1つ目のボールへ向かう...
・1つ目はスタートの位置から動くのである程度時間操作でボ...
・光へ近づくときは正確さを求め、0.5秒進むごとに光の方...
・アームを動かすときは下げるときはあまり力がいらないので...
***数値の定義づけ [#u298e3c4]
int light_max = 0; //光の一番大きい数値
int turn_time = 500; //光を探すために旋回する時間
int time_max = 0; //回り始めてから最大の明るさの値...
***光の方向に向くサブルーチン [#cd0c2ced]
sub light(){
/* センサー1,2を光センサーに設定 */
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_LIGHT);
/* 時間をはかりながら旋回 */
ClearTimer(0);
OnFwd(OUT_A);OnRev(OUT_C);
/* 光センサーが最も明るい値を示した時の旋回した時...
while(FastTimer(0) < turn_time){
if(SENSOR_2 > light_max){
light_max = SENSOR_2;
time_max = FastTimer(0);
}
}
Off(OUT_AC);Wait(100);
/* 光のほうへむける */
OnFwd(OUT_C);OnRev(OUT_A);Wait(turn_time - time...
Off(OUT_AC);Wait(100);
}
***メインプログラム [#j887c224]
まずは1つ目のボール
task main(){
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetPower(OUT_B,5);OnFwd(OUT_B);Wait(50); //...
/* 1つ目のボールをつかみに行く */
OnRev(OUT_AC);Wait(200);
OnRev(OUT_A);OnFwd(OUT_C);Wait(100);
OnRev(OUT_AC);Wait(200);
Off(OUT_AC);Wait(100);
SetPower(OUT_B, 1);OnRev(OUT_B);Wait(100);
OnRev(OUT_C);OnFwd(OUT_A);Wait(150);
OnRev(OUT_AC);Wait(300);
/* 光の最大値が65以上になるまで光源に近づく */
while(light_max < 65){
OnRev(OUT_AC);Wait(50);Off(OUT_AC);
light();
}
PlaySound(SOUND_CLICK);
light(); //...
SetPower(OUT_B,5);OnFwd(OUT_B);Wait(50); //...
次に2つ目のボール
/* 2つ目のボールをつかみに行く */
OnFwd(OUT_C);OnRev(OUT_A);Wait(150);
Off(OUT_AC);Wait(100);
OnRev(OUT_AC);Wait(200);
OnRev(OUT_AC);until(SENSOR_1 < 41);
Off(OUT_AC);PlaySound(SOUND_CLICK);Wait(100); ...
/* 角を認識してボールへ近づく */
ClearTimer(1);
while(FastTimer(1) < 50){
if(SENSOR_1 > 49){
OnRev(OUT_A);OnFwd(OUT_C);
} else if(SENSOR_1 > 46){
OnRev(OUT_A);Off(OUT_C);
} else if(SENSOR_1 > 40){
OnRev(OUT_AC);ClearTimer(1);
} else if(SENSOR_1 > 37){
OnRev(OUT_C);Off(OUT_A);ClearTimer(1);
} else{
OnRev(OUT_C);OnFwd(OUT_A);ClearTimer(1);
}
}
OnRev(OUT_A);OnFwd(OUT_C);Wait(80);
OnRev(OUT_AC);Wait(150);
Off(OUT_AC);Wait(100);
/* ボールをつかむ */
SetPower(OUT_B,5);OnFwd(OUT_B);Wait(50);
SetPower(OUT_B,1);OnRev(OUT_B);Wait(100);Off(OU...
/* 光センサーの値が50以上になるまで近づく */
OnFwd(OUT_A);OnRev(OUT_C);Wait(350);
OnRev(OUT_AC);Wait(200);
while(SENSOR_2 < 50){
OnRev(OUT_AC);Wait(50);Off(OUT_AC);
light();
}
PlaySound(SOUND_CLICK);
light();
OnRev(OUT_A);OnFwd(OUT_C);Wait(35); //投...
Off(OUT_AC);Wait(100);
SetPower(OUT_B,5);OnFwd(OUT_B);Wait(50);
OnFwd(OUT_AC);Wait(100);
Off(OUT_AC);
}
**プログラム-受け取り側- [#j3ec6d7d]
大まかな流れとしてはまず、打ち出し側のロボットがボールを...
**結果 [#z7856c00]
結果としては1つ目のボールを缶に当てることはうまくいった...
しかし接触がなければ近づいて投げるところまではできていた...
問題点としてはアームを持ち上げるときにモーターを止めてし...
今回のロボットは十分考えた末に出来上がったものであるがア...
終了行:
[[2015b/MemberOnly]]
*ボール打ち出しロボット [#ucbc2881]
**課題 [#gb654b97]
今回の課題は2つのロボットを用いて一つがAから発進しボール...
#ref(2015b/Member/nakamura/Mission3/22015b-mission31.png...
**ロボット -打ち出し側-[#ib05a45e]
車体はライントレースができるようにドライブベースを使った...
#ref(2015b/Member/nakamura/Mission3/IMG_0735 - コピー.JPG...
ロボットは図のようであり、全体的に上にパーツを盛る形とな...
***車体 [#u8592b68]
車体は前回と同様にドライブベースを用いたので説明は省略す...
***アーム [#fe5864ab]
アームは1つのモーターでボールをつかむ動作、投げる動作を...
#ref(2015b/Member/nakamura/Mission3/IMG_0738.JPG,50%)
図の中では黄色のブロックが押し出す部分である。初めは固定...
と考えた。しかし前についている黒いブロックを横に広げ、さ...
**ロボット-受け取り側- [#v2351bc5]
#ref(2015b/Member/nakamura/Mission3/IMG_0804.JPG,70%,)
受け取り側のロボットは、はさみ状のアームでボールをつかむ...
**プログラム -打ち出し側-[#ye1e08ae]
最初に、今回はモーターの配置の関係でモーターA,Cは「OnFwd...
「OnRev(OUT_AC)」
と入力している。
プログラムの内容はまずA地点から出て1つ目のボールへ向かう...
・1つ目はスタートの位置から動くのである程度時間操作でボ...
・光へ近づくときは正確さを求め、0.5秒進むごとに光の方...
・アームを動かすときは下げるときはあまり力がいらないので...
***数値の定義づけ [#u298e3c4]
int light_max = 0; //光の一番大きい数値
int turn_time = 500; //光を探すために旋回する時間
int time_max = 0; //回り始めてから最大の明るさの値...
***光の方向に向くサブルーチン [#cd0c2ced]
sub light(){
/* センサー1,2を光センサーに設定 */
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_LIGHT);
/* 時間をはかりながら旋回 */
ClearTimer(0);
OnFwd(OUT_A);OnRev(OUT_C);
/* 光センサーが最も明るい値を示した時の旋回した時...
while(FastTimer(0) < turn_time){
if(SENSOR_2 > light_max){
light_max = SENSOR_2;
time_max = FastTimer(0);
}
}
Off(OUT_AC);Wait(100);
/* 光のほうへむける */
OnFwd(OUT_C);OnRev(OUT_A);Wait(turn_time - time...
Off(OUT_AC);Wait(100);
}
***メインプログラム [#j887c224]
まずは1つ目のボール
task main(){
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetPower(OUT_B,5);OnFwd(OUT_B);Wait(50); //...
/* 1つ目のボールをつかみに行く */
OnRev(OUT_AC);Wait(200);
OnRev(OUT_A);OnFwd(OUT_C);Wait(100);
OnRev(OUT_AC);Wait(200);
Off(OUT_AC);Wait(100);
SetPower(OUT_B, 1);OnRev(OUT_B);Wait(100);
OnRev(OUT_C);OnFwd(OUT_A);Wait(150);
OnRev(OUT_AC);Wait(300);
/* 光の最大値が65以上になるまで光源に近づく */
while(light_max < 65){
OnRev(OUT_AC);Wait(50);Off(OUT_AC);
light();
}
PlaySound(SOUND_CLICK);
light(); //...
SetPower(OUT_B,5);OnFwd(OUT_B);Wait(50); //...
次に2つ目のボール
/* 2つ目のボールをつかみに行く */
OnFwd(OUT_C);OnRev(OUT_A);Wait(150);
Off(OUT_AC);Wait(100);
OnRev(OUT_AC);Wait(200);
OnRev(OUT_AC);until(SENSOR_1 < 41);
Off(OUT_AC);PlaySound(SOUND_CLICK);Wait(100); ...
/* 角を認識してボールへ近づく */
ClearTimer(1);
while(FastTimer(1) < 50){
if(SENSOR_1 > 49){
OnRev(OUT_A);OnFwd(OUT_C);
} else if(SENSOR_1 > 46){
OnRev(OUT_A);Off(OUT_C);
} else if(SENSOR_1 > 40){
OnRev(OUT_AC);ClearTimer(1);
} else if(SENSOR_1 > 37){
OnRev(OUT_C);Off(OUT_A);ClearTimer(1);
} else{
OnRev(OUT_C);OnFwd(OUT_A);ClearTimer(1);
}
}
OnRev(OUT_A);OnFwd(OUT_C);Wait(80);
OnRev(OUT_AC);Wait(150);
Off(OUT_AC);Wait(100);
/* ボールをつかむ */
SetPower(OUT_B,5);OnFwd(OUT_B);Wait(50);
SetPower(OUT_B,1);OnRev(OUT_B);Wait(100);Off(OU...
/* 光センサーの値が50以上になるまで近づく */
OnFwd(OUT_A);OnRev(OUT_C);Wait(350);
OnRev(OUT_AC);Wait(200);
while(SENSOR_2 < 50){
OnRev(OUT_AC);Wait(50);Off(OUT_AC);
light();
}
PlaySound(SOUND_CLICK);
light();
OnRev(OUT_A);OnFwd(OUT_C);Wait(35); //投...
Off(OUT_AC);Wait(100);
SetPower(OUT_B,5);OnFwd(OUT_B);Wait(50);
OnFwd(OUT_AC);Wait(100);
Off(OUT_AC);
}
**プログラム-受け取り側- [#j3ec6d7d]
大まかな流れとしてはまず、打ち出し側のロボットがボールを...
**結果 [#z7856c00]
結果としては1つ目のボールを缶に当てることはうまくいった...
しかし接触がなければ近づいて投げるところまではできていた...
問題点としてはアームを持ち上げるときにモーターを止めてし...
今回のロボットは十分考えた末に出来上がったものであるがア...
ページ名: