2016b/Member/sennokiseki/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016b/Member]]
目次
#contents
*課題 [#s530d136]
**課題の内容 [#yc6819d1]
定められたコース上をライントレースし、道中でピンポン玉...
**コース [#r1504dc3]
下図のコースを用いた、今回はAスタート→P直進→Q直進→Q直進...
#ref(2016b/Member/sennokiseki/Mission2/課題2コース.jpg,1...
*機体 [#q9db8c0a]
**全体 [#u002d445]
-正確なライントレースをするため、できるだけコンパクトにし...
-全体的に強度を高めることに気を遣った。
#ref(2016b/Member/sennokiseki/Mission2/DSC_0045.JPG,100%,...
-今回の機体でも持ち運びのために分解性は重視した。組み立て...
#ref(2016b/Member/sennokiseki/Mission2/DSC_0048.JPG,100%,...
**ライトセンサー [#g967053f]
-ライトセンサーはNXT本体とモーターの間のスペースを活用し...
**ピンポン玉のキャッチ [#tc76bcfd]
-超音波センサーとピンポン玉をキャッチするための機構はまと...
-超音波センサーでピンポン玉を検知するとモーターが回転して...
#ref(2016b/Member/sennokiseki/Mission2/DSC_0046.JPG,100%,...
*プログラム [#t2e3b7fb]
**基本動作の定義 [#c4b5ed38]
-まずは基本動作を定義した。TYOKUSHINではSyncによって両車...
-TURN_LがTURN_Rよりパワーが強いのは、普通のカーブではでき...
-SENKAI_Rは急な右カーブを曲がりきるために作ったが、実際に...
#define TYOKUSHIN OnFwdSync(OUT_BC,30,0); //直...
#define TURN_L OnFwd(OUT_B,50);OnRev(OUT_C,30); //左...
#define TURN_R OnFwd(OUT_C,40);OnRev(OUT_B,10); //右...
#define SENKAI_R OnFwd(OUT_C,50);OnRev(OUT_B,25); //右...
-CROSSとつくものは全て交差点での動作である。交差点での右...
-CROSS_STOPにてOnRevSync(OUT_BC,50,100);と右回転している...
-CROSS_RにてOnFwdSync(OUT_BC,40,0);と前進しているが、これ...
#define CROSS_GO OnFwdSync(OUT_BC,40,0);Wait(500); ...
#define CROSS_STOP Off(OUT_BC);Wait(1000);OnRevSync(OUT_...
#define CROSS_L RotateMotorEx(OUT_BC,40,220,-100,true,tr...
#define CROSS_R OnFwdSync(OUT_BC,40,0);Wait(400);RotateM...
**ライントレース [#t0bba094]
***しきい値の定義 [#q91c994e]
-機体の動作を切り換える境目となるしきい値を定義する。この...
#define THRESHOLD_SR 50 //SENKAI_RとTURN_Rの境目(白強...
#define THRESHOLD_R 45 //TURN_RとTYOKUSHINの境目(白と...
#define THRESHOLD_T 40 //TYOKUSHINとTURN_Lの境目(黒強...
***ライントレースのプログラム(サブルーチン) [#a6110236]
-トレースの動作をサブルーチンで作っていつでも呼べるように...
-基本の仕組みとしてはラインの左側を、ライトセンサーの値に...
-一定時間ライトセンサーがTHRESHOLD_T未満の値を検知し続け...
-プログラム内のコメントにもあるように、sub TRACE の中にあ...
sub TRACE()
{
long n=CurrentTick(); //nを現在時間...
while(CurrentTick()-n<570){ //その時の現...
if(SENSOR_1>THRESHOLD_SR){ //ライトセン...
SENKAI_R;
n=CurrentTick(); //nをリセット...
} else if(SENSOR_1>THRESHOLD_R){ //(※)
TURN_R;
n=CurrentTick(); //nをリセット...
} else if(SENSOR_1>THRESHOLD_T){ //(※)
TYOKUSHIN;
n=CurrentTick(); //nをリセット...
} else { //上記if内の...
TURN_L;
}
if(x==0){ //以降は「キ...
if(SensorUS(S2)>17){
CATCH;
GET_MUSIC();
OnFwdSync(OUT_BC,30,-100);
Wait(300);
x=x+1;
n=CurrentTick();
}
}
}
}
**交差点検知 [#c1520078]
- sub TRACE のwhileから外れると交差点と認識するようにして...
-mの値を交差点の数としている。(mは task main で定義して...
CROSS_STOP;
PlayTone(440,200); //交差点を検知した時に合図として...
Wait(220);
m = m +1; //交差点の数をカウント
if(m>6){ //交差点の数が6を超えた時if内を...
SHOOT(); //「シュート」参照
GOAL(); //ゴール時に鳴る音楽。載せはしな...
} else if(m==6){ //交差点の数が6の時if内を実行
CROSS_L;
} else if(m==5){ //交差点の数が5の時if内を実行
CROSS_GO;
} else if(m==4){ //交差点の数が4の時if内を実行
CROSS_R;
} else { //交差点の数が3以下の時実行
CROSS_GO;
}
**ピンポン玉キャッチ&シュート [#sf263de1]
***超音波センサー [#o3e86ca0]
-今回はピンポン玉をキャッチする際、検知に超音波センサーを...
-床までの距離が17cmでピンポン玉を挟むと12cm程にな...
-うまくいかなかった原因として、ピンポン玉が曲面であるため...
***キャッチ [#yf7f732e]
-まずはキャッチの動作自体を定義する。
#define CATCH Off(OUT_BC);Wait(500);OnFwd(OUT_A,40);Wait...
-次に sub TRACE 内にピンポン玉キャッチのためのプログラム...
-Aのモーターが二回以上動くのを防ぐための措置をとった。そ...
int x;
if(x==0){ //ピンポン玉をキャ...
if(SensorUS(S2)>17){ //超音波センサーが...
CATCH; //ピンポン玉キャッチ
GET_MUSIC(); //キャッチ時に鳴る...
OnFwdSync(OUT_BC,30,-100); //交差点誤検知防止...
Wait(300);
x=x+1; //一度ピンポン玉を...
n=CurrentTick(); //nをリセットする
}
}
***シュート (サブルーチン)[#v8fac765]
sub SHOOT()
{
OnRevSync(OUT_BC,40,0); //7つ目の交差点から後退
Wait(1000);
Off(OUT_BC); //シュートするためにそ...
Wait(400);
RotateMotor(OUT_A,70,-60); //シュート
}
**本文 [#o28ad173]
-重複はあるが本文は以下のようである。サブルーチンを用いた...
task main()
{
SetSensorLight(S1); //ライトセンサーをセット
SetSensorLowspeed(S2); //超音波センサーをセット
int m=0; //交差点の数を数えるための...
while(true){ //ずっと繰り返す
TRACE();
CROSS_STOP;
PlayTone(440,200);
Wait(220);
m = m +1;
if(m>6){
SHOOT();
GOAL();
} else if(m==6){
CROSS_L;
} else if(m==5){
CROSS_GO;
} else if(m==4){
CROSS_R;
} else {
CROSS_GO;
}
}
}
**プログラムについての反省 [#sc90b45c]
-SENKAI_Rがほとんど意味をなしてなかった。急カーブは曲がり...
-ボールキャッチ時の軌道修正然り、余分なところやもっとスマ...
*実演の結果 [#b2696d87]
**成功 [#vf665e20]
発表時は二回目にして完璧に成功させることができた。
**失敗 [#vcb15851]
発表時一回目は途中交差点を検知しなかった。練習では一度も...
***原因 [#j2eec63e]
しきい値と回転の角度の調整の甘さということも考えられるが...
***改善点 [#s2912cec]
-ライトセンサーをもっと低い位置にする。
-発表時の失敗とは関係ないが、アームが重さに負けて降りてき...
*反省と感想 [#xe5673ef]
-課題を達成することこそできたものの反省点の残る結果となっ...
-「プログラムについての反省」にもあるように、無意味だった...
-ハード面でもモニターが見づらかったりライトセンサーの位置...
-ソフトハード両面に反省点があったわけだが、まだ自分には両...
-今回は時間がなかったのと作ってる当時は気づかなかったため...
終了行:
[[2016b/Member]]
目次
#contents
*課題 [#s530d136]
**課題の内容 [#yc6819d1]
定められたコース上をライントレースし、道中でピンポン玉...
**コース [#r1504dc3]
下図のコースを用いた、今回はAスタート→P直進→Q直進→Q直進...
#ref(2016b/Member/sennokiseki/Mission2/課題2コース.jpg,1...
*機体 [#q9db8c0a]
**全体 [#u002d445]
-正確なライントレースをするため、できるだけコンパクトにし...
-全体的に強度を高めることに気を遣った。
#ref(2016b/Member/sennokiseki/Mission2/DSC_0045.JPG,100%,...
-今回の機体でも持ち運びのために分解性は重視した。組み立て...
#ref(2016b/Member/sennokiseki/Mission2/DSC_0048.JPG,100%,...
**ライトセンサー [#g967053f]
-ライトセンサーはNXT本体とモーターの間のスペースを活用し...
**ピンポン玉のキャッチ [#tc76bcfd]
-超音波センサーとピンポン玉をキャッチするための機構はまと...
-超音波センサーでピンポン玉を検知するとモーターが回転して...
#ref(2016b/Member/sennokiseki/Mission2/DSC_0046.JPG,100%,...
*プログラム [#t2e3b7fb]
**基本動作の定義 [#c4b5ed38]
-まずは基本動作を定義した。TYOKUSHINではSyncによって両車...
-TURN_LがTURN_Rよりパワーが強いのは、普通のカーブではでき...
-SENKAI_Rは急な右カーブを曲がりきるために作ったが、実際に...
#define TYOKUSHIN OnFwdSync(OUT_BC,30,0); //直...
#define TURN_L OnFwd(OUT_B,50);OnRev(OUT_C,30); //左...
#define TURN_R OnFwd(OUT_C,40);OnRev(OUT_B,10); //右...
#define SENKAI_R OnFwd(OUT_C,50);OnRev(OUT_B,25); //右...
-CROSSとつくものは全て交差点での動作である。交差点での右...
-CROSS_STOPにてOnRevSync(OUT_BC,50,100);と右回転している...
-CROSS_RにてOnFwdSync(OUT_BC,40,0);と前進しているが、これ...
#define CROSS_GO OnFwdSync(OUT_BC,40,0);Wait(500); ...
#define CROSS_STOP Off(OUT_BC);Wait(1000);OnRevSync(OUT_...
#define CROSS_L RotateMotorEx(OUT_BC,40,220,-100,true,tr...
#define CROSS_R OnFwdSync(OUT_BC,40,0);Wait(400);RotateM...
**ライントレース [#t0bba094]
***しきい値の定義 [#q91c994e]
-機体の動作を切り換える境目となるしきい値を定義する。この...
#define THRESHOLD_SR 50 //SENKAI_RとTURN_Rの境目(白強...
#define THRESHOLD_R 45 //TURN_RとTYOKUSHINの境目(白と...
#define THRESHOLD_T 40 //TYOKUSHINとTURN_Lの境目(黒強...
***ライントレースのプログラム(サブルーチン) [#a6110236]
-トレースの動作をサブルーチンで作っていつでも呼べるように...
-基本の仕組みとしてはラインの左側を、ライトセンサーの値に...
-一定時間ライトセンサーがTHRESHOLD_T未満の値を検知し続け...
-プログラム内のコメントにもあるように、sub TRACE の中にあ...
sub TRACE()
{
long n=CurrentTick(); //nを現在時間...
while(CurrentTick()-n<570){ //その時の現...
if(SENSOR_1>THRESHOLD_SR){ //ライトセン...
SENKAI_R;
n=CurrentTick(); //nをリセット...
} else if(SENSOR_1>THRESHOLD_R){ //(※)
TURN_R;
n=CurrentTick(); //nをリセット...
} else if(SENSOR_1>THRESHOLD_T){ //(※)
TYOKUSHIN;
n=CurrentTick(); //nをリセット...
} else { //上記if内の...
TURN_L;
}
if(x==0){ //以降は「キ...
if(SensorUS(S2)>17){
CATCH;
GET_MUSIC();
OnFwdSync(OUT_BC,30,-100);
Wait(300);
x=x+1;
n=CurrentTick();
}
}
}
}
**交差点検知 [#c1520078]
- sub TRACE のwhileから外れると交差点と認識するようにして...
-mの値を交差点の数としている。(mは task main で定義して...
CROSS_STOP;
PlayTone(440,200); //交差点を検知した時に合図として...
Wait(220);
m = m +1; //交差点の数をカウント
if(m>6){ //交差点の数が6を超えた時if内を...
SHOOT(); //「シュート」参照
GOAL(); //ゴール時に鳴る音楽。載せはしな...
} else if(m==6){ //交差点の数が6の時if内を実行
CROSS_L;
} else if(m==5){ //交差点の数が5の時if内を実行
CROSS_GO;
} else if(m==4){ //交差点の数が4の時if内を実行
CROSS_R;
} else { //交差点の数が3以下の時実行
CROSS_GO;
}
**ピンポン玉キャッチ&シュート [#sf263de1]
***超音波センサー [#o3e86ca0]
-今回はピンポン玉をキャッチする際、検知に超音波センサーを...
-床までの距離が17cmでピンポン玉を挟むと12cm程にな...
-うまくいかなかった原因として、ピンポン玉が曲面であるため...
***キャッチ [#yf7f732e]
-まずはキャッチの動作自体を定義する。
#define CATCH Off(OUT_BC);Wait(500);OnFwd(OUT_A,40);Wait...
-次に sub TRACE 内にピンポン玉キャッチのためのプログラム...
-Aのモーターが二回以上動くのを防ぐための措置をとった。そ...
int x;
if(x==0){ //ピンポン玉をキャ...
if(SensorUS(S2)>17){ //超音波センサーが...
CATCH; //ピンポン玉キャッチ
GET_MUSIC(); //キャッチ時に鳴る...
OnFwdSync(OUT_BC,30,-100); //交差点誤検知防止...
Wait(300);
x=x+1; //一度ピンポン玉を...
n=CurrentTick(); //nをリセットする
}
}
***シュート (サブルーチン)[#v8fac765]
sub SHOOT()
{
OnRevSync(OUT_BC,40,0); //7つ目の交差点から後退
Wait(1000);
Off(OUT_BC); //シュートするためにそ...
Wait(400);
RotateMotor(OUT_A,70,-60); //シュート
}
**本文 [#o28ad173]
-重複はあるが本文は以下のようである。サブルーチンを用いた...
task main()
{
SetSensorLight(S1); //ライトセンサーをセット
SetSensorLowspeed(S2); //超音波センサーをセット
int m=0; //交差点の数を数えるための...
while(true){ //ずっと繰り返す
TRACE();
CROSS_STOP;
PlayTone(440,200);
Wait(220);
m = m +1;
if(m>6){
SHOOT();
GOAL();
} else if(m==6){
CROSS_L;
} else if(m==5){
CROSS_GO;
} else if(m==4){
CROSS_R;
} else {
CROSS_GO;
}
}
}
**プログラムについての反省 [#sc90b45c]
-SENKAI_Rがほとんど意味をなしてなかった。急カーブは曲がり...
-ボールキャッチ時の軌道修正然り、余分なところやもっとスマ...
*実演の結果 [#b2696d87]
**成功 [#vf665e20]
発表時は二回目にして完璧に成功させることができた。
**失敗 [#vcb15851]
発表時一回目は途中交差点を検知しなかった。練習では一度も...
***原因 [#j2eec63e]
しきい値と回転の角度の調整の甘さということも考えられるが...
***改善点 [#s2912cec]
-ライトセンサーをもっと低い位置にする。
-発表時の失敗とは関係ないが、アームが重さに負けて降りてき...
*反省と感想 [#xe5673ef]
-課題を達成することこそできたものの反省点の残る結果となっ...
-「プログラムについての反省」にもあるように、無意味だった...
-ハード面でもモニターが見づらかったりライトセンサーの位置...
-ソフトハード両面に反省点があったわけだが、まだ自分には両...
-今回は時間がなかったのと作ってる当時は気づかなかったため...
ページ名: