2013b/Member/Sakai/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
**目次 [#pe0f32e3]
#contents
**仕組みについて [#k70a7234]
#ref(zenntai1.jpg)
基本的な骨組はNXTに付属されている設計図どうりである
しかしながら缶を掴むために枠をつけさらに缶を認知するために超音波センサーを車体前方に搭載した~
枠にはバーが二本つけてあり、バーの間で缶をはさむ
**コースを走るために [#rda61dca]
ロボットがコースを半時計回りに自在に為に光度計を搭載し、その値の変化にってロボットにライントレスを行わさせる~
ライントレスをしながら進むにおいて以下のプログラムを作成した~
まずプログラムをスリムにするために以下のことを定義する
#define THRESHOLD 36
#define SPEED_H 50
#define SPEED_L 25
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL);
#define go_forward OnRL(SPEED_H,SPEED_H);
#define turn_left1 OnRL(SPEED_L,-SPEED_L);
#define turn_left0 OnRL(SPEED_L,0);
#define turn_right0 OnRL(0,SPEED_L);
#define turn_right1 OnRL(-SPEED_L,SPEED_L);
#define STEP 1
#br
**コースを走る [#wc74f77c]
ロボットが交差点や急速カーブ地点以外を走っている時のプログラムを以下のように定める
sub kihon(){
if (SENSOR_1 <THRESHOLD-15) {
} else if (SENSOR_1<THRESHOLD) {
turn_left0;
} else if (SENSOR_1<THRESHOLD+3) {
go_forward;
} else if (SENSOR_1 < THRESHOLD+23) {
turn_right0;
} else if (SENSOR_1>=THRESHOLD+23) {
turn_right1;
}
Wait(STEP);
}
1000分の1秒間隔で光度計はコースをはかり以下の行動を行う
光度計が21以下の値をとった場合に急速左折を行う~
光度計が21以上36以下の値をとった場合に微速左折を行う~
光度計が36以上39以下の値をとった場合に前進する~
光度計が39以上59以下の値をとった場合に微速右折する
光度計が59以上の値をとった場合に急速右折する~
以上の行動をサブルーチンを使って定義しこの名前を以下よりkihonとする~
long t0 = CurrentTick();
上記のプログラムを使うことによってロボットが稼働開始してからの現在時刻をはかることによって、より正確にライントレスさせる~
稼働開始してから交差点までの時間を図ることによって、ロボットに交差点を通過させる~
ロボットが稼働開始してから25秒までの間サブルーチンkihonを実行させる~
***交差点を通る [#z14b5664]
25から28秒までの間にロボットは一つ目の交差点に差し掛かるのでkihonとは別の以下のプログラムを起動させる
if (SENSOR_1 <=THRESHOLD-15) {
turn_left1;
} else if (SENSOR_1<THRESHOLD) {
turn_left0;
anti_l++;
} else if (SENSOR_1<THRESHOLD+3) {
go_forward;
} else if (SENSOR_1 < THRESHOLD+23) {
turn_right0;
} else if (SENSOR_1>=THRESHOLD+23)
turn_right1;
}
Wait(STEP);
if(anti_l==1){go_forward;Wait(300);}
anti_l=0;
大まかなところはkihonと変わらないがロボットが交差点に差し掛った場合に必ず微速左折を行うのでそれを阻止するためにanti_lを設定させる。このカウンターはロボットが微速左折した場合に起動し、ロボットを前進させる。それによって交差点を克服させる~
通常のコースを走る場合にはkihonを、交差点を走る場面には上記のプログラムを、と時間を測りそれぞれ対応させることによってコースを走らせる~
**問題点 [#aec3cf82]
・このロボットにおける最も重大な問題は枠を下した際の車体の全長があまりにも長すぎることだ。当初の予定は枠を下し半回転してから枠を上げることによって缶を退ける仕組みであったが、長すぎる車体によって回転半径が大きくなり、どうしてもコース用紙からはみ出してしまいレポートを編集中の今でも缶を掴む仕組みは完成していない。~
・交差点を走らせるをプログラムは交差点に差し掛かる前後数秒間左折するように認識した場合に前進させるようにした。しかしながらそれでは交差点を真に認識していない可能性もあるやもしれない
**感想 [#wb7ea5ea]
この課題を通して感じたことは自分のパソコンスキルのなさ、計画性のなさ、発想のなさである。~
缶がつかめない一番の理由はその枠を掴む仕組みの長さだ、こんなものは作っている最中に気が付くべきである。もともとは缶をマジックハンドのように掴む仕組みを作る予定であったが私の幼稚な頭では到底思いつかず、結局は簡素な仕組みを作ること人になったが結果は上記の通りである。~
参考にするために他のお手本のレポートを拝見したのだが驚きを隠せない。まずは写真や図の見やすさである。私は写真を一枚載せているが、これだけでも数十分かかっている。しかしながらお手本の写真は見やすいように画像のサイズを調整しなんとペイントで加工までしているのではないか、私のやたらサイズのでかい白茶けた画像とは大違いである。
終了行:
**目次 [#pe0f32e3]
#contents
**仕組みについて [#k70a7234]
#ref(zenntai1.jpg)
基本的な骨組はNXTに付属されている設計図どうりである
しかしながら缶を掴むために枠をつけさらに缶を認知するために超音波センサーを車体前方に搭載した~
枠にはバーが二本つけてあり、バーの間で缶をはさむ
**コースを走るために [#rda61dca]
ロボットがコースを半時計回りに自在に為に光度計を搭載し、その値の変化にってロボットにライントレスを行わさせる~
ライントレスをしながら進むにおいて以下のプログラムを作成した~
まずプログラムをスリムにするために以下のことを定義する
#define THRESHOLD 36
#define SPEED_H 50
#define SPEED_L 25
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL);
#define go_forward OnRL(SPEED_H,SPEED_H);
#define turn_left1 OnRL(SPEED_L,-SPEED_L);
#define turn_left0 OnRL(SPEED_L,0);
#define turn_right0 OnRL(0,SPEED_L);
#define turn_right1 OnRL(-SPEED_L,SPEED_L);
#define STEP 1
#br
**コースを走る [#wc74f77c]
ロボットが交差点や急速カーブ地点以外を走っている時のプログラムを以下のように定める
sub kihon(){
if (SENSOR_1 <THRESHOLD-15) {
} else if (SENSOR_1<THRESHOLD) {
turn_left0;
} else if (SENSOR_1<THRESHOLD+3) {
go_forward;
} else if (SENSOR_1 < THRESHOLD+23) {
turn_right0;
} else if (SENSOR_1>=THRESHOLD+23) {
turn_right1;
}
Wait(STEP);
}
1000分の1秒間隔で光度計はコースをはかり以下の行動を行う
光度計が21以下の値をとった場合に急速左折を行う~
光度計が21以上36以下の値をとった場合に微速左折を行う~
光度計が36以上39以下の値をとった場合に前進する~
光度計が39以上59以下の値をとった場合に微速右折する
光度計が59以上の値をとった場合に急速右折する~
以上の行動をサブルーチンを使って定義しこの名前を以下よりkihonとする~
long t0 = CurrentTick();
上記のプログラムを使うことによってロボットが稼働開始してからの現在時刻をはかることによって、より正確にライントレスさせる~
稼働開始してから交差点までの時間を図ることによって、ロボットに交差点を通過させる~
ロボットが稼働開始してから25秒までの間サブルーチンkihonを実行させる~
***交差点を通る [#z14b5664]
25から28秒までの間にロボットは一つ目の交差点に差し掛かるのでkihonとは別の以下のプログラムを起動させる
if (SENSOR_1 <=THRESHOLD-15) {
turn_left1;
} else if (SENSOR_1<THRESHOLD) {
turn_left0;
anti_l++;
} else if (SENSOR_1<THRESHOLD+3) {
go_forward;
} else if (SENSOR_1 < THRESHOLD+23) {
turn_right0;
} else if (SENSOR_1>=THRESHOLD+23)
turn_right1;
}
Wait(STEP);
if(anti_l==1){go_forward;Wait(300);}
anti_l=0;
大まかなところはkihonと変わらないがロボットが交差点に差し掛った場合に必ず微速左折を行うのでそれを阻止するためにanti_lを設定させる。このカウンターはロボットが微速左折した場合に起動し、ロボットを前進させる。それによって交差点を克服させる~
通常のコースを走る場合にはkihonを、交差点を走る場面には上記のプログラムを、と時間を測りそれぞれ対応させることによってコースを走らせる~
**問題点 [#aec3cf82]
・このロボットにおける最も重大な問題は枠を下した際の車体の全長があまりにも長すぎることだ。当初の予定は枠を下し半回転してから枠を上げることによって缶を退ける仕組みであったが、長すぎる車体によって回転半径が大きくなり、どうしてもコース用紙からはみ出してしまいレポートを編集中の今でも缶を掴む仕組みは完成していない。~
・交差点を走らせるをプログラムは交差点に差し掛かる前後数秒間左折するように認識した場合に前進させるようにした。しかしながらそれでは交差点を真に認識していない可能性もあるやもしれない
**感想 [#wb7ea5ea]
この課題を通して感じたことは自分のパソコンスキルのなさ、計画性のなさ、発想のなさである。~
缶がつかめない一番の理由はその枠を掴む仕組みの長さだ、こんなものは作っている最中に気が付くべきである。もともとは缶をマジックハンドのように掴む仕組みを作る予定であったが私の幼稚な頭では到底思いつかず、結局は簡素な仕組みを作ること人になったが結果は上記の通りである。~
参考にするために他のお手本のレポートを拝見したのだが驚きを隠せない。まずは写真や図の見やすさである。私は写真を一枚載せているが、これだけでも数十分かかっている。しかしながらお手本の写真は見やすいように画像のサイズを調整しなんとペイントで加工までしているのではないか、私のやたらサイズのでかい白茶けた画像とは大違いである。
ページ名: