2014b/Member/arisyka/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*はじめに [#h30f9622]
課題は指定されたルートに沿ってロボットをライントレースさ...
-一回目に交差点にさしかかったときは直進
-二回目は左折
-三回目は直進
-四回目は右折
-五回目は右折 → ゴールへ
という動きである。
([[2014年後期/課題2:http://yakushi.shinshu-u.ac.jp/roboti...
*ロボットの説明 [#oeb4a03e]
NXCの前に光センサを取り付けたシンプルな構造である。
この光センサによって白と黒の判断をさせることが出来る。
また、小回りを利かせるためにパーツ1つ分だけ光センサをNXC...
#ref(2014b/Member/arisyka/Mission2/IMG_3679.gif,20%)
*プログラムの説明 [#uee9a021]
今回私はタイマー機能を使って区間ごとにプログラムを変え...
また、小タイトル後の()内はそのプログラムの略称を示して...
**タイマー機能 [#f68eaa40]
プログラミング方法は、ある基準となる時刻を記憶しておき、...
測る直前の時刻をlong型の変数t0(t1、t2、…など複数の変数...
long t0=CurrentTick(); //CurrentTick()で現在の時刻...
while(CurrentTick()-t0<=○){ … } //CurrentTick()とt...
**黒い線(の境界線)に沿って動くプログラム(白黒) [#j7bd...
ラインに沿ってロボットをライントレースをするための一般的...
方法として、光センサが白い部分に差し掛かったら黒い線へ、...
#define SPEED 53
#define THRESHOLD 45
#define turn_left3 OnFwd(OUT_B,SPEED);Off(OUT_C); ...
#define turn_right3 Off(OUT_B);OnFwd(OUT_C,SPEED); ...
#define STEP 1
task main()
{
SetSensorLight(S3);
while(タイマー){
if(SENSOR_3<THRESHOLD){
turn_left3 //黒線上なら左折
}else{
turn_right3 //白い部分なら右折
}
Wait(STEP);
}
**交差点を渡るプログラム(交差点) [#x28ffe2d]
白黒のプログラムをもっと滑らかに進ませるために工夫したプ...
一般に、交差点を渡るために下のようなプログラムが使用され...
#define THRESHOLD 45 //仕切り値
#define SPEED_H1 60 //直進する用の速さ
#define SPEED_L 30 //カーブ用の速さ
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H1,SPEED_H1); ...
#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 //一...
#define nMAX 100 //繰...
#define short_break Off(OUT_BC);Wait(1000); //小...
#define CROSS_TIME 200 //交...
#define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
task main()
{
SetSensorLight(S3);
int nOnline=0
while(タイマー){
while(nOnline<nMAX){ //黒を続けてnMAX回繰り...
if(SENSOR_3<THRESHOLD-12){
turn_left1; //33以下なら左旋回
nOnline++; //カウンタを増やす
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0; //38以下なら左折
}else if(SENSOR_3<THRESHOLD+7){
go_forward; //52以上なら直進
}else if(SENSOR_3<THRESHOLD+13){
turn_right0; //58以上なら右折
}else{
turn_right1; //上記以外なら右旋回
}
nOnline=0; //カウンタをリセット
}
Wait(STEP);
}
short_break;
turn_right1;Wait(nMAX*STEP);
cross_line; //交差点を渡る
nOnline=0; //カウンタをリセット
}
*苦労した点・問題点・解決策 [#bb6ab3b9]
私が一番苦労したことは、ロボットがちゃんとライントレース...
これを改善しようと光センサの値やスピードを変えるなどの工...
レース自体を書き直すわけにはいかない為、プログラミングで...
*ライントレース [#sc51066f]
ロボットにライントレースをさせるために4つのパターンを考え...
1~3パターン目のプログラムでは、失敗した理由と改善点を説明...
**パターン1 [#xbe7b0a0]
交差点(18s)→左旋回(黒線にかかるまで)→交差点(27s)→右旋回(...
始め課題のライントレースのプログラムを作るとき、交差点と...
**パターン2 [#k627386a]
交差点(10s)→白黒(10s)→左旋回(黒線にかかるまで)→交差点(10s...
パターン1のプログラムの問題点を改善することが出来た。しか...
**パターン3 [#a6f9b3a2]
白黒(21s)→左旋回(黒線にかかるまで)→白黒(20s)→右旋回(黒線...
白黒のプログラムの方が安定で確実にライントレースをするた...
その理由として今までは、旋回を行う時間をuntil(THRESHOLD_3...
旋回を確実に行うためにもWaitを用いて、この問題を解決させ...
**パターン4(成功プログラム) [#w0e23605]
白黒(21s)→左旋回(0.8s)→白黒(20s)→右旋回(0.8s)→白黒(10s)→...
#define SPEED 53
#define THRESHOLD 45
#define SPEED_L 30
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define turn_left1 OnRL(SPEED_L,-SPEED_L);
#define turn_right1 OnRL(-SPEED_L,SPEED_L);
#define turn_left3 OnFwd(OUT_B,SPEED);Off(OUT_C);
#define turn_right3 Off(OUT_B);OnFwd(OUT_C,SPEED);
#define STEP 1
task main()
{
SetSensorLight(S3);
-オレンジのコース
#ref(2014b/Member/arisyka/Mission2/レース 1-1.png,50%)
long t0=CurrentTick();
while(CurrentTick()-t0<=21000){ 21秒間白黒
if(SENSOR_3<THRESHOLD){
turn_left3
}else{
turn_right3
}
Wait(STEP);
}
-黄緑のコース
#ref(2014b/Member/arisyka/Mission2/レース 1-2.png,50%)
turn_left1; 0.8秒間白黒
Wait(800);
long t1=CurrentTick();
while(CurrentTick()-t1<=20000){ 20秒間白黒
if(SENSOR_3<THRESHOLD){
turn_left3
}else{
turn_right3
}
Wait(STEP);
}
-水色のコース
#ref(2014b/Member/arisyka/Mission2/レース 1-3.png,50%)
turn_right1;
Wait(800); //0.8秒間右旋回
long t2=CurrentTick();
while(CurrentTick()-t2<=10000){ //10秒間白黒
if(SENSOR_3<THRESHOLD){
turn_left3
}else{
turn_right3
}
Wait(STEP);
}
-紫のコース
#ref(2014b/Member/arisyka/Mission2/レース 1-4.png,50%)
turn_right1;
Wait(800); //0.8秒右旋回
long t3=CurrentTick();
while(CurrentTick()-t3<=50000){ //50秒間白黒
if(SENSOR_3<THRESHOLD){
turn_left3
}else{
turn_right3
}
Wait(STEP);
}
}
*考察・感想 [#dd213a86]
プログラム自体はそんなに長いものではなく、おおまかなプロ...
終了行:
目次
#contents
*はじめに [#h30f9622]
課題は指定されたルートに沿ってロボットをライントレースさ...
-一回目に交差点にさしかかったときは直進
-二回目は左折
-三回目は直進
-四回目は右折
-五回目は右折 → ゴールへ
という動きである。
([[2014年後期/課題2:http://yakushi.shinshu-u.ac.jp/roboti...
*ロボットの説明 [#oeb4a03e]
NXCの前に光センサを取り付けたシンプルな構造である。
この光センサによって白と黒の判断をさせることが出来る。
また、小回りを利かせるためにパーツ1つ分だけ光センサをNXC...
#ref(2014b/Member/arisyka/Mission2/IMG_3679.gif,20%)
*プログラムの説明 [#uee9a021]
今回私はタイマー機能を使って区間ごとにプログラムを変え...
また、小タイトル後の()内はそのプログラムの略称を示して...
**タイマー機能 [#f68eaa40]
プログラミング方法は、ある基準となる時刻を記憶しておき、...
測る直前の時刻をlong型の変数t0(t1、t2、…など複数の変数...
long t0=CurrentTick(); //CurrentTick()で現在の時刻...
while(CurrentTick()-t0<=○){ … } //CurrentTick()とt...
**黒い線(の境界線)に沿って動くプログラム(白黒) [#j7bd...
ラインに沿ってロボットをライントレースをするための一般的...
方法として、光センサが白い部分に差し掛かったら黒い線へ、...
#define SPEED 53
#define THRESHOLD 45
#define turn_left3 OnFwd(OUT_B,SPEED);Off(OUT_C); ...
#define turn_right3 Off(OUT_B);OnFwd(OUT_C,SPEED); ...
#define STEP 1
task main()
{
SetSensorLight(S3);
while(タイマー){
if(SENSOR_3<THRESHOLD){
turn_left3 //黒線上なら左折
}else{
turn_right3 //白い部分なら右折
}
Wait(STEP);
}
**交差点を渡るプログラム(交差点) [#x28ffe2d]
白黒のプログラムをもっと滑らかに進ませるために工夫したプ...
一般に、交差点を渡るために下のようなプログラムが使用され...
#define THRESHOLD 45 //仕切り値
#define SPEED_H1 60 //直進する用の速さ
#define SPEED_L 30 //カーブ用の速さ
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H1,SPEED_H1); ...
#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 //一...
#define nMAX 100 //繰...
#define short_break Off(OUT_BC);Wait(1000); //小...
#define CROSS_TIME 200 //交...
#define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
task main()
{
SetSensorLight(S3);
int nOnline=0
while(タイマー){
while(nOnline<nMAX){ //黒を続けてnMAX回繰り...
if(SENSOR_3<THRESHOLD-12){
turn_left1; //33以下なら左旋回
nOnline++; //カウンタを増やす
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0; //38以下なら左折
}else if(SENSOR_3<THRESHOLD+7){
go_forward; //52以上なら直進
}else if(SENSOR_3<THRESHOLD+13){
turn_right0; //58以上なら右折
}else{
turn_right1; //上記以外なら右旋回
}
nOnline=0; //カウンタをリセット
}
Wait(STEP);
}
short_break;
turn_right1;Wait(nMAX*STEP);
cross_line; //交差点を渡る
nOnline=0; //カウンタをリセット
}
*苦労した点・問題点・解決策 [#bb6ab3b9]
私が一番苦労したことは、ロボットがちゃんとライントレース...
これを改善しようと光センサの値やスピードを変えるなどの工...
レース自体を書き直すわけにはいかない為、プログラミングで...
*ライントレース [#sc51066f]
ロボットにライントレースをさせるために4つのパターンを考え...
1~3パターン目のプログラムでは、失敗した理由と改善点を説明...
**パターン1 [#xbe7b0a0]
交差点(18s)→左旋回(黒線にかかるまで)→交差点(27s)→右旋回(...
始め課題のライントレースのプログラムを作るとき、交差点と...
**パターン2 [#k627386a]
交差点(10s)→白黒(10s)→左旋回(黒線にかかるまで)→交差点(10s...
パターン1のプログラムの問題点を改善することが出来た。しか...
**パターン3 [#a6f9b3a2]
白黒(21s)→左旋回(黒線にかかるまで)→白黒(20s)→右旋回(黒線...
白黒のプログラムの方が安定で確実にライントレースをするた...
その理由として今までは、旋回を行う時間をuntil(THRESHOLD_3...
旋回を確実に行うためにもWaitを用いて、この問題を解決させ...
**パターン4(成功プログラム) [#w0e23605]
白黒(21s)→左旋回(0.8s)→白黒(20s)→右旋回(0.8s)→白黒(10s)→...
#define SPEED 53
#define THRESHOLD 45
#define SPEED_L 30
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define turn_left1 OnRL(SPEED_L,-SPEED_L);
#define turn_right1 OnRL(-SPEED_L,SPEED_L);
#define turn_left3 OnFwd(OUT_B,SPEED);Off(OUT_C);
#define turn_right3 Off(OUT_B);OnFwd(OUT_C,SPEED);
#define STEP 1
task main()
{
SetSensorLight(S3);
-オレンジのコース
#ref(2014b/Member/arisyka/Mission2/レース 1-1.png,50%)
long t0=CurrentTick();
while(CurrentTick()-t0<=21000){ 21秒間白黒
if(SENSOR_3<THRESHOLD){
turn_left3
}else{
turn_right3
}
Wait(STEP);
}
-黄緑のコース
#ref(2014b/Member/arisyka/Mission2/レース 1-2.png,50%)
turn_left1; 0.8秒間白黒
Wait(800);
long t1=CurrentTick();
while(CurrentTick()-t1<=20000){ 20秒間白黒
if(SENSOR_3<THRESHOLD){
turn_left3
}else{
turn_right3
}
Wait(STEP);
}
-水色のコース
#ref(2014b/Member/arisyka/Mission2/レース 1-3.png,50%)
turn_right1;
Wait(800); //0.8秒間右旋回
long t2=CurrentTick();
while(CurrentTick()-t2<=10000){ //10秒間白黒
if(SENSOR_3<THRESHOLD){
turn_left3
}else{
turn_right3
}
Wait(STEP);
}
-紫のコース
#ref(2014b/Member/arisyka/Mission2/レース 1-4.png,50%)
turn_right1;
Wait(800); //0.8秒右旋回
long t3=CurrentTick();
while(CurrentTick()-t3<=50000){ //50秒間白黒
if(SENSOR_3<THRESHOLD){
turn_left3
}else{
turn_right3
}
Wait(STEP);
}
}
*考察・感想 [#dd213a86]
プログラム自体はそんなに長いものではなく、おおまかなプロ...
ページ名: