2016b/Member/sennokiseki/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016b/Member]]
目次
#contents
*課題 [#tae1a51f]
**課題の内容 [#s1254745]
テーマとしては「野球ロボット」である。ピッチャー役とバ...
**コース [#h09300fd]
課題2で使用したコース上に5つのゴールを置いたものをフ...
#ref(2016b/Member/sennokiseki/Mission3/課題3コース.JPG,10...
*機体 [#sa866265]
今回は2つの機体を用いたので、バッターだけでなくピッチ...
**ピッチャー [#zfe10c03]
-「マウンド」に着くために用いるライトセンサーが付いている。
-ピンポン玉は機体の後ろに装填し、ストッパー部分が回転する...
-最初レールが地面に水平になるよう延長して取り付けられてい...
-問題点としては射出の威力が足りないこと、軌道が逸れやすい...
#ref(2016b/Member/sennokiseki/Mission3/ピッチャー.JPG,100...
**バッター [#g5269022]
***全体 [#m5298c17]
-初期の機体は各部固定が弱く分解しやすかったが、補強を重ね...
-前輪駆動で、「バット」はピッチャーに向き合うとき回転する...
***分解性 [#d5d0a27c]
各パーツが大きいが、それなりに分解しやすい機体になった。
#ref(2016b/Member/sennokiseki/Mission3/分解図.JPG,100,分解)
***「バット」 [#q4bfca5e]
-バットとは言うものの、打ち方としては、キャッチ→シュート...
-鉤爪のような形にすることで、キャッチした後ピンポン玉が転...
#ref(2016b/Member/sennokiseki/Mission3/鉤爪.JPG,100,バット)
***ライトセンサー [#k1a2609c]
一部ライントレースをするため、ライトセンサーを取り付け...
#ref(2016b/Member/sennokiseki/Mission3/正面.JPG,100,正面)
***後輪 [#u34fb1c0]
当初はキャスターを採用していたが、思いのほか曲がりにく...
***機体についての反省 [#j6ddbd08]
-サイズの規定が大きな壁だった。バット部分を横に取り付ける...
-ピッチャーから射出されるピンポン玉の軌道が逸れ気味だった...
*プログラム [#a749751d]
**通信 [#xa377af6]
本課題では、2つの機体のBluetoothによる通信が主目的とな...
**ピッチャー [#n65c9c62]
黒線の数をライトセンサーで数え、角度制御でマウンドまで...
#define TURNR(A) RotateMotorEx(OUT_BC,40,A,100,true,true...
#define TURNL(L) RotateMotorEx(OUT_BC,40,L,-100,true,tru...
#define TYOKUSIN OnFwdSync(OUT_BC,40,0);
#define CM(K) RotateMotorEx(OUT_BC,40,20.47315*K,0,true,...
#define HASSYA RotateMotor(OUT_A,-90,90);Wait(1000);Rota...
sub BASYO()
{
SetSensorLight(S1);
TYOKUSIN;
until(SENSOR_1<35);
Off(OUT_BC);
Wait(500);
CM(5);
Wait(500);
}
task main()
{
int SIREI;
TURNR(110);
CM(36);
TURNR(150);
repeat(3){
BASYO();
}
CM(-13);
TURNR(130);
until(BluetoothStatus(1)==NO_ERR);
RemotePlayTone(1,440,1000);
Wait(1000);
RemoteStartProgram(1,"DAGEKI.rxe"); /...
while(SIREI<12){ /...
ReceiveRemoteNumber(MAILBOX1,true,SIREI); /...
if(SIREI==11){ /...
PlaySound(SOUND_CLICK);
Wait(200);
HASSYA;
SIREI=0;
}
}
}
Bluetoothの通信によって、打席に着いたバッターの打撃時の...
**バッター [#s46c0948]
***「打席」に着くまで [#je79e436]
-各動作の定義
#define go_straight(t) RotateMotor(OUT_BC,50,t); ...
#define go_nonstop OnFwd(OUT_BC,50); ...
#define turn(t) RotateMotorEx(OUT_BC,60,t,100,tr...
#define turn_right OnFwd(OUT_B,40);
#define turn_right_slow OnFwd(OUT_B,40); OnRev(OUT_C,30);
#define turn_left OnFwd(OUT_C,40);
#define turn_left_slow OnFwd(OUT_C,40); OnRev(OUT_B,30);
#define go_line OnFwd(OUT_BC,40);
#define FOLLOW_TIME 5000 ...
#define SASETSU OnRev(OUT_BC,50); Wait(400); Off...
-ライントレースと角度制御
--位置に着くまでの動作は、三つに分かれている。最初は角度...
sub BEGIN()
{
Wait(1500); //ボタンを押してすぐに動き...
turn(120); //最初の位置で回転し、進む...
go_straight(1300); //目的の線付近まで近づく
PlaySound(SOUND_CLICK); //接近完了の合図
go_nonstop; //黒線発見まで前進
until(SENSOR_3<=40); //黒線を発見
Off(OUT_BC);
PlaySound(SOUND_CLICK); //黒線発見の合図
Wait(1000);
SASETSU; //ライントレースに移行する...
}
--続いて五秒間のライントレースに入る。ライントレースの目...
sub FOLLOW_LINE()
{
long t0=CurrentTick(); //現...
while(CurrentTick()-t0<FOLLOW_TIME){ //現...
if(SENSOR_3<=38){
turn_right; //条...
}else if(SENSOR_3<=45){
turn_right_slow; //条...
}else if(SENSOR_3<=50){
go_line; //条...
}else if(SENSOR_3<=59){
turn_left_slow; //条...
}else{
turn_left; //条...
}
}
Off(OUT_BC); //B手...
}
--最後に打席に入ってピッチャーと向かい合うように回転する。
sub READY()
{
go_straight(500); //Bの中に入る
OnRev(OUT_BC,50); //後退する
until(SENSOR_3<=40); //黒線検知
Off(OUT_BC);
PlaySound(SOUND_CLICK); //黒線検知の合図
Wait(1000);
turn(20); //進入角度微調整
go_straight(400); //Bの中に入る
turn(-70); //ピッチャーに向き合う
PlaySound(SOUND_UP); //打席に入った合図
}
--最初は超音波センサーを用いてピッチャーとの向きを合わせ...
***「打席」についてから [#n04b09a7]
-各動作の定義
#define CATCH Wait(500);RotateMotor(OUT_A,70,45);Wait(10...
#define UTU RotateMotor(OUT_A,-90,45);Wait(1000); ...
#define TURN(s,t) RotateMotorEx(OUT_BC,40,s,t,true,true)...
また、変数xを定義する。
int x=1; //打撃の回数カウント用
-ピッチャーサイドとの通信と打撃
ピッチャー側が親だが、バッターが送った数字によってピン...
sub BATTING()
{
SendRemoteNumber(0,MAILBOX1,11); //ピンポン玉を発...
Wait(1500);
CATCH; //ピンポン玉をキ...
if(x==1){ //xの値によって...
TURN(80,100);
UTU;
TURN(80,-100);
x = x+1;
} else if(x==2){
TURN(95,-100);
UTU;
TURN(95,100);
x = x+1;
} else if(x==3){
TURN(40,100);
UTU;
TURN(40,-100);
x = x+1;
} else if(x==4){
TURN(45,-100);
UTU;
TURN(45,100);
x = x+1;
} else {
TURN(45,-100);
UTU;
TURN(45,100);
x = x+1;
}
}
task main()
{
UTU;
while(x<6){ //5回まで打撃
BATTING();
}
SendRemoteNumber(0,MAILBOX1,12); //ピンポン玉の発...
}
**プログラムについての反省 [#i5989188]
バッター担当は、打席に着くまでのプログラミングをする人...
*ロボコン [#nc024e13]
**結果 [#ibba7e17]
3位。全体的に安定した動作ができたので、技術点を多くも...
**反省点 [#nf5502f6]
-ピッチャーの玉がまっすぐ飛んでこなかったため、キャッチで...
-右に回転する際紙が引っかかって角度がずれてしまった。
*まとめ [#hcbeadd1]
-これまで学んできた、基本動作、ライントレース、通信をフル...
-私たちのチームは特に最初の移動については安定した動作をす...
-超音波センサーを使いこなせなかったことも悔やまれるが、角...
-もう少し時間があれば、ハード、ソフト両面とも改善できたと...
-満足とはいえないまでも、これまで学んできたことを活用して...
*「ロボティクス入門ゼミ」を受講しての感想 [#f1e787f6]
ロボットに興味がある、という至極単純な理由で受講した本...
終了行:
[[2016b/Member]]
目次
#contents
*課題 [#tae1a51f]
**課題の内容 [#s1254745]
テーマとしては「野球ロボット」である。ピッチャー役とバ...
**コース [#h09300fd]
課題2で使用したコース上に5つのゴールを置いたものをフ...
#ref(2016b/Member/sennokiseki/Mission3/課題3コース.JPG,10...
*機体 [#sa866265]
今回は2つの機体を用いたので、バッターだけでなくピッチ...
**ピッチャー [#zfe10c03]
-「マウンド」に着くために用いるライトセンサーが付いている。
-ピンポン玉は機体の後ろに装填し、ストッパー部分が回転する...
-最初レールが地面に水平になるよう延長して取り付けられてい...
-問題点としては射出の威力が足りないこと、軌道が逸れやすい...
#ref(2016b/Member/sennokiseki/Mission3/ピッチャー.JPG,100...
**バッター [#g5269022]
***全体 [#m5298c17]
-初期の機体は各部固定が弱く分解しやすかったが、補強を重ね...
-前輪駆動で、「バット」はピッチャーに向き合うとき回転する...
***分解性 [#d5d0a27c]
各パーツが大きいが、それなりに分解しやすい機体になった。
#ref(2016b/Member/sennokiseki/Mission3/分解図.JPG,100,分解)
***「バット」 [#q4bfca5e]
-バットとは言うものの、打ち方としては、キャッチ→シュート...
-鉤爪のような形にすることで、キャッチした後ピンポン玉が転...
#ref(2016b/Member/sennokiseki/Mission3/鉤爪.JPG,100,バット)
***ライトセンサー [#k1a2609c]
一部ライントレースをするため、ライトセンサーを取り付け...
#ref(2016b/Member/sennokiseki/Mission3/正面.JPG,100,正面)
***後輪 [#u34fb1c0]
当初はキャスターを採用していたが、思いのほか曲がりにく...
***機体についての反省 [#j6ddbd08]
-サイズの規定が大きな壁だった。バット部分を横に取り付ける...
-ピッチャーから射出されるピンポン玉の軌道が逸れ気味だった...
*プログラム [#a749751d]
**通信 [#xa377af6]
本課題では、2つの機体のBluetoothによる通信が主目的とな...
**ピッチャー [#n65c9c62]
黒線の数をライトセンサーで数え、角度制御でマウンドまで...
#define TURNR(A) RotateMotorEx(OUT_BC,40,A,100,true,true...
#define TURNL(L) RotateMotorEx(OUT_BC,40,L,-100,true,tru...
#define TYOKUSIN OnFwdSync(OUT_BC,40,0);
#define CM(K) RotateMotorEx(OUT_BC,40,20.47315*K,0,true,...
#define HASSYA RotateMotor(OUT_A,-90,90);Wait(1000);Rota...
sub BASYO()
{
SetSensorLight(S1);
TYOKUSIN;
until(SENSOR_1<35);
Off(OUT_BC);
Wait(500);
CM(5);
Wait(500);
}
task main()
{
int SIREI;
TURNR(110);
CM(36);
TURNR(150);
repeat(3){
BASYO();
}
CM(-13);
TURNR(130);
until(BluetoothStatus(1)==NO_ERR);
RemotePlayTone(1,440,1000);
Wait(1000);
RemoteStartProgram(1,"DAGEKI.rxe"); /...
while(SIREI<12){ /...
ReceiveRemoteNumber(MAILBOX1,true,SIREI); /...
if(SIREI==11){ /...
PlaySound(SOUND_CLICK);
Wait(200);
HASSYA;
SIREI=0;
}
}
}
Bluetoothの通信によって、打席に着いたバッターの打撃時の...
**バッター [#s46c0948]
***「打席」に着くまで [#je79e436]
-各動作の定義
#define go_straight(t) RotateMotor(OUT_BC,50,t); ...
#define go_nonstop OnFwd(OUT_BC,50); ...
#define turn(t) RotateMotorEx(OUT_BC,60,t,100,tr...
#define turn_right OnFwd(OUT_B,40);
#define turn_right_slow OnFwd(OUT_B,40); OnRev(OUT_C,30);
#define turn_left OnFwd(OUT_C,40);
#define turn_left_slow OnFwd(OUT_C,40); OnRev(OUT_B,30);
#define go_line OnFwd(OUT_BC,40);
#define FOLLOW_TIME 5000 ...
#define SASETSU OnRev(OUT_BC,50); Wait(400); Off...
-ライントレースと角度制御
--位置に着くまでの動作は、三つに分かれている。最初は角度...
sub BEGIN()
{
Wait(1500); //ボタンを押してすぐに動き...
turn(120); //最初の位置で回転し、進む...
go_straight(1300); //目的の線付近まで近づく
PlaySound(SOUND_CLICK); //接近完了の合図
go_nonstop; //黒線発見まで前進
until(SENSOR_3<=40); //黒線を発見
Off(OUT_BC);
PlaySound(SOUND_CLICK); //黒線発見の合図
Wait(1000);
SASETSU; //ライントレースに移行する...
}
--続いて五秒間のライントレースに入る。ライントレースの目...
sub FOLLOW_LINE()
{
long t0=CurrentTick(); //現...
while(CurrentTick()-t0<FOLLOW_TIME){ //現...
if(SENSOR_3<=38){
turn_right; //条...
}else if(SENSOR_3<=45){
turn_right_slow; //条...
}else if(SENSOR_3<=50){
go_line; //条...
}else if(SENSOR_3<=59){
turn_left_slow; //条...
}else{
turn_left; //条...
}
}
Off(OUT_BC); //B手...
}
--最後に打席に入ってピッチャーと向かい合うように回転する。
sub READY()
{
go_straight(500); //Bの中に入る
OnRev(OUT_BC,50); //後退する
until(SENSOR_3<=40); //黒線検知
Off(OUT_BC);
PlaySound(SOUND_CLICK); //黒線検知の合図
Wait(1000);
turn(20); //進入角度微調整
go_straight(400); //Bの中に入る
turn(-70); //ピッチャーに向き合う
PlaySound(SOUND_UP); //打席に入った合図
}
--最初は超音波センサーを用いてピッチャーとの向きを合わせ...
***「打席」についてから [#n04b09a7]
-各動作の定義
#define CATCH Wait(500);RotateMotor(OUT_A,70,45);Wait(10...
#define UTU RotateMotor(OUT_A,-90,45);Wait(1000); ...
#define TURN(s,t) RotateMotorEx(OUT_BC,40,s,t,true,true)...
また、変数xを定義する。
int x=1; //打撃の回数カウント用
-ピッチャーサイドとの通信と打撃
ピッチャー側が親だが、バッターが送った数字によってピン...
sub BATTING()
{
SendRemoteNumber(0,MAILBOX1,11); //ピンポン玉を発...
Wait(1500);
CATCH; //ピンポン玉をキ...
if(x==1){ //xの値によって...
TURN(80,100);
UTU;
TURN(80,-100);
x = x+1;
} else if(x==2){
TURN(95,-100);
UTU;
TURN(95,100);
x = x+1;
} else if(x==3){
TURN(40,100);
UTU;
TURN(40,-100);
x = x+1;
} else if(x==4){
TURN(45,-100);
UTU;
TURN(45,100);
x = x+1;
} else {
TURN(45,-100);
UTU;
TURN(45,100);
x = x+1;
}
}
task main()
{
UTU;
while(x<6){ //5回まで打撃
BATTING();
}
SendRemoteNumber(0,MAILBOX1,12); //ピンポン玉の発...
}
**プログラムについての反省 [#i5989188]
バッター担当は、打席に着くまでのプログラミングをする人...
*ロボコン [#nc024e13]
**結果 [#ibba7e17]
3位。全体的に安定した動作ができたので、技術点を多くも...
**反省点 [#nf5502f6]
-ピッチャーの玉がまっすぐ飛んでこなかったため、キャッチで...
-右に回転する際紙が引っかかって角度がずれてしまった。
*まとめ [#hcbeadd1]
-これまで学んできた、基本動作、ライントレース、通信をフル...
-私たちのチームは特に最初の移動については安定した動作をす...
-超音波センサーを使いこなせなかったことも悔やまれるが、角...
-もう少し時間があれば、ハード、ソフト両面とも改善できたと...
-満足とはいえないまでも、これまで学んできたことを活用して...
*「ロボティクス入門ゼミ」を受講しての感想 [#f1e787f6]
ロボットに興味がある、という至極単純な理由で受講した本...
ページ名: