2013a/Member/math5/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013a/Member]]
*ロボットの紹介 [#t1e80d59]
&ref(robo.jpg);
特徴はアームが大きいことです.コンピュータ部分がデフォル...
*コース攻略法 [#u89cc0ea]
時計回りについてのみ書きます.
始めの十字路は左側をトレースし,あえて交差点の識別をして...
これは,時計回りのコースへの導入をするためです.
次に缶の一歩手前で停止し,つかんでから右側のトレースへと...
交差点をいくつか通り,道なりに進みます.
最後の交差点を通過後,一定時間がたってから180°回転して缶...
このときもまた,交差点の識別を行っていません.
*プログラムの説明 [#sdeaed12]
#define CENTER 45 //光センサーの値の基準値
#define CCC 14000 //最後の交差点から,缶を置くために旋回...
#define SPEED_H 52 //高速走行時のスピード
#define SPEED_L 32 //低速走行時のスピード
#define turn_R Off(OUT_B); OnFwd(OUT_C,SPEED_L);
#define turn_L Off(OUT_C); OnFwd(OUT_B,SPEED_L);
#define turn_SR OnRev(OUT_B,SPEED_L); OnFwd(OUT_C,SPEED_...
#define turn_SL OnRev(OUT_C,SPEED_L); OnFwd(OUT_B,SPEED_...
#define go_F OnFwd(OUT_BC,SPEED_H);
#define STEP 1
#define nMAX 330
#define short_break Off(OUT_BC);Wait(400);
#define CROSS_TIME 400
#define cross_line OnFwd(OUT_B,SPEED_L);OnFwd(OUT_C,SPEE...
#define cross OnFwd(OUT_C,SPEED_L);OnFwd(OUT_B,SPEED_L);...
#define go_b OnFwd(OUT_B,-50);OnFwd(OUT_C,-50);
以上が変数,マクロの定義.
sub trace_R()
{
int n;
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;
}
}
ラインの右側をトレースするサブルーチン.交差点に差し掛か...
sub trace_L()
{
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_R;
} else {
turn_SR;
}
n=0;
}
Wait(STEP);
}
short_break;
turn_SR;Wait(nMAX*STEP);
cross;
n=0;
break;
}
}
ラインの左側をトレースするサブルーチン.交差点に差し掛か...
task main()
{
SetSensorLight(S1);
SetSensorTouch(S3);
int n=0,count = 0;
long t = 0;
if(t >= 0){
t = CurrentTick();
while(true){
if(SENSOR_1 < CENTER-9){
if(SENSOR_1 < CENTER-19){
turn_L;
}else{
turn_SL;
}
}else if(SENSOR_1 < CENTER+2){
go_F;
}else{
if(SENSOR_1 < CENTER){
turn_SR;
}else{
turn_R;
}
}
Wait(STEP);
if(CurrentTick() - t > 7000){
break;
}
}
}
交差点の識別を行わないトレース.
short_break;
OnFwd(OUT_A,-30);
turn_SR;
Wait(520);
Off(OUT_BC);
休憩ののち,缶をつかんで回転.回転するのは左側から右側の...
trace_R();
trace_L();
trace_L();
trace_L();
ラインの右側,左側トレースを切り替える.これは交差点をう...
t=CurrentTick();
while(true) {
while(CurrentTick()-t <= CCC) {
if(SENSOR_1 < CENTER-12) {
turn_SL;
} else {
if(SENSOR_1 < CENTER-6) {
turn_L;
} else if(SENSOR_1 < CENTER+6) {
go_F;
} else if(SENSOR_1 < CENTER+12) {
turn_R;
} else {
turn_SR;
}
}
}
break;
}
turn_SR;
Wait(2700);
OnFwd(OUT_A,30);
Wait(300);
Off(OUT_A);
go_b;
Wait(600);
turn_SR;
Wait(1100);
Off(OUT_BC);
最後の交差点から時間を計り,一定時間経過後に180°回転して...
while(true) {
while(n < nMAX) {
if(SENSOR_1 < CENTER-12) {
turn_SL;
} else {
if(SENSOR_1 < CENTER-6) {
turn_L;
} else if(SENSOR_1 < CENTER+6) {
go_F;
} else if(SENSOR_1 < CENTER+12) {
turn_R;
} else {
turn_SR;
}
n=0;
}
Wait(STEP);
}
}
}
再び交差点の識別を行わないトレース.これによって最初の地...
*まとめ [#se9d32be]
ロボットはモーター一つでつかむ機構を考えるのに時間がかか...
また,プログラミングでは,交差点の認識が出来なかったり,...
さらに,時間を計って缶を置くときに,実験するたびに大幅に...
これは電池の残量の変化や光の加減,トレースの仕方に問題が...
しかし,結果的にはほぼうまくいったので成功したということ...
今後のロボコンに於いても今回の反省点を活かしてロボット製...
終了行:
[[2013a/Member]]
*ロボットの紹介 [#t1e80d59]
&ref(robo.jpg);
特徴はアームが大きいことです.コンピュータ部分がデフォル...
*コース攻略法 [#u89cc0ea]
時計回りについてのみ書きます.
始めの十字路は左側をトレースし,あえて交差点の識別をして...
これは,時計回りのコースへの導入をするためです.
次に缶の一歩手前で停止し,つかんでから右側のトレースへと...
交差点をいくつか通り,道なりに進みます.
最後の交差点を通過後,一定時間がたってから180°回転して缶...
このときもまた,交差点の識別を行っていません.
*プログラムの説明 [#sdeaed12]
#define CENTER 45 //光センサーの値の基準値
#define CCC 14000 //最後の交差点から,缶を置くために旋回...
#define SPEED_H 52 //高速走行時のスピード
#define SPEED_L 32 //低速走行時のスピード
#define turn_R Off(OUT_B); OnFwd(OUT_C,SPEED_L);
#define turn_L Off(OUT_C); OnFwd(OUT_B,SPEED_L);
#define turn_SR OnRev(OUT_B,SPEED_L); OnFwd(OUT_C,SPEED_...
#define turn_SL OnRev(OUT_C,SPEED_L); OnFwd(OUT_B,SPEED_...
#define go_F OnFwd(OUT_BC,SPEED_H);
#define STEP 1
#define nMAX 330
#define short_break Off(OUT_BC);Wait(400);
#define CROSS_TIME 400
#define cross_line OnFwd(OUT_B,SPEED_L);OnFwd(OUT_C,SPEE...
#define cross OnFwd(OUT_C,SPEED_L);OnFwd(OUT_B,SPEED_L);...
#define go_b OnFwd(OUT_B,-50);OnFwd(OUT_C,-50);
以上が変数,マクロの定義.
sub trace_R()
{
int n;
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;
}
}
ラインの右側をトレースするサブルーチン.交差点に差し掛か...
sub trace_L()
{
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_R;
} else {
turn_SR;
}
n=0;
}
Wait(STEP);
}
short_break;
turn_SR;Wait(nMAX*STEP);
cross;
n=0;
break;
}
}
ラインの左側をトレースするサブルーチン.交差点に差し掛か...
task main()
{
SetSensorLight(S1);
SetSensorTouch(S3);
int n=0,count = 0;
long t = 0;
if(t >= 0){
t = CurrentTick();
while(true){
if(SENSOR_1 < CENTER-9){
if(SENSOR_1 < CENTER-19){
turn_L;
}else{
turn_SL;
}
}else if(SENSOR_1 < CENTER+2){
go_F;
}else{
if(SENSOR_1 < CENTER){
turn_SR;
}else{
turn_R;
}
}
Wait(STEP);
if(CurrentTick() - t > 7000){
break;
}
}
}
交差点の識別を行わないトレース.
short_break;
OnFwd(OUT_A,-30);
turn_SR;
Wait(520);
Off(OUT_BC);
休憩ののち,缶をつかんで回転.回転するのは左側から右側の...
trace_R();
trace_L();
trace_L();
trace_L();
ラインの右側,左側トレースを切り替える.これは交差点をう...
t=CurrentTick();
while(true) {
while(CurrentTick()-t <= CCC) {
if(SENSOR_1 < CENTER-12) {
turn_SL;
} else {
if(SENSOR_1 < CENTER-6) {
turn_L;
} else if(SENSOR_1 < CENTER+6) {
go_F;
} else if(SENSOR_1 < CENTER+12) {
turn_R;
} else {
turn_SR;
}
}
}
break;
}
turn_SR;
Wait(2700);
OnFwd(OUT_A,30);
Wait(300);
Off(OUT_A);
go_b;
Wait(600);
turn_SR;
Wait(1100);
Off(OUT_BC);
最後の交差点から時間を計り,一定時間経過後に180°回転して...
while(true) {
while(n < nMAX) {
if(SENSOR_1 < CENTER-12) {
turn_SL;
} else {
if(SENSOR_1 < CENTER-6) {
turn_L;
} else if(SENSOR_1 < CENTER+6) {
go_F;
} else if(SENSOR_1 < CENTER+12) {
turn_R;
} else {
turn_SR;
}
n=0;
}
Wait(STEP);
}
}
}
再び交差点の識別を行わないトレース.これによって最初の地...
*まとめ [#se9d32be]
ロボットはモーター一つでつかむ機構を考えるのに時間がかか...
また,プログラミングでは,交差点の認識が出来なかったり,...
さらに,時間を計って缶を置くときに,実験するたびに大幅に...
これは電池の残量の変化や光の加減,トレースの仕方に問題が...
しかし,結果的にはほぼうまくいったので成功したということ...
今後のロボコンに於いても今回の反省点を活かしてロボット製...
ページ名: