2012b/Member/tada0/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2012b/Member]]
#contents
*メンバー紹介 [#ua5aa52d]
-KARINA:現場監督
-tada0:変態
-mokomiti:変態
-shief:変態
*課題の内容 [#s133236e]
紙パックを所定の位置から所定の位置に運搬する。
**フィールドの説明 [#p5a6a870]
-フィールドは課題1で使用した紙を2枚つなぎ合わせる (向きは...
-白い紙パックと黒い紙パックがそれぞれ3個づつ対角のゴール(...
-2枚の紙のつなぎ目に断面が約3cm×4cmの角材を両面テープまた...
-黒い線の幅は20mmとする
**基本ルール [#rfe15230]
-白い紙パックと黒い紙パックを入れ替える。
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-課題1のスタート地点からスタートする。
-スタート時のロボットは2個を越えないこと (スタート後はい...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
-最終的にゴールに運び込まれた紙パックの数で点数を計算する。
**基本得点の計算方法 [#bb4c95a9]
-運びこまれた紙パックに1個つき3点5点。ただし、紙パックを2...
-紙パックが半分以上ゴールからはみ出している場合は、1個2点...
-一部がゴールの外にはみ出た出た紙パックの上に積み上げられ...
**技術点の計算方法 [#b0df3e34]
-以下の動作の精度・スピード・確実性などを含めた技術的な工...
-紙パックまでたどり着く動作 (3点)
-紙パックを運ぶ動作(2点)
-障害物を越える動作 (4点)
-2台以上のロボット、あるいは単体のロボットの場合は2台のRC...
-自立型のロボットとしての形や動作の美しさ、斬新さ(3点)
-その他 (4点)
2012年度後期ロボコンのページより引用
*ロボットの説明 [#u379c6e0]
これが私たちの作ったロボットです。
&ref(2012b/Member/tada0/Mission2/robo1.jpg,100%,画像の説...
&ref(2012b/Member/tada0/Mission2/robo2.jpg,100%,画像の説...
&ref(2012b/Member/tada0/Mission2/robo3.jpg,100%,画像の説...
アームの動作は開閉だけですが、以下のようにして角材の障壁...
&ref(2012b/Member/tada0/Mission2/arm1.png,100%,画像の説明);
&ref(2012b/Member/tada0/Mission2/arm2.png,100%,画像の説明);
パックを引き抜く際にある程度の力をかけ続ける必要があるた...
タッチセンサーはロボットの機体と角材の向きが垂直になるよ...
#ref(2012b/Member/tada0/Mission2/robo4.jpg,100%,画像の説...
アームが通信の邪魔になったため通信部分は後ろにつけました...
*プログラムの説明 [#rb936de1]
私たちはフィールドを下図のように設置したため、ロボットの...
#ref(2012b/Member/tada0/Mission2/robo_c_1.png,100%,画像の...
プログラムの内容は大きく分けて8つに分かれています。また...
1:目標のパックのある位置まで移動
2:パックをつかむ
3:180度回転し向かいのラインのある位置まで移動
4:パックの受け渡し場所まで移動
5:パックをはなす
6:パックの受け取り場所まで移動
7:パックをつかみ角材の向こうから引き抜く&向きを修正する
8:ゴール地点までパックを運ぶ
&ref(2012b/Member/tada0/Mission2/robo_c_3.png,100%,画像の...
&ref(2012b/Member/tada0/Mission2/robo_c_4.png,100%,画像の...
図はロボットの大まかな動きを表しています。(ラインの塗り...
また、使用したプログラムは以下の通りとなっています。
ライントレース関連のプログラムについては前回を参照してく...
#define ikichi 39
#define HIPOWER 7
#define LOWPOWER 2
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define set_power_H_2 SetPower(OUT_B,LOWPOWER);
#define go set_power_H;OnFwd(OUT_AC);
#define t_l_hp set_power_L;OnRev(OUT_A);OnFwd(OUT_C);
#define t_l_lp set_power_L;Off(OUT_A);OnFwd(OUT_C);
#define t_r_hp set_power_L;OnFwd(OUT_A);OnRev(OUT_C);
#define t_r_lp set_power_L;OnFwd(OUT_A);Off(OUT_C);
#define step 1
#define t_l_90 OnRev(OUT_A);OnFwd(OUT_C);Wait(90);
#define t_r_90 OnRev(OUT_C);OnFwd(OUT_A);Wait(90);
#define p_1 PlaySound(SOUND_CLICK);
#define p_2 PlaySound(SOUND_UP);
#define set_b_lp SetPower(OUT_B,LOWPOWER);
#define set_b_hp SetPower(OUT_B,HIPOWER);
int n=0;
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
OnFwd(OUT_AC);
Wait(200);
until(SENSOR_2<=ikichi-2);
ClearTimer(0);
while(FastTimer(0)<450){
if (SENSOR_2 < ikichi -5){t_l_hp}
else if (SENSOR_2 < ikichi -2){t_l_lp}
else if (SENSOR_2 < ikichi +2){go}
else if (SENSOR_2 < ikichi +5){t_r_lp}
else {t_r_hp}
Wait(step);
}
//1:ラインの左側をトレース&直角だと次へ//
do{
if (SENSOR_2 < ikichi -5){t_l_hp;n +=1;p_1;}
else if (SENSOR_2 < ikichi -2){t_l_lp;int n=0;}
else if (SENSOR_2 < ikichi +2){go;int n=0;}
else if (SENSOR_2 < ikichi +5){t_r_lp;int n=0;}
else {t_r_hp;int n=0;}
Wait(step);
}while(n<3);
p_2;
n=0;
//2:紙パックを探しだし掴む//
Off(OUT_AC);
t_r_hp;
Wait(15);
Off(OUT_AC);
Wait(100);
set_b_lp;
OnFwd(OUT_B);
Wait(100);
Off(OUT_B);
//3:180度回転&前身後線の上でとまる//
OnRev(OUT_AC);
Wait(30);
t_r_hp;
Wait(190);
OnFwd(OUT_AC);
Wait(100);
until(SENSOR_2 < ikichi -5);
Off(OUT_AC);
Wait(100);
//この点を基準に行動//
ClearTimer(2);
//4:一定時間内ラインの左側をトレース//
while(FastTimer(2)<100){
if (SENSOR_2 < ikichi -5){t_l_hp}
else if (SENSOR_2 < ikichi -2){t_l_lp}
else if (SENSOR_2 < ikichi +2){go}
else if (SENSOR_2 < ikichi +5){t_r_lp}
else {t_r_hp}
Wait(step);
}
//4:ラインの左側をトレース&タッチセンサーで判断//
do{
if ((SENSOR_1==1)&&(SENSOR_3==1)){n +=5;}
else if (SENSOR_2 <= ikichi -5){t_l_hp;int n=0;p_1;}
else if (SENSOR_2 <= ikichi -2){t_l_lp;int n=0;}
else if (SENSOR_2 <= ikichi +2){go;int n=0;}
else if (SENSOR_2 <= ikichi +5){t_r_lp;int n=0;}
else {t_r_hp;int n=0;}
Wait(step);
}while(n<3);
Off(OUT_ABC);
Wait(100);
//5:パックを離す//
OnRev(OUT_B);
Wait(80);
Off(OUT_B);
//6:パックの引き抜き場所へ//
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
t_l_hp;
Wait(70);
OnFwd(OUT_AC);
Wait(175);
t_r_hp;
Wait(70);
OnFwd(OUT_AC);
until((SENSOR_1==1)||(SENSOR_3==1));
Off(OUT_AC);
//7:パックの引き抜き//
set_power_H_2;
OnFwd(OUT_B);
Wait(80);
OnRev(OUT_AC);
Wait(200);
Off(OUT_C);
OnRev(OUT_A);
Wait(150);
Off(OUT_A);
//8:ラインを探す//
OnFwd(OUT_AC);
until(SENSOR_2<=ikichi-2);
Off(OUT_AC);
OnFwd(OUT_AC);
Wait(20);
Off(OUT_AC);
}
*まとめ・感想 [#gb158836]
難しかったです。どうやって角材の向こう側からパックを運ん...
ちなみにこれが6つのパックの入れ替えを目標としたプログラ...
パック黒?をAまで持っていく。
パック黒?を安地2まで持っていく。
パック黒?を安地1まで持っていく。
Gで通信をする。
Kからパック白?を持ってくる。
パック白?をパック黒?のあった場所に置く。
パック黒?を安置2からAまで持っていく。
Gで通信をする。
Kからパック白?を持ってくる。
パック白?をパック黒?のあった場所に置く。
パック黒?を安置1からAまで持っていく。
Gで通信をする。
Kからパック白?を持ってくる。
パック白?をパック黒?のあった場所に置く。
すべての動作が完了
#ref(2012b/Member/tada0/Mission2/robocon2012b.png,60%,画...
終了行:
[[2012b/Member]]
#contents
*メンバー紹介 [#ua5aa52d]
-KARINA:現場監督
-tada0:変態
-mokomiti:変態
-shief:変態
*課題の内容 [#s133236e]
紙パックを所定の位置から所定の位置に運搬する。
**フィールドの説明 [#p5a6a870]
-フィールドは課題1で使用した紙を2枚つなぎ合わせる (向きは...
-白い紙パックと黒い紙パックがそれぞれ3個づつ対角のゴール(...
-2枚の紙のつなぎ目に断面が約3cm×4cmの角材を両面テープまた...
-黒い線の幅は20mmとする
**基本ルール [#rfe15230]
-白い紙パックと黒い紙パックを入れ替える。
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-課題1のスタート地点からスタートする。
-スタート時のロボットは2個を越えないこと (スタート後はい...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
-最終的にゴールに運び込まれた紙パックの数で点数を計算する。
**基本得点の計算方法 [#bb4c95a9]
-運びこまれた紙パックに1個つき3点5点。ただし、紙パックを2...
-紙パックが半分以上ゴールからはみ出している場合は、1個2点...
-一部がゴールの外にはみ出た出た紙パックの上に積み上げられ...
**技術点の計算方法 [#b0df3e34]
-以下の動作の精度・スピード・確実性などを含めた技術的な工...
-紙パックまでたどり着く動作 (3点)
-紙パックを運ぶ動作(2点)
-障害物を越える動作 (4点)
-2台以上のロボット、あるいは単体のロボットの場合は2台のRC...
-自立型のロボットとしての形や動作の美しさ、斬新さ(3点)
-その他 (4点)
2012年度後期ロボコンのページより引用
*ロボットの説明 [#u379c6e0]
これが私たちの作ったロボットです。
&ref(2012b/Member/tada0/Mission2/robo1.jpg,100%,画像の説...
&ref(2012b/Member/tada0/Mission2/robo2.jpg,100%,画像の説...
&ref(2012b/Member/tada0/Mission2/robo3.jpg,100%,画像の説...
アームの動作は開閉だけですが、以下のようにして角材の障壁...
&ref(2012b/Member/tada0/Mission2/arm1.png,100%,画像の説明);
&ref(2012b/Member/tada0/Mission2/arm2.png,100%,画像の説明);
パックを引き抜く際にある程度の力をかけ続ける必要があるた...
タッチセンサーはロボットの機体と角材の向きが垂直になるよ...
#ref(2012b/Member/tada0/Mission2/robo4.jpg,100%,画像の説...
アームが通信の邪魔になったため通信部分は後ろにつけました...
*プログラムの説明 [#rb936de1]
私たちはフィールドを下図のように設置したため、ロボットの...
#ref(2012b/Member/tada0/Mission2/robo_c_1.png,100%,画像の...
プログラムの内容は大きく分けて8つに分かれています。また...
1:目標のパックのある位置まで移動
2:パックをつかむ
3:180度回転し向かいのラインのある位置まで移動
4:パックの受け渡し場所まで移動
5:パックをはなす
6:パックの受け取り場所まで移動
7:パックをつかみ角材の向こうから引き抜く&向きを修正する
8:ゴール地点までパックを運ぶ
&ref(2012b/Member/tada0/Mission2/robo_c_3.png,100%,画像の...
&ref(2012b/Member/tada0/Mission2/robo_c_4.png,100%,画像の...
図はロボットの大まかな動きを表しています。(ラインの塗り...
また、使用したプログラムは以下の通りとなっています。
ライントレース関連のプログラムについては前回を参照してく...
#define ikichi 39
#define HIPOWER 7
#define LOWPOWER 2
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define set_power_H_2 SetPower(OUT_B,LOWPOWER);
#define go set_power_H;OnFwd(OUT_AC);
#define t_l_hp set_power_L;OnRev(OUT_A);OnFwd(OUT_C);
#define t_l_lp set_power_L;Off(OUT_A);OnFwd(OUT_C);
#define t_r_hp set_power_L;OnFwd(OUT_A);OnRev(OUT_C);
#define t_r_lp set_power_L;OnFwd(OUT_A);Off(OUT_C);
#define step 1
#define t_l_90 OnRev(OUT_A);OnFwd(OUT_C);Wait(90);
#define t_r_90 OnRev(OUT_C);OnFwd(OUT_A);Wait(90);
#define p_1 PlaySound(SOUND_CLICK);
#define p_2 PlaySound(SOUND_UP);
#define set_b_lp SetPower(OUT_B,LOWPOWER);
#define set_b_hp SetPower(OUT_B,HIPOWER);
int n=0;
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
OnFwd(OUT_AC);
Wait(200);
until(SENSOR_2<=ikichi-2);
ClearTimer(0);
while(FastTimer(0)<450){
if (SENSOR_2 < ikichi -5){t_l_hp}
else if (SENSOR_2 < ikichi -2){t_l_lp}
else if (SENSOR_2 < ikichi +2){go}
else if (SENSOR_2 < ikichi +5){t_r_lp}
else {t_r_hp}
Wait(step);
}
//1:ラインの左側をトレース&直角だと次へ//
do{
if (SENSOR_2 < ikichi -5){t_l_hp;n +=1;p_1;}
else if (SENSOR_2 < ikichi -2){t_l_lp;int n=0;}
else if (SENSOR_2 < ikichi +2){go;int n=0;}
else if (SENSOR_2 < ikichi +5){t_r_lp;int n=0;}
else {t_r_hp;int n=0;}
Wait(step);
}while(n<3);
p_2;
n=0;
//2:紙パックを探しだし掴む//
Off(OUT_AC);
t_r_hp;
Wait(15);
Off(OUT_AC);
Wait(100);
set_b_lp;
OnFwd(OUT_B);
Wait(100);
Off(OUT_B);
//3:180度回転&前身後線の上でとまる//
OnRev(OUT_AC);
Wait(30);
t_r_hp;
Wait(190);
OnFwd(OUT_AC);
Wait(100);
until(SENSOR_2 < ikichi -5);
Off(OUT_AC);
Wait(100);
//この点を基準に行動//
ClearTimer(2);
//4:一定時間内ラインの左側をトレース//
while(FastTimer(2)<100){
if (SENSOR_2 < ikichi -5){t_l_hp}
else if (SENSOR_2 < ikichi -2){t_l_lp}
else if (SENSOR_2 < ikichi +2){go}
else if (SENSOR_2 < ikichi +5){t_r_lp}
else {t_r_hp}
Wait(step);
}
//4:ラインの左側をトレース&タッチセンサーで判断//
do{
if ((SENSOR_1==1)&&(SENSOR_3==1)){n +=5;}
else if (SENSOR_2 <= ikichi -5){t_l_hp;int n=0;p_1;}
else if (SENSOR_2 <= ikichi -2){t_l_lp;int n=0;}
else if (SENSOR_2 <= ikichi +2){go;int n=0;}
else if (SENSOR_2 <= ikichi +5){t_r_lp;int n=0;}
else {t_r_hp;int n=0;}
Wait(step);
}while(n<3);
Off(OUT_ABC);
Wait(100);
//5:パックを離す//
OnRev(OUT_B);
Wait(80);
Off(OUT_B);
//6:パックの引き抜き場所へ//
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
t_l_hp;
Wait(70);
OnFwd(OUT_AC);
Wait(175);
t_r_hp;
Wait(70);
OnFwd(OUT_AC);
until((SENSOR_1==1)||(SENSOR_3==1));
Off(OUT_AC);
//7:パックの引き抜き//
set_power_H_2;
OnFwd(OUT_B);
Wait(80);
OnRev(OUT_AC);
Wait(200);
Off(OUT_C);
OnRev(OUT_A);
Wait(150);
Off(OUT_A);
//8:ラインを探す//
OnFwd(OUT_AC);
until(SENSOR_2<=ikichi-2);
Off(OUT_AC);
OnFwd(OUT_AC);
Wait(20);
Off(OUT_AC);
}
*まとめ・感想 [#gb158836]
難しかったです。どうやって角材の向こう側からパックを運ん...
ちなみにこれが6つのパックの入れ替えを目標としたプログラ...
パック黒?をAまで持っていく。
パック黒?を安地2まで持っていく。
パック黒?を安地1まで持っていく。
Gで通信をする。
Kからパック白?を持ってくる。
パック白?をパック黒?のあった場所に置く。
パック黒?を安置2からAまで持っていく。
Gで通信をする。
Kからパック白?を持ってくる。
パック白?をパック黒?のあった場所に置く。
パック黒?を安置1からAまで持っていく。
Gで通信をする。
Kからパック白?を持ってくる。
パック白?をパック黒?のあった場所に置く。
すべての動作が完了
#ref(2012b/Member/tada0/Mission2/robocon2012b.png,60%,画...
ページ名: