2013b/Member/trtr/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013b/Member]]
*ロボットについて [#e3f487db]
&ref(2013b/Member/trtr/Mission1/IMG_1527.jpg,400*300,ロボ...
←ロボットの内部
+モーターを縦に取り付けて、歯車をつなぎ前輪に動力を伝えた...
+凸型の部品をロボットの裏に取り付けた。←ロボットや床が傷...
+アームは車体のコンパクトさ故に自然とコンパクトかつ安定し...
*課題の難所 [#w649b3fa]
&ref(2013b/Member/trtr/Mission1/robotics-2013a-mission1_3...
-赤く丸した交差点をきちんと認識し、正しく判断して通過でき...
-青くマークしたところのカーブは急なので、ロボットがコース...
-空き缶を交差点から10cm以上離した線上に起き、それを一旦ど...
*プログラミングについて [#cb56ff11]
-定数について
#define THRESHOLD 45
#define HP 5
#define LP 2
#define STEP 1//一回の判断で待つ時間
#define go_fwd SetPower(OUT_AC,HP);OnFwd(OUT_AC);//前進
#define turn_left2 SetPower(OUT_C,HP);SetPower(OUT_A,LP);/
OnFwd(OUT_C);OnRev(OUT_A);//左旋回
#define turn_right2 SetPower(OUT_A,HP);SetPower(OUT_C,LP...
OnFwd(OUT_A);OnRev(OUT_C);//右旋回
#define turn_left1 SetPower(OUT_C,HP);OnFwd(OUT_C);//右...
#define turn_right1 SetPower(OUT_A,HP);OnFwd(OUT_A);//左...
#define turn_left0 SetPower(OUT_C,LP);OnFwd(OUT_C);//左...
#define turn_right0 SetPower(OUT_A,LP);OnFwd(OUT_A);//右...
#define short_break Off(OUT_AC);Wait(200);
#define time1 1600//スタートから交差点1まで
#define time2 300//交差点1の始まりから終わりまで
#define time3 500//交差点2の始まりから終わりまで
#define time4 900//ゴールまで
#define arm_open SetPower(OUT_B,LP);OnRev(OUT_B);Wait(50...
#define arm_close SetPower(OUT_B,LP);OnFwd(OUT_B);Wait(5...
-サブルーチンについて
缶を掴んでから旋回してから前進し元の場所に缶を置きまたラ...
sub can_move ()//缶を運ぶ動作
{arm_close;go_fwd;Wait(150);turn_left2;Wait(150);arm_ope...
通常のライントレーサーをするプログラム。細かいカーブにも...
sub linetracer ()//ライントレーサー
{
if(SENSOR_1 = 0)
if(SENSOR_2 < THRESHOLD-7) {turn_left2}
else if(SENSOR_2 < THRESHOLD-5) {turn_left0}
else if(SENSOR_2 < THRESHOLD+3) {go_fwd}
else if(SENSOR_2 < THRESHOLD+5) {turn_right0}
else {turn_right2}
Wait(STEP);
PlaySound(SOUND_UP);
}
交差点1を進むためのプログラム。この交差点では左のライン...
sub linecross1 ()//交差点1を渡る動作
{
if(SENSOR_2 < THRESHOLD+3) {go_fwd}
else {turn_right2}
Wait(STEP);
short_break;
PlaySound(SOUND_UP);
}
交差点2を進むためのプログラム。交差点1と同様に交差点で...
sub linecross2 ()//交差点2を渡る動作
{
if(SENSOR_2 < THRESHOLD-7) {turn_left2}
else if(SENSOR_2 < THRESHOLD-5) {turn_left0}
else if(SENSOR_2 < THRESHOLD+5) {go_fwd}
else {turn_right2}
Wait(STEP);
short_break;
PlaySound(SOUND_DOWN);
}
-プログラムの本体
task main()
{//0
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_TOUCH);
ClearTimer(0);
スタートから交差点1までは通常のライントレーサーを行う。...
while(FastTimer(0) <= time1)
{ linetracer () }
交差点1を進むためのプログラム。
ClearTimer(0);
while(FastTimer(0) <= time2)
{ linecross1 () }
交差点2を進むためのプログラム。
ClearTimer(0);
while(FastTimer(0) <= time3)
{ linecross2 () }
交差点2を越えて直線に突き当たりそこで缶を処理してゴール...
ClearTimer(0);
While(FastTimer(0) <= time4)
{ linetracer ();
if (SENSOR_1==1){ can_move () }
}//0
*改訂版 [#x71602f8]
#define THRESHOLD 45
#define HP 5
#define LP 2
#define STEP 1//一回の判断で待つ時間
#define go_fwd SetPower(OUT_AC,HP);OnFwd(OUT_AC);//前進
#define back SetPower(OUT_AC,HP);OnFwd(OUT_AC);//後退
#define turn_left2 SetPower(OUT_C,HP);SetPower(OUT_A,LP)...
#define turn_right2 SetPower(OUT_A,HP);SetPower(OUT_C,LP...
#define turn_left0 SetPower(OUT_C,LP);OnFwd(OUT_C);//左...
#define turn_right0 SetPower(OUT_A,LP);OnFwd(OUT_A);//右...
#define short_break Off(OUT_AC);Wait(200);
#define time1 2450//スタートから交差点1まで
#define time2 3050//交差点1の始まりから終わりまで
#define time3 3700//交差点2の始まりから終わりまで
#define time4 5500//交差点2からゴールまで
#define arm_open SetPower(OUT_B,LP);OnRev(OUT_B);Wait(50...
#define arm_close SetPower(OUT_B,LP);OnFwd(OUT_B);Wait(5...
#define nMAX 6//カウンターの上限
sub can_move ()//缶を運ぶ動作 {arm_close;go_fwd;Wait(15...
sub linetracer ()//ライントレーサー
{
if(SENSOR_1 == 0)//タッチセンサーが触れない時
if(SENSOR_2 < THRESHOLD-7) {turn_left2}
else if(SENSOR_2 < THRESHOLD-5) {turn_left0}
else if(SENSOR_2 < THRESHOLD+3) {go_fwd}
else if(SENSOR_2 < THRESHOLD+5) {turn_right0}
else {turn_right2}
Wait(STEP);
PlaySound(DOUBLE_UP);
}
sub line_cross ()
{
int nOnline=0; //続けて黒になった回数 始め...
while (nOnline < nMAX){ //続けて黒になった回数がMAX以内
if (SENSOR_2 < THRESHOLD -5) { turn_right0; nOnline++; }
else
{ if (SENSOR_2 < THRESHOLD -3) {turn_right0}
else if (SENSOR_2 < THRESHOLD +4) {go_fwd}
else if (SENSOR_2 < THRESHOLD +7) {turn_left0}
else {turn_left0}
nOnline=0//カウンタをリセット
}
Wait(STEP);
}
short_break; PlaySound(SOUND_UP);
go_fwd;//交差点を渡る
nOnline=0;//カウンタをリセット
}
task main()
{//0
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_TOUCH);
ClearTimer(0);
int nOnline=0;
while(FastTimer(0) <= time1){ linetracer (); }
ClearTimer(0);
while(FastTimer(0) <= time2){ linecross (); }
ClearTimer(0);
while(FastTimer(0) <= time3){ linecross (); }
ClearTimer(0);
While(FastTimer(0) <= time4){
linetracer ();
if (SENSOR_1==1){ can_move (); }
}
Float(OUT_AC);//ゆっくり止まる}//0
*工夫した点 [#n5c580e9]
-サブルーチンや定数を使いプログラムをコンパクト化した。
-カウンターでなくタイマーを使い毎回の動作を安定化した。
-PlaySoundを使いプログラミングの区切りをわかりやすくした。
-ロボットの構造に関してはこだわったつもりだ。機能性、見た...
*反省点 [#h0eedaec]
-交差点についてはまだ工夫できると思う。
-カウンターをうまく使いこなせなかった。
*全体を通しての感想 [#q1a39891]
-理想的なロボットを作るには、どんな働きをさせるために、ど...
終了行:
[[2013b/Member]]
*ロボットについて [#e3f487db]
&ref(2013b/Member/trtr/Mission1/IMG_1527.jpg,400*300,ロボ...
←ロボットの内部
+モーターを縦に取り付けて、歯車をつなぎ前輪に動力を伝えた...
+凸型の部品をロボットの裏に取り付けた。←ロボットや床が傷...
+アームは車体のコンパクトさ故に自然とコンパクトかつ安定し...
*課題の難所 [#w649b3fa]
&ref(2013b/Member/trtr/Mission1/robotics-2013a-mission1_3...
-赤く丸した交差点をきちんと認識し、正しく判断して通過でき...
-青くマークしたところのカーブは急なので、ロボットがコース...
-空き缶を交差点から10cm以上離した線上に起き、それを一旦ど...
*プログラミングについて [#cb56ff11]
-定数について
#define THRESHOLD 45
#define HP 5
#define LP 2
#define STEP 1//一回の判断で待つ時間
#define go_fwd SetPower(OUT_AC,HP);OnFwd(OUT_AC);//前進
#define turn_left2 SetPower(OUT_C,HP);SetPower(OUT_A,LP);/
OnFwd(OUT_C);OnRev(OUT_A);//左旋回
#define turn_right2 SetPower(OUT_A,HP);SetPower(OUT_C,LP...
OnFwd(OUT_A);OnRev(OUT_C);//右旋回
#define turn_left1 SetPower(OUT_C,HP);OnFwd(OUT_C);//右...
#define turn_right1 SetPower(OUT_A,HP);OnFwd(OUT_A);//左...
#define turn_left0 SetPower(OUT_C,LP);OnFwd(OUT_C);//左...
#define turn_right0 SetPower(OUT_A,LP);OnFwd(OUT_A);//右...
#define short_break Off(OUT_AC);Wait(200);
#define time1 1600//スタートから交差点1まで
#define time2 300//交差点1の始まりから終わりまで
#define time3 500//交差点2の始まりから終わりまで
#define time4 900//ゴールまで
#define arm_open SetPower(OUT_B,LP);OnRev(OUT_B);Wait(50...
#define arm_close SetPower(OUT_B,LP);OnFwd(OUT_B);Wait(5...
-サブルーチンについて
缶を掴んでから旋回してから前進し元の場所に缶を置きまたラ...
sub can_move ()//缶を運ぶ動作
{arm_close;go_fwd;Wait(150);turn_left2;Wait(150);arm_ope...
通常のライントレーサーをするプログラム。細かいカーブにも...
sub linetracer ()//ライントレーサー
{
if(SENSOR_1 = 0)
if(SENSOR_2 < THRESHOLD-7) {turn_left2}
else if(SENSOR_2 < THRESHOLD-5) {turn_left0}
else if(SENSOR_2 < THRESHOLD+3) {go_fwd}
else if(SENSOR_2 < THRESHOLD+5) {turn_right0}
else {turn_right2}
Wait(STEP);
PlaySound(SOUND_UP);
}
交差点1を進むためのプログラム。この交差点では左のライン...
sub linecross1 ()//交差点1を渡る動作
{
if(SENSOR_2 < THRESHOLD+3) {go_fwd}
else {turn_right2}
Wait(STEP);
short_break;
PlaySound(SOUND_UP);
}
交差点2を進むためのプログラム。交差点1と同様に交差点で...
sub linecross2 ()//交差点2を渡る動作
{
if(SENSOR_2 < THRESHOLD-7) {turn_left2}
else if(SENSOR_2 < THRESHOLD-5) {turn_left0}
else if(SENSOR_2 < THRESHOLD+5) {go_fwd}
else {turn_right2}
Wait(STEP);
short_break;
PlaySound(SOUND_DOWN);
}
-プログラムの本体
task main()
{//0
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_TOUCH);
ClearTimer(0);
スタートから交差点1までは通常のライントレーサーを行う。...
while(FastTimer(0) <= time1)
{ linetracer () }
交差点1を進むためのプログラム。
ClearTimer(0);
while(FastTimer(0) <= time2)
{ linecross1 () }
交差点2を進むためのプログラム。
ClearTimer(0);
while(FastTimer(0) <= time3)
{ linecross2 () }
交差点2を越えて直線に突き当たりそこで缶を処理してゴール...
ClearTimer(0);
While(FastTimer(0) <= time4)
{ linetracer ();
if (SENSOR_1==1){ can_move () }
}//0
*改訂版 [#x71602f8]
#define THRESHOLD 45
#define HP 5
#define LP 2
#define STEP 1//一回の判断で待つ時間
#define go_fwd SetPower(OUT_AC,HP);OnFwd(OUT_AC);//前進
#define back SetPower(OUT_AC,HP);OnFwd(OUT_AC);//後退
#define turn_left2 SetPower(OUT_C,HP);SetPower(OUT_A,LP)...
#define turn_right2 SetPower(OUT_A,HP);SetPower(OUT_C,LP...
#define turn_left0 SetPower(OUT_C,LP);OnFwd(OUT_C);//左...
#define turn_right0 SetPower(OUT_A,LP);OnFwd(OUT_A);//右...
#define short_break Off(OUT_AC);Wait(200);
#define time1 2450//スタートから交差点1まで
#define time2 3050//交差点1の始まりから終わりまで
#define time3 3700//交差点2の始まりから終わりまで
#define time4 5500//交差点2からゴールまで
#define arm_open SetPower(OUT_B,LP);OnRev(OUT_B);Wait(50...
#define arm_close SetPower(OUT_B,LP);OnFwd(OUT_B);Wait(5...
#define nMAX 6//カウンターの上限
sub can_move ()//缶を運ぶ動作 {arm_close;go_fwd;Wait(15...
sub linetracer ()//ライントレーサー
{
if(SENSOR_1 == 0)//タッチセンサーが触れない時
if(SENSOR_2 < THRESHOLD-7) {turn_left2}
else if(SENSOR_2 < THRESHOLD-5) {turn_left0}
else if(SENSOR_2 < THRESHOLD+3) {go_fwd}
else if(SENSOR_2 < THRESHOLD+5) {turn_right0}
else {turn_right2}
Wait(STEP);
PlaySound(DOUBLE_UP);
}
sub line_cross ()
{
int nOnline=0; //続けて黒になった回数 始め...
while (nOnline < nMAX){ //続けて黒になった回数がMAX以内
if (SENSOR_2 < THRESHOLD -5) { turn_right0; nOnline++; }
else
{ if (SENSOR_2 < THRESHOLD -3) {turn_right0}
else if (SENSOR_2 < THRESHOLD +4) {go_fwd}
else if (SENSOR_2 < THRESHOLD +7) {turn_left0}
else {turn_left0}
nOnline=0//カウンタをリセット
}
Wait(STEP);
}
short_break; PlaySound(SOUND_UP);
go_fwd;//交差点を渡る
nOnline=0;//カウンタをリセット
}
task main()
{//0
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_TOUCH);
ClearTimer(0);
int nOnline=0;
while(FastTimer(0) <= time1){ linetracer (); }
ClearTimer(0);
while(FastTimer(0) <= time2){ linecross (); }
ClearTimer(0);
while(FastTimer(0) <= time3){ linecross (); }
ClearTimer(0);
While(FastTimer(0) <= time4){
linetracer ();
if (SENSOR_1==1){ can_move (); }
}
Float(OUT_AC);//ゆっくり止まる}//0
*工夫した点 [#n5c580e9]
-サブルーチンや定数を使いプログラムをコンパクト化した。
-カウンターでなくタイマーを使い毎回の動作を安定化した。
-PlaySoundを使いプログラミングの区切りをわかりやすくした。
-ロボットの構造に関してはこだわったつもりだ。機能性、見た...
*反省点 [#h0eedaec]
-交差点についてはまだ工夫できると思う。
-カウンターをうまく使いこなせなかった。
*全体を通しての感想 [#q1a39891]
-理想的なロボットを作るには、どんな働きをさせるために、ど...
ページ名: