2012b/Member/toshi/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2012b]]
目次
#contents
*ロボット [#xd9344e7]
**紹介・特徴 [#n6d53054]
分解し組み直すことでできなかったため、初期を基本に組み上...
#ref(robo01.jpg);ロボットを正面から見た写真
このようにベースが最初のロボットである。
#ref(robo02.jpg);
.
.
#ref(robo03.jpg);
アーム部分はボールが零れないようにレゴを使い固定した。
また、ボールを押し出す際に押し出せるようにアーム内部にレ...
そして、側面はこのようになっている。
#ref(robo04.jpg);
.
.
#ref(robo05.jpg);
全体として、小型化に失敗してしまったが、初期のものより多...
**反省 [#oaa82d02]
-初期の形を崩すことができず、初期の型から少しだけ小さくな...
-アームを追加することでボールを運ぶことには成功したが、ポ...
-周りの人のロボットの多くは動力を縦にして組むことでサイズ...
**次回のために [#ob59e0ab]
-課題をよく読み、ロボットの知識を持った人にロボットの改造...
-記憶に残るもので、なおかつイメージ通りに動かせるようなも...
-前もってイメージを作り、周りにも意見をもらうことでより質...
*課題内容 [#abc4073f]
※先生のページのコピーです。
図のようなコースを各自で作成した上で、次のような動作をす...
-1人目
++スタート地点から出発し、スタート地点外のすぐ近くに置か...
++ピンポン玉をつかんだら速やかにスタート地点の境界の黒線...
++ゴール地点に到達したら、ゴールエリア外からピンポン玉を...
ただし、どうしてもエリア外からのシュートが難しい場合は、...
-2人目
++上の動作でスタートとゴールを逆にして同様の動きをするプ...
#ref(2012b/Mission/2012b-mission1.png,100%,課題1のコース)
**課題達成のために [#z32adad4]
交差点の数を数え、ある回数でシュートするプログラム。
そして交差点を通過するためのプログラムを作るべきと感じた...
黒い線の右を通るか、左を通るかを切り替えることで交差点に...
*プログラム [#id8269ae]
**プログラム内容 [#x9b22d78]
上に書いたようなプログラムを作ろうとしたが失敗したため、...
++黒い線上の場合は右に曲がり、白い線上の場合は左に曲がる...
++黒い線上の場合は左に曲がり、黒い線上の場合は右に曲がる...
このふたつを時間によって使い分けゴールまでライントレース...
これにより、交差点等で悩むことがない。
#ref(robo06.jpg);
***プログラムのイメージ画像[#r47803dc]
&ref(robot.1.jpg);
この図のようなやり方でライントレースを行う。
&ref(robot3.jpg);
動かした例としてはこのようになる。
そして、ゴール前まで運ぶと
#ref(robot2.jpg);
という動きに切り替わる。
この動きを説明すると
+まず、(1)のような動きでゴールの方向を向く。
+向いたらロボットを停止させ、ボールを落ち着ける。
+アームをあげて、押し出す姿勢を作る。
+そして、(2)のように動く。この動きは100%で行い、ボー...
+最後に枠外へ出るためにバックする。
***作成したプログラム [#d7898fd3]
#define right01 OnFwd(OUT_C,40);OnRev(OUT_B,20);//右に前進
#define left01 OnFwd(OUT_B,40);OnRev(OUT_C,20);//左に前進
#define THRESHOLD 45//閾値を設定
#define STEP 10//一回の判定で動く時間
#define left00 OnFwd(OUT_B,30);OnFwd(OUT_C,-30);Wait(120...
#define mae00 OnFwd(OUT_BC,20);Wait(600);//ボール回収時...
#define right00 OnFwd(OUT_C,30);OnFwd(OUT_B,-30);Wait(40...
#define short_break00 Off(OUT_BC); Wait(1000);//一時停止
#define mae01 OnFwd(OUT_BC,20);Wait(400);//ボール回収時...
#define short_break01 Off(OUT_BC); Wait(500);//発射時の...
task main()
{
/*ボールを回収するプログラム*/
left00;
mae00;
short_break00;
OnFwd(OUT_A,20);Wait(300);Off(OUT_A);
mae01;
right00;
SetSensorLight(S3);//光センサーを起動
short_break01
/*タイマーをセットし起動*/
long time1,timeA;
/*タイマーの初期化*/
time1 = 0;
timeA = 0;
time1 = CurrentTick();
/*指定時間の間黒線上なら左、白線上なら右へ曲がるプログラ...
while(5000 >= timeA)
{ //5秒間繰り返す
timeA = CurrentTick()-time1;
if(SENSOR_3 < THRESHOLD)
{
left01;
}else
{
right01;
}
Wait(STEP);
}
/*ここで黒線上なら右、白線上なら左へ曲がるプログラムに切...
short_break01
OnFwd(OUT_C,30);Wait(300);//切り替えが失敗しないようにプ...
long time2,timeB; //二つ目のタイマーを作成
/*タイマーの初期化*/
time2 = 0;
timeB = 0;
time2 = CurrentTick(); //タイマーを起動
while(9000 >= timeB)
{ //9秒間繰り返す
timeB = CurrentTick()-time2;
if(SENSOR_3 < THRESHOLD)
{
right01;
}else
{
left01;
}
Wait(STEP);
}
/*ここで再び最初のプログラムに切り替える*/
short_break01;
OnFwd(OUT_B,30);Wait(300); //切り替えが失敗しないように...
long time3,timeC; //三つ目のタイマーを作成
/*タイマーの初期化*/
time3 = 0;
timeC = 0;
time3 = CurrentTick(); //タイマーを起動
while(26000 >= timeC)
{ //26秒間繰り返す
timeC = CurrentTick()-time3;
if(SENSOR_3 < THRESHOLD)
{
left01;
}else
{
right01;
}
Wait(STEP);
}
/*ゴールをするためのプログラム*/
short_break01;
right00;
Off(OUT_BC);Wait(600);//ここでボールのゆれをとめる
OnFwd(OUT_A,-30);Wait(500);Off(OUT_A);
OnFwd(OUT_BC,100);Wait(300);Off(OUT_BC);
OnFwd(OUT_BC,-100);Wait(400);Off(OUT_BC);
}
**反省 [#f85ab0ac]
-交差点を通るプログラムを書くことができなかった。交差点を...
-時間を指定するやり方もこのやり方では電池によってずれてし...
そのため、ゴールの斜めから右を向かせるようにして、多少の...
-時間指定によるプログラムのため、応用が利かず、電池の消耗...
**今後のために [#k9c3c363]
-課題のページをみんなが作ると思うので、それをよく見て、理...
-一つ一つのプログラムの意味を理解することでより正確に作る...
*全体をとおして [#r8742b22]
***反省・感想 [#g0705045]
ロボットに関する知識も、プログラムに関する知識も足りない...
期末までにはこの2つの知識をなんとしても得ることで、満足...
また、自分の動かしたいもの、作りたいもの、イメージしてい...
そして、過去の先輩やネットから多くの情報を得られるので、...
終了行:
[[2012b]]
目次
#contents
*ロボット [#xd9344e7]
**紹介・特徴 [#n6d53054]
分解し組み直すことでできなかったため、初期を基本に組み上...
#ref(robo01.jpg);ロボットを正面から見た写真
このようにベースが最初のロボットである。
#ref(robo02.jpg);
.
.
#ref(robo03.jpg);
アーム部分はボールが零れないようにレゴを使い固定した。
また、ボールを押し出す際に押し出せるようにアーム内部にレ...
そして、側面はこのようになっている。
#ref(robo04.jpg);
.
.
#ref(robo05.jpg);
全体として、小型化に失敗してしまったが、初期のものより多...
**反省 [#oaa82d02]
-初期の形を崩すことができず、初期の型から少しだけ小さくな...
-アームを追加することでボールを運ぶことには成功したが、ポ...
-周りの人のロボットの多くは動力を縦にして組むことでサイズ...
**次回のために [#ob59e0ab]
-課題をよく読み、ロボットの知識を持った人にロボットの改造...
-記憶に残るもので、なおかつイメージ通りに動かせるようなも...
-前もってイメージを作り、周りにも意見をもらうことでより質...
*課題内容 [#abc4073f]
※先生のページのコピーです。
図のようなコースを各自で作成した上で、次のような動作をす...
-1人目
++スタート地点から出発し、スタート地点外のすぐ近くに置か...
++ピンポン玉をつかんだら速やかにスタート地点の境界の黒線...
++ゴール地点に到達したら、ゴールエリア外からピンポン玉を...
ただし、どうしてもエリア外からのシュートが難しい場合は、...
-2人目
++上の動作でスタートとゴールを逆にして同様の動きをするプ...
#ref(2012b/Mission/2012b-mission1.png,100%,課題1のコース)
**課題達成のために [#z32adad4]
交差点の数を数え、ある回数でシュートするプログラム。
そして交差点を通過するためのプログラムを作るべきと感じた...
黒い線の右を通るか、左を通るかを切り替えることで交差点に...
*プログラム [#id8269ae]
**プログラム内容 [#x9b22d78]
上に書いたようなプログラムを作ろうとしたが失敗したため、...
++黒い線上の場合は右に曲がり、白い線上の場合は左に曲がる...
++黒い線上の場合は左に曲がり、黒い線上の場合は右に曲がる...
このふたつを時間によって使い分けゴールまでライントレース...
これにより、交差点等で悩むことがない。
#ref(robo06.jpg);
***プログラムのイメージ画像[#r47803dc]
&ref(robot.1.jpg);
この図のようなやり方でライントレースを行う。
&ref(robot3.jpg);
動かした例としてはこのようになる。
そして、ゴール前まで運ぶと
#ref(robot2.jpg);
という動きに切り替わる。
この動きを説明すると
+まず、(1)のような動きでゴールの方向を向く。
+向いたらロボットを停止させ、ボールを落ち着ける。
+アームをあげて、押し出す姿勢を作る。
+そして、(2)のように動く。この動きは100%で行い、ボー...
+最後に枠外へ出るためにバックする。
***作成したプログラム [#d7898fd3]
#define right01 OnFwd(OUT_C,40);OnRev(OUT_B,20);//右に前進
#define left01 OnFwd(OUT_B,40);OnRev(OUT_C,20);//左に前進
#define THRESHOLD 45//閾値を設定
#define STEP 10//一回の判定で動く時間
#define left00 OnFwd(OUT_B,30);OnFwd(OUT_C,-30);Wait(120...
#define mae00 OnFwd(OUT_BC,20);Wait(600);//ボール回収時...
#define right00 OnFwd(OUT_C,30);OnFwd(OUT_B,-30);Wait(40...
#define short_break00 Off(OUT_BC); Wait(1000);//一時停止
#define mae01 OnFwd(OUT_BC,20);Wait(400);//ボール回収時...
#define short_break01 Off(OUT_BC); Wait(500);//発射時の...
task main()
{
/*ボールを回収するプログラム*/
left00;
mae00;
short_break00;
OnFwd(OUT_A,20);Wait(300);Off(OUT_A);
mae01;
right00;
SetSensorLight(S3);//光センサーを起動
short_break01
/*タイマーをセットし起動*/
long time1,timeA;
/*タイマーの初期化*/
time1 = 0;
timeA = 0;
time1 = CurrentTick();
/*指定時間の間黒線上なら左、白線上なら右へ曲がるプログラ...
while(5000 >= timeA)
{ //5秒間繰り返す
timeA = CurrentTick()-time1;
if(SENSOR_3 < THRESHOLD)
{
left01;
}else
{
right01;
}
Wait(STEP);
}
/*ここで黒線上なら右、白線上なら左へ曲がるプログラムに切...
short_break01
OnFwd(OUT_C,30);Wait(300);//切り替えが失敗しないようにプ...
long time2,timeB; //二つ目のタイマーを作成
/*タイマーの初期化*/
time2 = 0;
timeB = 0;
time2 = CurrentTick(); //タイマーを起動
while(9000 >= timeB)
{ //9秒間繰り返す
timeB = CurrentTick()-time2;
if(SENSOR_3 < THRESHOLD)
{
right01;
}else
{
left01;
}
Wait(STEP);
}
/*ここで再び最初のプログラムに切り替える*/
short_break01;
OnFwd(OUT_B,30);Wait(300); //切り替えが失敗しないように...
long time3,timeC; //三つ目のタイマーを作成
/*タイマーの初期化*/
time3 = 0;
timeC = 0;
time3 = CurrentTick(); //タイマーを起動
while(26000 >= timeC)
{ //26秒間繰り返す
timeC = CurrentTick()-time3;
if(SENSOR_3 < THRESHOLD)
{
left01;
}else
{
right01;
}
Wait(STEP);
}
/*ゴールをするためのプログラム*/
short_break01;
right00;
Off(OUT_BC);Wait(600);//ここでボールのゆれをとめる
OnFwd(OUT_A,-30);Wait(500);Off(OUT_A);
OnFwd(OUT_BC,100);Wait(300);Off(OUT_BC);
OnFwd(OUT_BC,-100);Wait(400);Off(OUT_BC);
}
**反省 [#f85ab0ac]
-交差点を通るプログラムを書くことができなかった。交差点を...
-時間を指定するやり方もこのやり方では電池によってずれてし...
そのため、ゴールの斜めから右を向かせるようにして、多少の...
-時間指定によるプログラムのため、応用が利かず、電池の消耗...
**今後のために [#k9c3c363]
-課題のページをみんなが作ると思うので、それをよく見て、理...
-一つ一つのプログラムの意味を理解することでより正確に作る...
*全体をとおして [#r8742b22]
***反省・感想 [#g0705045]
ロボットに関する知識も、プログラムに関する知識も足りない...
期末までにはこの2つの知識をなんとしても得ることで、満足...
また、自分の動かしたいもの、作りたいもの、イメージしてい...
そして、過去の先輩やネットから多くの情報を得られるので、...
ページ名: