2013a/Member/wani/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013a/Member]]
*今回の課題説明 [#l742d7cd]
課題2では課題1のコースを2つ組み合わせ新たなコースを...
前回と同じ部品点数で物を投げる・受け取ると言う動作を加え...
**コース解説 [#ke38d8a1]
1つのコースを往復することが課題の最終目標であった。
得点を獲得するためには計10箇所のポイントをクリアする必...
ここで最も重要なことは途中で失敗をするとそれ以降の得点...
開発はこの事を意識してやらなくてはならなかった。
つまり最初のボールを掴む動作を失敗した時点で、得点は取れ...
自分が開発を進める中で気を使った部分はこの初めのボールを...
**詳しいルールリンク [#f388ac68]
http://yakushi.shinshu-u.ac.jp/robotics/?2013a%2FMission2
*機体の説明 [#qc3fc9c3]
機体には“染五郎”と言う名前を付けた。&br;
機体は出来るだけ同じプログラムで動くように同じ設計の機...
前回から使っていた機体を改良して使った。
しかし、前回の機体と今回の機体では掴む動作の他に投げる動...
掴む動作と投げる動作を逆向きにすることで2つの動作を1つ...
&ref(11111.jpg);機体の全体像&br;
&ref(33333.jpg);投げる動作&br;
&ref(44444.jpg);掴む動作&br;
*プログラムの説明 [#bf51ade5]
プルグラムは基本的に前回の課題で扱ったものを基準に作っ...
なのでここでは新しく使いされたマクロと主なプログラムのア...
まず今回の課題でつかされたプログラムは共同で作業を行っ...
プログラムを参考にさしていただいたのはチームメンバーの"ry...
このプログラムのマクロで追加されたのは基本的に投げる部分...
このプログラムのほとんどは以前の課題で使ってきたプログラ...
しかし、細かい部分では調整が必要だった。
特に90°を正確に曲がるところが気を使った。
**プログラム添付 [#o0674b68]
////////////////////////////ryu/////////////////////////...
#define BLACK_02 35 //
#define WHITE_01 50 //
#define WHITE_02 60 //
#define SPEED 30 //
#define go_forward OnFwd(OUT_AC,SPEED); //
#define turn_right OnRev(OUT_A,SPEED);OnFwd(OUT_C,SPEED)...
#define turn_left OnFwd(OUT_A,SPEED);OnRev(OUT_C,SPEED);...
#define right Off(OUT_A);OnFwd(OUT_C,SPEED); //
#define left OnFwd(OUT_A,SPEED);Off(OUT_C); //
////////////////////////////////////////////////////////...
//以下のマクロは次のURLに記載してあります
//http://yakushi.shinshu-u.ac.jp/robotics/?2013a%2FMembe...
//ここから
#define STEP 1
#define CENTER 45
#define CCC 14000
#define SPEED_H 45
#define SPEED_L 25
#define turn_R Off(OUT_A); OnFwd(OUT_C,SPEED_L);
#define turn_L Off(OUT_C); OnFwd(OUT_A,SPEED_L);
#define turn_SR OnRev(OUT_A,SPEED_L); OnFwd(OUT_C,SPEED_...
#define turn_SL OnRev(OUT_C,SPEED_L); OnFwd(OUT_A,SPEED_...
#define go_F OnFwd(OUT_AC,SPEED_H);
#define nMAX 250
#define short_break Off(OUT_AC);Wait(400);
#define CROSS_TIME 400
#define cross_line OnFwd(OUT_A,SPEED_L);OnFwd(OUT_C,SPEE...
#define cross OnFwd(OUT_C,SPEED_L);OnFwd(OUT_A,SPEED_L);...
#define go_b OnFwd(OUT_A,-40);OnFwd(OUT_C,-40);
//ここまで(URL:http://yakushi.shinshu-u.ac.jp/robotics...
#define catch OnFwd(OUT_B,33);Wait(600);Off(OUT_B);//ボ...
#define throw OnRev(OUT_B,80);Wait(1000);Off(OUT_B); //...
////////////////////////////ryu/////////////////////////...
sub right_n() //
{ //
if (SENSOR_1<BLACK_01) {turn_left;} //
else if (SENSOR_1<BLACK_02) {left;} //
else if (SENSOR_1<WHITE_01) {go_forward;} //
else if (SENSOR_1<WHITE_02) {right;} //
else {turn_right;}Wait(STEP); //
} //
//
sub left_n() //
{ //
if (SENSOR_1<BLACK_01) { //
turn_right; //
} //
else if (SENSOR_1<BLACK_02) { //
right; //
} //
else if (SENSOR_1<WHITE_01) { //
go_forward; //
} //
else if (SENSOR_1<WHITE_02) { //
left; //
} //
else { //
turn_left; //
} //
Wait(STEP); //
} //
////////////////////////////////////////////////////////...
//以下のサブルーチンの説明は次のURLを参照
//ここから(URL:http://yakushi.shinshu-u.ac.jp/robotics...
sub trace_R()
{
int n;
while(true) {
while(n < nMAX) {
if(SENSOR_1 < CENTER-12) {
turn_SL;
n++;
} else {
if(SENSOR_1 < CENTER-6) {
turn_L;
} else if(SENSOR_1 < CENTER+6) {
go_F;
} else if(SENSOR_1 < CENTER+12) {
turn_SL turn_R;
} else {
turn_SR;
}
n=0;
}
Wait(STEP);
}
short_break;
turn_SR;Wait(nMAX*STEP*2);
cross;
n=0;
break;
}
}
sub trace_L()
{
int n = 0;
while(true) {
while(n < nMAX) {
if(SENSOR_1 < CENTER-12) {
turn_SR;
n++;
} else {
if(SENSOR_1 < CENTER-6) {
turn_R;
} else if(SENSOR_1 < CENTER+6) {
go_F;
} else if(SENSOR_1 < CENTER+12) {
turn_L;
} else {
turn_SL;
}
n=0;
}
Wait(STEP);
}
short_break;
turn_SL;Wait(nMAX*STEP);
cross;
n=0;
break;
}
}
//ここまで(URL:http://yakushi.shinshu-u.ac.jp/robotics...
task main()
{
//センサーの起動
SetSensorLight(S1);
SetSensorLight(S2);
//時間制御のための変数
long timess = 0;
//ここから機体は動き出す
trace_L();
Wait(1000);
go_b;
Wait(950);
turn_SL;
Wait(800);
PlaySound(SOUND_CLICK);//ブザー1(ブザーは動作確認のた...
go_F;
Wait(550);
go_F;
catch;
while(SENSOR_1 > CENTER+8 )
{
Wait(STEP);
}
PlaySound(SOUND_CLICK);//ブザー2
Off(OUT_AC);
/////////////////////////////ボールキャッチ後//////////...
go_F;
Wait(90);
turn_SR;
Wait(750);
PlaySound(SOUND_CLICK);//ブザー3
Wait(1000);
trace_R();
turn_SR;
Wait(700);
//////////////////////////////二回目の交差点終了///////...
trace_L();
Wait(1000);
PlaySound(SOUND_CLICK);
PlaySound(SOUND_CLICK);
//////////////////////////////////三回目の交差点認識///...
go_b;
Wait(800);
Off(OUT_AC);
Wait(100);
RotateMotor(OUT_A,-70,410);//90°向きを変える
throw;
RotateMotor(OUT_A,70,470);//向きをもどす。少し多めに回...
go_F;
Wait(200);
///////////////////////////////////一回目の発射終了////...
timess = CurrentTick();
while(CurrentTick() - timess < 4000) {
left_n();
}
Off(OUT_AC);
Wait(2000);
RotateMotor(OUT_A,-70,440);
Off(OUT_AC);
Wait(10000);
catch;
catch;
RotateMotor(OUT_A,70,440);
///////////////////////////////////一回目のボールキャッ...
go_F;
Wait(1700);
timess = CurrentTick();
Off(OUT_AC);
RotateMotor(OUT_A,-70,460);
Wait(2000);
throw;
///////////////////////////////////行きの最後のパス////...
}
*工夫した点・苦労した点 [#ne959837]
自分が担当した初めのボールを取りにいく部分と初めの投げ...
今回のプログラミングでは、出来るだけ一定の動きだけで動...
最も苦労した部分は最初のボールを取る部分だった。
一度ラインから離れるためその後の動作をどうするかで苦労し...
何度もライン際の動きを観察しながらもっとも良い動きを試行...
最終的に本番ではうまくいって良かった。&br;
また、ボールを投げる動作への移り変わるがなかなか難しか...
機種の向きや投げる強さは何回か繰り替え調整することで出来...
*反省・感想 [#zb05839e]
最終課題はなかなか難しかった。最終日に空き缶に当てるよ...
ロボコンでの自分の力を十分に発揮するためには事前に成功す...
今回のようなハード制御のプログラミングは珍しいので特別...
終了行:
[[2013a/Member]]
*今回の課題説明 [#l742d7cd]
課題2では課題1のコースを2つ組み合わせ新たなコースを...
前回と同じ部品点数で物を投げる・受け取ると言う動作を加え...
**コース解説 [#ke38d8a1]
1つのコースを往復することが課題の最終目標であった。
得点を獲得するためには計10箇所のポイントをクリアする必...
ここで最も重要なことは途中で失敗をするとそれ以降の得点...
開発はこの事を意識してやらなくてはならなかった。
つまり最初のボールを掴む動作を失敗した時点で、得点は取れ...
自分が開発を進める中で気を使った部分はこの初めのボールを...
**詳しいルールリンク [#f388ac68]
http://yakushi.shinshu-u.ac.jp/robotics/?2013a%2FMission2
*機体の説明 [#qc3fc9c3]
機体には“染五郎”と言う名前を付けた。&br;
機体は出来るだけ同じプログラムで動くように同じ設計の機...
前回から使っていた機体を改良して使った。
しかし、前回の機体と今回の機体では掴む動作の他に投げる動...
掴む動作と投げる動作を逆向きにすることで2つの動作を1つ...
&ref(11111.jpg);機体の全体像&br;
&ref(33333.jpg);投げる動作&br;
&ref(44444.jpg);掴む動作&br;
*プログラムの説明 [#bf51ade5]
プルグラムは基本的に前回の課題で扱ったものを基準に作っ...
なのでここでは新しく使いされたマクロと主なプログラムのア...
まず今回の課題でつかされたプログラムは共同で作業を行っ...
プログラムを参考にさしていただいたのはチームメンバーの"ry...
このプログラムのマクロで追加されたのは基本的に投げる部分...
このプログラムのほとんどは以前の課題で使ってきたプログラ...
しかし、細かい部分では調整が必要だった。
特に90°を正確に曲がるところが気を使った。
**プログラム添付 [#o0674b68]
////////////////////////////ryu/////////////////////////...
#define BLACK_02 35 //
#define WHITE_01 50 //
#define WHITE_02 60 //
#define SPEED 30 //
#define go_forward OnFwd(OUT_AC,SPEED); //
#define turn_right OnRev(OUT_A,SPEED);OnFwd(OUT_C,SPEED)...
#define turn_left OnFwd(OUT_A,SPEED);OnRev(OUT_C,SPEED);...
#define right Off(OUT_A);OnFwd(OUT_C,SPEED); //
#define left OnFwd(OUT_A,SPEED);Off(OUT_C); //
////////////////////////////////////////////////////////...
//以下のマクロは次のURLに記載してあります
//http://yakushi.shinshu-u.ac.jp/robotics/?2013a%2FMembe...
//ここから
#define STEP 1
#define CENTER 45
#define CCC 14000
#define SPEED_H 45
#define SPEED_L 25
#define turn_R Off(OUT_A); OnFwd(OUT_C,SPEED_L);
#define turn_L Off(OUT_C); OnFwd(OUT_A,SPEED_L);
#define turn_SR OnRev(OUT_A,SPEED_L); OnFwd(OUT_C,SPEED_...
#define turn_SL OnRev(OUT_C,SPEED_L); OnFwd(OUT_A,SPEED_...
#define go_F OnFwd(OUT_AC,SPEED_H);
#define nMAX 250
#define short_break Off(OUT_AC);Wait(400);
#define CROSS_TIME 400
#define cross_line OnFwd(OUT_A,SPEED_L);OnFwd(OUT_C,SPEE...
#define cross OnFwd(OUT_C,SPEED_L);OnFwd(OUT_A,SPEED_L);...
#define go_b OnFwd(OUT_A,-40);OnFwd(OUT_C,-40);
//ここまで(URL:http://yakushi.shinshu-u.ac.jp/robotics...
#define catch OnFwd(OUT_B,33);Wait(600);Off(OUT_B);//ボ...
#define throw OnRev(OUT_B,80);Wait(1000);Off(OUT_B); //...
////////////////////////////ryu/////////////////////////...
sub right_n() //
{ //
if (SENSOR_1<BLACK_01) {turn_left;} //
else if (SENSOR_1<BLACK_02) {left;} //
else if (SENSOR_1<WHITE_01) {go_forward;} //
else if (SENSOR_1<WHITE_02) {right;} //
else {turn_right;}Wait(STEP); //
} //
//
sub left_n() //
{ //
if (SENSOR_1<BLACK_01) { //
turn_right; //
} //
else if (SENSOR_1<BLACK_02) { //
right; //
} //
else if (SENSOR_1<WHITE_01) { //
go_forward; //
} //
else if (SENSOR_1<WHITE_02) { //
left; //
} //
else { //
turn_left; //
} //
Wait(STEP); //
} //
////////////////////////////////////////////////////////...
//以下のサブルーチンの説明は次のURLを参照
//ここから(URL:http://yakushi.shinshu-u.ac.jp/robotics...
sub trace_R()
{
int n;
while(true) {
while(n < nMAX) {
if(SENSOR_1 < CENTER-12) {
turn_SL;
n++;
} else {
if(SENSOR_1 < CENTER-6) {
turn_L;
} else if(SENSOR_1 < CENTER+6) {
go_F;
} else if(SENSOR_1 < CENTER+12) {
turn_SL turn_R;
} else {
turn_SR;
}
n=0;
}
Wait(STEP);
}
short_break;
turn_SR;Wait(nMAX*STEP*2);
cross;
n=0;
break;
}
}
sub trace_L()
{
int n = 0;
while(true) {
while(n < nMAX) {
if(SENSOR_1 < CENTER-12) {
turn_SR;
n++;
} else {
if(SENSOR_1 < CENTER-6) {
turn_R;
} else if(SENSOR_1 < CENTER+6) {
go_F;
} else if(SENSOR_1 < CENTER+12) {
turn_L;
} else {
turn_SL;
}
n=0;
}
Wait(STEP);
}
short_break;
turn_SL;Wait(nMAX*STEP);
cross;
n=0;
break;
}
}
//ここまで(URL:http://yakushi.shinshu-u.ac.jp/robotics...
task main()
{
//センサーの起動
SetSensorLight(S1);
SetSensorLight(S2);
//時間制御のための変数
long timess = 0;
//ここから機体は動き出す
trace_L();
Wait(1000);
go_b;
Wait(950);
turn_SL;
Wait(800);
PlaySound(SOUND_CLICK);//ブザー1(ブザーは動作確認のた...
go_F;
Wait(550);
go_F;
catch;
while(SENSOR_1 > CENTER+8 )
{
Wait(STEP);
}
PlaySound(SOUND_CLICK);//ブザー2
Off(OUT_AC);
/////////////////////////////ボールキャッチ後//////////...
go_F;
Wait(90);
turn_SR;
Wait(750);
PlaySound(SOUND_CLICK);//ブザー3
Wait(1000);
trace_R();
turn_SR;
Wait(700);
//////////////////////////////二回目の交差点終了///////...
trace_L();
Wait(1000);
PlaySound(SOUND_CLICK);
PlaySound(SOUND_CLICK);
//////////////////////////////////三回目の交差点認識///...
go_b;
Wait(800);
Off(OUT_AC);
Wait(100);
RotateMotor(OUT_A,-70,410);//90°向きを変える
throw;
RotateMotor(OUT_A,70,470);//向きをもどす。少し多めに回...
go_F;
Wait(200);
///////////////////////////////////一回目の発射終了////...
timess = CurrentTick();
while(CurrentTick() - timess < 4000) {
left_n();
}
Off(OUT_AC);
Wait(2000);
RotateMotor(OUT_A,-70,440);
Off(OUT_AC);
Wait(10000);
catch;
catch;
RotateMotor(OUT_A,70,440);
///////////////////////////////////一回目のボールキャッ...
go_F;
Wait(1700);
timess = CurrentTick();
Off(OUT_AC);
RotateMotor(OUT_A,-70,460);
Wait(2000);
throw;
///////////////////////////////////行きの最後のパス////...
}
*工夫した点・苦労した点 [#ne959837]
自分が担当した初めのボールを取りにいく部分と初めの投げ...
今回のプログラミングでは、出来るだけ一定の動きだけで動...
最も苦労した部分は最初のボールを取る部分だった。
一度ラインから離れるためその後の動作をどうするかで苦労し...
何度もライン際の動きを観察しながらもっとも良い動きを試行...
最終的に本番ではうまくいって良かった。&br;
また、ボールを投げる動作への移り変わるがなかなか難しか...
機種の向きや投げる強さは何回か繰り替え調整することで出来...
*反省・感想 [#zb05839e]
最終課題はなかなか難しかった。最終日に空き缶に当てるよ...
ロボコンでの自分の力を十分に発揮するためには事前に成功す...
今回のようなハード制御のプログラミングは珍しいので特別...
ページ名: