2013a/Member/Hiko/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*ロボットの紹介 [#c5cbaaad]
**全体図 [#m7f088db]
#ref(2013a/Member/Hiko/Mission2/08-07@09-49-25-823.jpg,60%)
ロボットの大きさは、課題1の時に比べ小さめにまとまり、軽...
**工夫した点 [#s84256f6]
-課題1の反省を踏まえ、重心を真ん中に持ってくることでロボ...
**苦労した点 [#iaa7d145]
-この課題が出されたときは、ボールを取って、パスをし、シュ...
**ボールをつかむところ [#y58d641b]
#ref(2013a/Member/Hiko/Mission2/08-07@09-49-43-254.jpg,60%)
#ref(2013a/Member/Hiko/Mission2/08-07@09-49-10-268.jpg,60%)
この部分がロボットの中で一番こだわった部分です。ボールを...
**工夫した点 [#l5844703]
-ボールをつかむところの紫の部分を特に工夫しました。一見適...
**苦労した点 [#a80211f0]
-最初は、ボールを横から挟もうとしていました。しかし何度や...
**後輪 [#p02d640b]
#ref(2013a/Member/Hiko/Mission2/08-07@09-50-04-532.jpg,60%)
後輪をつけることで、少し後ろに重心があるロボット全体のバ...
**工夫した点 [#iba1e38e]
-車輪だけを取り外すことで、ロボットを安定して持つことがで...
**苦労した点 [#q4d9c27a]
-車輪を低い位置につけすぎると、車体の後方が浮き上がってし...
*コース攻略 [#k6a1f254]
#ref(robocon2013Hiko.png)
ロボコンのフィールド平面図
-フィールドの説明
フィールドは課題1で使用した紙を2枚つなぎ合わせる
図のように直線を二本加える
図のように空き缶を配置する(緑色)
-課題1の経験を生かし、今回もタイマーによって動きの異なる...
-赤外線通信をせずに今回の課題に取り組みました。
**コース攻略における課題 [#ye506d78]
+ボールをつかむ
-まず最初に課題になったのは、ボールをつかむことです。ボー...
+パス
-ボールをつかむのがうまく行った場合に次に課題になるのが、...
+シュート
-缶にボールを当てるのは、一見難しいことに思えますが、実際...
*ルール [#ubced72e]
基本ルール
競技時間は審判が続行不能と判断するまで、あるいは...
書き足した直線部からスタートする。
図の上部からスタートしたロボットAがピンポン玉を取...
直線部までピンポン玉を持ってくる (1)
直線部に入ってからロボットBへパスを送る (2)
ロボットBは直線部でパスを受け取る
ロボットBは直線部でパスを送る (3)
ロボットAは直線部でパスを受けとる
ロボットAは直線部でパスを送る (4)
ロボットBは直線部でパスを受け取る
ロボットBがゴールの空き缶の近くまでピンポン玉を運...
ロボットBはシュートをした後もう一つのピンポン玉を...
以後は、これまでのAとBの役割を反対にして、パスを...
開始の合図から5秒以内にスタートボタンを押す作業...
競技が終了するまで、ロボットに触ったり人間が遠隔...
途中でうまく動かなくなった場合、1回限り再スター...
*プログラムの説明 [#q87c2890]
↓プログラムの定義
#define THRESHOLD 37 // 閾値
#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_N SetPower(OUT_B,LOWPOWER); // ボール...
#define go_fwd set_power_H; OnFwd(OUT_AC); // 直線を走る...
#define arm_fwd set_power_N; OnFwd(OUT_B);Wait(30);Off(O...
#define arm_bwd set_power_N; OnRev(OUT_B);Wait(30);Off(O...
#define turn_left1 set_power_L ;
OnFwd(OUT_C);OnRev(OUT_A); // 右旋回
#define turn_left0 set_power_L ;
OnFwd(OUT_C);Off(OUT_A); // 右回転
#define turn_right0 set_power_L ;
OnFwd(OUT_A);Off(OUT_C); // 左回転
#define turn_right1 set_power_L ;
OnFwd(OUT_A);OnRev(OUT_C); // 左旋回
#define STEP 1
#define nMAX 150
#define short_break Off(OUT_AC); Wait(100);
#define CROSS_TIME 300
#define cross_line set_power_L;
OnFwd(OUT_A);OnRev(OUT_C);
Wait(CROSS_TIME);short_break;
↓左周りでライントレース
sub followline_l () {
int nOnline=0;
int MOVETIME;
MOVETIME=0;
SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2に光セン...
PlaySound(SOUND_UP); // 音を鳴らして、順調に動いているか...
MOVETIME=MOVETIME+500;
while(nOnline < nMAX && FastTimer(0)<=MOVETIME){
if(SENSOR_2< THRESHOLD -14) {
turn_left1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -10){
turn_left0;
}else if(SENSOR_2< THRESHOLD -7){
go_fwd;
}else if(SENSOR_2< THRESHOLD -1){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP*10);
}
}
↓右回りでライントレース
sub followline_r () {
int nOnline=0;
int MOVETIME;
MOVETIME=0;
SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2に光センサ...
MOVETIME=MOVETIME+500;
PlaySound(SOUND_DOWN); // 音を鳴らして、うまくいっている...
while(nOnline < nMAX && FastTimer(0)<=MOVETIME){
if(SENSOR_2< THRESHOLD -14) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -10){
turn_right0;
}else if(SENSOR_2< THRESHOLD -7){
go_fwd;
}else if(SENSOR_2< THRESHOLD -1){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP*10);
}
}
↓再び左回りでライントレース
sub followline_l1 () {
int MOVETIME;
MOVETIME=0;
SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2に光セン...
MOVETIME=MOVETIME+500;
PlaySound(SOUND_LOW_BEEP); // 音を鳴らして、うまくいって...
while(FastTimer(0)<=MOVETIME){
if(SENSOR_2< THRESHOLD -14) {
turn_left1;
}else{
if(SENSOR_2< THRESHOLD -10){
turn_left0;
}else if(SENSOR_2< THRESHOLD -7){
go_fwd;
}else if(SENSOR_2< THRESHOLD -1){
turn_right0;
}else{
turn_right1;
}
Wait(STEP*10);
}
}
}
↓ここからメインタスク
task main () {
SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2に光セン...
ClearTimer(0);
int nOnline;
int MOVETIME;
while(FastTimer(0)<=700){
followline_l();
}
Off(OUT_AC);
Wait(50);
PlaySound(SOUND_DOUBLE_BEEP);
ClearTimer(0);
while(FastTimer(0)<=700){
followline_l(); // 左周りでライントレース
}
Off(OUT_AC);
Wait(50);
PlaySound(SOUND_DOUBLE_BEEP);
ClearTimer(0);
turn_right0;
Wait(100);
Off(OUT_AC);
Wait(50);
go_fwd;
Wait(50);
Off(OUT_AC);
Wait(50);
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
turn_left0;
Wait(100);
Off(OUT_AC);
Wait(50);
while(FastTimer(0)<=700){
followline_l(); // 左周りでライントレース
}
Off(OUT_AC);
Wait(50);
PlaySound(SOUND_DOUBLE_BEEP); // 音を鳴らして、うまくい...
ClearTimer(0);
while(FastTimer(0)<=700){
followline_l1();
}
PlaySound(SOUND_DOUBLE_BEEP); // 音を鳴らして、うまくい...
turn_left1;
Wait(30);
ClearTimer(0);
while(FastTimer(0)<=700){
followline_r();
}
Off(OUT_AC);
Wait(50);
PlaySound(SOUND_CLICK); // 音を鳴らして、うまくいってい...
turn_left1;
Wait(20);
ClearTimer(0);
while(FastTimer(0)<=700){
followline_l(); // 左周りでライントレース
}
}
-このプログラムのポイントは、課題1でプログラムが長くなり...
-タイマーを使っているので、足場や部屋の明るさが少しでも変...
-動作を一つ一つするごとに音を鳴らすことで、どこがうまくい...
*まとめ [#r36f88f5]
-ロボットにパスをさせるというのは、自分が同じことをするの...
-一回目と同じように、今回もチームのみんなに頼りきりになっ...
-私自身が、工学部機械システム工学科なこともあり、自分で設...
終了行:
*ロボットの紹介 [#c5cbaaad]
**全体図 [#m7f088db]
#ref(2013a/Member/Hiko/Mission2/08-07@09-49-25-823.jpg,60%)
ロボットの大きさは、課題1の時に比べ小さめにまとまり、軽...
**工夫した点 [#s84256f6]
-課題1の反省を踏まえ、重心を真ん中に持ってくることでロボ...
**苦労した点 [#iaa7d145]
-この課題が出されたときは、ボールを取って、パスをし、シュ...
**ボールをつかむところ [#y58d641b]
#ref(2013a/Member/Hiko/Mission2/08-07@09-49-43-254.jpg,60%)
#ref(2013a/Member/Hiko/Mission2/08-07@09-49-10-268.jpg,60%)
この部分がロボットの中で一番こだわった部分です。ボールを...
**工夫した点 [#l5844703]
-ボールをつかむところの紫の部分を特に工夫しました。一見適...
**苦労した点 [#a80211f0]
-最初は、ボールを横から挟もうとしていました。しかし何度や...
**後輪 [#p02d640b]
#ref(2013a/Member/Hiko/Mission2/08-07@09-50-04-532.jpg,60%)
後輪をつけることで、少し後ろに重心があるロボット全体のバ...
**工夫した点 [#iba1e38e]
-車輪だけを取り外すことで、ロボットを安定して持つことがで...
**苦労した点 [#q4d9c27a]
-車輪を低い位置につけすぎると、車体の後方が浮き上がってし...
*コース攻略 [#k6a1f254]
#ref(robocon2013Hiko.png)
ロボコンのフィールド平面図
-フィールドの説明
フィールドは課題1で使用した紙を2枚つなぎ合わせる
図のように直線を二本加える
図のように空き缶を配置する(緑色)
-課題1の経験を生かし、今回もタイマーによって動きの異なる...
-赤外線通信をせずに今回の課題に取り組みました。
**コース攻略における課題 [#ye506d78]
+ボールをつかむ
-まず最初に課題になったのは、ボールをつかむことです。ボー...
+パス
-ボールをつかむのがうまく行った場合に次に課題になるのが、...
+シュート
-缶にボールを当てるのは、一見難しいことに思えますが、実際...
*ルール [#ubced72e]
基本ルール
競技時間は審判が続行不能と判断するまで、あるいは...
書き足した直線部からスタートする。
図の上部からスタートしたロボットAがピンポン玉を取...
直線部までピンポン玉を持ってくる (1)
直線部に入ってからロボットBへパスを送る (2)
ロボットBは直線部でパスを受け取る
ロボットBは直線部でパスを送る (3)
ロボットAは直線部でパスを受けとる
ロボットAは直線部でパスを送る (4)
ロボットBは直線部でパスを受け取る
ロボットBがゴールの空き缶の近くまでピンポン玉を運...
ロボットBはシュートをした後もう一つのピンポン玉を...
以後は、これまでのAとBの役割を反対にして、パスを...
開始の合図から5秒以内にスタートボタンを押す作業...
競技が終了するまで、ロボットに触ったり人間が遠隔...
途中でうまく動かなくなった場合、1回限り再スター...
*プログラムの説明 [#q87c2890]
↓プログラムの定義
#define THRESHOLD 37 // 閾値
#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_N SetPower(OUT_B,LOWPOWER); // ボール...
#define go_fwd set_power_H; OnFwd(OUT_AC); // 直線を走る...
#define arm_fwd set_power_N; OnFwd(OUT_B);Wait(30);Off(O...
#define arm_bwd set_power_N; OnRev(OUT_B);Wait(30);Off(O...
#define turn_left1 set_power_L ;
OnFwd(OUT_C);OnRev(OUT_A); // 右旋回
#define turn_left0 set_power_L ;
OnFwd(OUT_C);Off(OUT_A); // 右回転
#define turn_right0 set_power_L ;
OnFwd(OUT_A);Off(OUT_C); // 左回転
#define turn_right1 set_power_L ;
OnFwd(OUT_A);OnRev(OUT_C); // 左旋回
#define STEP 1
#define nMAX 150
#define short_break Off(OUT_AC); Wait(100);
#define CROSS_TIME 300
#define cross_line set_power_L;
OnFwd(OUT_A);OnRev(OUT_C);
Wait(CROSS_TIME);short_break;
↓左周りでライントレース
sub followline_l () {
int nOnline=0;
int MOVETIME;
MOVETIME=0;
SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2に光セン...
PlaySound(SOUND_UP); // 音を鳴らして、順調に動いているか...
MOVETIME=MOVETIME+500;
while(nOnline < nMAX && FastTimer(0)<=MOVETIME){
if(SENSOR_2< THRESHOLD -14) {
turn_left1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -10){
turn_left0;
}else if(SENSOR_2< THRESHOLD -7){
go_fwd;
}else if(SENSOR_2< THRESHOLD -1){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP*10);
}
}
↓右回りでライントレース
sub followline_r () {
int nOnline=0;
int MOVETIME;
MOVETIME=0;
SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2に光センサ...
MOVETIME=MOVETIME+500;
PlaySound(SOUND_DOWN); // 音を鳴らして、うまくいっている...
while(nOnline < nMAX && FastTimer(0)<=MOVETIME){
if(SENSOR_2< THRESHOLD -14) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -10){
turn_right0;
}else if(SENSOR_2< THRESHOLD -7){
go_fwd;
}else if(SENSOR_2< THRESHOLD -1){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP*10);
}
}
↓再び左回りでライントレース
sub followline_l1 () {
int MOVETIME;
MOVETIME=0;
SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2に光セン...
MOVETIME=MOVETIME+500;
PlaySound(SOUND_LOW_BEEP); // 音を鳴らして、うまくいって...
while(FastTimer(0)<=MOVETIME){
if(SENSOR_2< THRESHOLD -14) {
turn_left1;
}else{
if(SENSOR_2< THRESHOLD -10){
turn_left0;
}else if(SENSOR_2< THRESHOLD -7){
go_fwd;
}else if(SENSOR_2< THRESHOLD -1){
turn_right0;
}else{
turn_right1;
}
Wait(STEP*10);
}
}
}
↓ここからメインタスク
task main () {
SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2に光セン...
ClearTimer(0);
int nOnline;
int MOVETIME;
while(FastTimer(0)<=700){
followline_l();
}
Off(OUT_AC);
Wait(50);
PlaySound(SOUND_DOUBLE_BEEP);
ClearTimer(0);
while(FastTimer(0)<=700){
followline_l(); // 左周りでライントレース
}
Off(OUT_AC);
Wait(50);
PlaySound(SOUND_DOUBLE_BEEP);
ClearTimer(0);
turn_right0;
Wait(100);
Off(OUT_AC);
Wait(50);
go_fwd;
Wait(50);
Off(OUT_AC);
Wait(50);
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
turn_left0;
Wait(100);
Off(OUT_AC);
Wait(50);
while(FastTimer(0)<=700){
followline_l(); // 左周りでライントレース
}
Off(OUT_AC);
Wait(50);
PlaySound(SOUND_DOUBLE_BEEP); // 音を鳴らして、うまくい...
ClearTimer(0);
while(FastTimer(0)<=700){
followline_l1();
}
PlaySound(SOUND_DOUBLE_BEEP); // 音を鳴らして、うまくい...
turn_left1;
Wait(30);
ClearTimer(0);
while(FastTimer(0)<=700){
followline_r();
}
Off(OUT_AC);
Wait(50);
PlaySound(SOUND_CLICK); // 音を鳴らして、うまくいってい...
turn_left1;
Wait(20);
ClearTimer(0);
while(FastTimer(0)<=700){
followline_l(); // 左周りでライントレース
}
}
-このプログラムのポイントは、課題1でプログラムが長くなり...
-タイマーを使っているので、足場や部屋の明るさが少しでも変...
-動作を一つ一つするごとに音を鳴らすことで、どこがうまくい...
*まとめ [#r36f88f5]
-ロボットにパスをさせるというのは、自分が同じことをするの...
-一回目と同じように、今回もチームのみんなに頼りきりになっ...
-私自身が、工学部機械システム工学科なこともあり、自分で設...
ページ名: