2013b/Member/matsuro/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*課題1について [#g0c4bdf6]
*ロボットの紹介 [#p8283298]
-基礎とモーター部分の構造は元々のものと同じ。
-タイヤは左右2つずつだと回転時に若干のロスが生じるため1つ...
#ref(2013b/Member/matsuro/Mission1/F1000228.JPG,80%,全体)
#ref(2013b/Member/matsuro/Mission1/F1000227.JPG,80%,キャ...
-車輪の間隔が広くてもその場で旋回すれば急なカーブも曲がれ...
-缶を移動させるためのハサミにモーターを使うとロボットの前...
#ref(2013b/Member/matsuro/Mission1/F1000225.JPG,80%,支え)
*プログラムについて [#z12df06e]
このプログラムはラインの左側の境界線を沿うプログラムで...
なるべく簡単なプログラムにしたかったため、「基本的にはラ...
まず悩んだのは「交差点の判別をタイマーと変数のどちらを使...
-段階1:9秒以下は普通のライントレース → 段階2:ライン...
**具体的なプログラム [#kee510f9]
#define WHITE 48
#define BLACK 37
#define go_forward OnFwd(OUT_AC); //直進
#define go_back OnRev(OUT_AC); //後退
#define LEFT OnRev(OUT_A);OnFwd(OUT_C); //左旋回
#define left Off(OUT_A);OnFwd(OUT_C); //左折
#define right OnFwd(OUT_A);OnRev(OUT_C); //右旋回
#define RIGHT OnFwd(OUT_A);Off(OUT_C); //右折
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_TOUCH);
ClearTimer(0);
***段階1(基本ライントレース(缶移動あり)) [#r5b22a17]
始めの交差点は曲がらなければいけないのでスタートしてから9...
while(FastTimer(0) < 900){
if (SENSOR_1 < BLACK){ //黒なら左旋回
LEFT;
} else if (SENSOR_1 < BLACK +2){ //黒になりかけて...
left;
} else if (SENSOR_1 > WHITE -2){ //白になりかけて...
right;
} else if (SENSOR_1 > WHITE){ //白なら右旋回
RIGHT;
缶を感知したら機体の後ろへ移動させる。
} else if (SENSOR_3 == 1){ //缶を感知
go_forward; //缶を元の位置に戻すため、「前進→...
Wait(45);
left;
Wait(10); //ここで左折するのはこのロボットのモ...
go_forward;
Wait(45);
LEFT;
Wait(30); //ここで初めからuntilを使ったものに...
until(SENSOR_1 < BLACK){
LEFT;
}
go_forward;
Wait(10);
go_back; //缶をハサミから出すために後退
Wait(50);
right;
Wait(220); //ハサミが長いため、缶を出すために...
until(SENSOR_1 < BLACK){
go_forward;
}
Off(OUT_AC);
} else { //その他は直進
go_forward;
}
}
ClearTimer(0);
ここでタイマーをリセットしないと9秒になったときにタイマー...
***段階2(交差点横断) [#ve4ab7e3]
交差点とカーブの識別はタイマーを使い、黒と判断した時から...
#ref(2013b/Member/matsuro/Mission1/F1000224_1.jpg,100%,交...
repeat(4){
while (FastTimer(0) < 25){
if (SENSOR_1 < BLACK){ //黒なら左旋回
LEFT;
}else if (SENSOR_1 < BLACK +2){ //黒になりかけて...
ClearTimer(0);
left;
}else if (SENSOR_1 > WHITE -2){ //白になりかけて...
ClearTimer(0);
right;
}else if (SENSOR_1 > WHITE){ //白なら右旋回
ClearTimer(0);
RIGHT;
}else{ //その他は直進
ClearTimer(0);
go_forward;
}
}
交差点は4つなので交差点のプログラムを4回繰り返す。
このプログラムではセンサーが黒だと判断している時間を計り...
if(FastTimer(0) >= 25){ //0.25秒以上なら交差点と判...
ClearTimer(0);
RIGHT; //交差点判断にかかった時間で左旋回した分を...
Wait(30);
go_forward;
Wait(20);
Off(OUT_AC);
ClearTimer(0);
}
}
***段階3(ライントレース、缶移動) [#n665dc9c]
while(true){
if (SENSOR_1 < BLACK){ //黒なら左旋回
LEFT;
} else if (SENSOR_1 < BLACK +2){ //黒になりかけて...
left;
} else if (SENSOR_1 > WHITE -2){ //白になりかけて...
right;
} else if (SENSOR_1 > WHITE){ //白なら右旋回
RIGHT;
} else if (SENSOR_3 == 1){
go_forward;
Wait(45);
left;
Wait(10);
go_forward;
Wait(45);
LEFT;
Wait(30);
until(SENSOR_1 < BLACK){
LEFT;
}
go_forward;
Wait(10);
go_back;
Wait(50);
right;
Wait(220);
until(SENSOR_1 < BLACK){
go_forward;
}
Off(OUT_AC);
} else { //その他は直進
go_forward;
}
}
}
缶を感知して旋回し、元の位置に戻した後再び旋回するときに...
缶が軽いため初めはタッチセンサーが反応しなかったので、先...
*製作中の問題点 [#e82d3b2e]
-キャスターやハサミの強度 → 2〜3ヶ所で固定して補強
-思ったように動かない → プログラムを見直して問題点を改善...
-交差点が渡れない → 初めは変数でやっていたがうまくいかな...
-缶が軽くてタッチセンサーが反応しない → タッチセンサーの...
-
*まとめ [#z7afad8c]
-プログラムを作り始めたときはすごく難しく感じたが、完成し...
-特定のコースを回れるプログラムなので、プログラムの拡張性...
-思ったように動かすのに微調整が何度も必要で、根気の作業だ...
-交差点判断のプログラムは難しく今回はタイマーを使ったが、...
終了行:
*課題1について [#g0c4bdf6]
*ロボットの紹介 [#p8283298]
-基礎とモーター部分の構造は元々のものと同じ。
-タイヤは左右2つずつだと回転時に若干のロスが生じるため1つ...
#ref(2013b/Member/matsuro/Mission1/F1000228.JPG,80%,全体)
#ref(2013b/Member/matsuro/Mission1/F1000227.JPG,80%,キャ...
-車輪の間隔が広くてもその場で旋回すれば急なカーブも曲がれ...
-缶を移動させるためのハサミにモーターを使うとロボットの前...
#ref(2013b/Member/matsuro/Mission1/F1000225.JPG,80%,支え)
*プログラムについて [#z12df06e]
このプログラムはラインの左側の境界線を沿うプログラムで...
なるべく簡単なプログラムにしたかったため、「基本的にはラ...
まず悩んだのは「交差点の判別をタイマーと変数のどちらを使...
-段階1:9秒以下は普通のライントレース → 段階2:ライン...
**具体的なプログラム [#kee510f9]
#define WHITE 48
#define BLACK 37
#define go_forward OnFwd(OUT_AC); //直進
#define go_back OnRev(OUT_AC); //後退
#define LEFT OnRev(OUT_A);OnFwd(OUT_C); //左旋回
#define left Off(OUT_A);OnFwd(OUT_C); //左折
#define right OnFwd(OUT_A);OnRev(OUT_C); //右旋回
#define RIGHT OnFwd(OUT_A);Off(OUT_C); //右折
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_TOUCH);
ClearTimer(0);
***段階1(基本ライントレース(缶移動あり)) [#r5b22a17]
始めの交差点は曲がらなければいけないのでスタートしてから9...
while(FastTimer(0) < 900){
if (SENSOR_1 < BLACK){ //黒なら左旋回
LEFT;
} else if (SENSOR_1 < BLACK +2){ //黒になりかけて...
left;
} else if (SENSOR_1 > WHITE -2){ //白になりかけて...
right;
} else if (SENSOR_1 > WHITE){ //白なら右旋回
RIGHT;
缶を感知したら機体の後ろへ移動させる。
} else if (SENSOR_3 == 1){ //缶を感知
go_forward; //缶を元の位置に戻すため、「前進→...
Wait(45);
left;
Wait(10); //ここで左折するのはこのロボットのモ...
go_forward;
Wait(45);
LEFT;
Wait(30); //ここで初めからuntilを使ったものに...
until(SENSOR_1 < BLACK){
LEFT;
}
go_forward;
Wait(10);
go_back; //缶をハサミから出すために後退
Wait(50);
right;
Wait(220); //ハサミが長いため、缶を出すために...
until(SENSOR_1 < BLACK){
go_forward;
}
Off(OUT_AC);
} else { //その他は直進
go_forward;
}
}
ClearTimer(0);
ここでタイマーをリセットしないと9秒になったときにタイマー...
***段階2(交差点横断) [#ve4ab7e3]
交差点とカーブの識別はタイマーを使い、黒と判断した時から...
#ref(2013b/Member/matsuro/Mission1/F1000224_1.jpg,100%,交...
repeat(4){
while (FastTimer(0) < 25){
if (SENSOR_1 < BLACK){ //黒なら左旋回
LEFT;
}else if (SENSOR_1 < BLACK +2){ //黒になりかけて...
ClearTimer(0);
left;
}else if (SENSOR_1 > WHITE -2){ //白になりかけて...
ClearTimer(0);
right;
}else if (SENSOR_1 > WHITE){ //白なら右旋回
ClearTimer(0);
RIGHT;
}else{ //その他は直進
ClearTimer(0);
go_forward;
}
}
交差点は4つなので交差点のプログラムを4回繰り返す。
このプログラムではセンサーが黒だと判断している時間を計り...
if(FastTimer(0) >= 25){ //0.25秒以上なら交差点と判...
ClearTimer(0);
RIGHT; //交差点判断にかかった時間で左旋回した分を...
Wait(30);
go_forward;
Wait(20);
Off(OUT_AC);
ClearTimer(0);
}
}
***段階3(ライントレース、缶移動) [#n665dc9c]
while(true){
if (SENSOR_1 < BLACK){ //黒なら左旋回
LEFT;
} else if (SENSOR_1 < BLACK +2){ //黒になりかけて...
left;
} else if (SENSOR_1 > WHITE -2){ //白になりかけて...
right;
} else if (SENSOR_1 > WHITE){ //白なら右旋回
RIGHT;
} else if (SENSOR_3 == 1){
go_forward;
Wait(45);
left;
Wait(10);
go_forward;
Wait(45);
LEFT;
Wait(30);
until(SENSOR_1 < BLACK){
LEFT;
}
go_forward;
Wait(10);
go_back;
Wait(50);
right;
Wait(220);
until(SENSOR_1 < BLACK){
go_forward;
}
Off(OUT_AC);
} else { //その他は直進
go_forward;
}
}
}
缶を感知して旋回し、元の位置に戻した後再び旋回するときに...
缶が軽いため初めはタッチセンサーが反応しなかったので、先...
*製作中の問題点 [#e82d3b2e]
-キャスターやハサミの強度 → 2〜3ヶ所で固定して補強
-思ったように動かない → プログラムを見直して問題点を改善...
-交差点が渡れない → 初めは変数でやっていたがうまくいかな...
-缶が軽くてタッチセンサーが反応しない → タッチセンサーの...
-
*まとめ [#z7afad8c]
-プログラムを作り始めたときはすごく難しく感じたが、完成し...
-特定のコースを回れるプログラムなので、プログラムの拡張性...
-思ったように動かすのに微調整が何度も必要で、根気の作業だ...
-交差点判断のプログラムは難しく今回はタイマーを使ったが、...
ページ名: