2019b/Member/Hayashi/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019b/Member]]
#contents
課題2
*課題2 [#t733d938]
A地点を出発し、次のいずれかの経路を黒い線にそって動くロボ...
#ref(2019b-mission2.png)
+A地点から出発
+B
+C(直進)
+D (一時停止の後、直進)
+E, F 通過
+G (一時停止の後、左折)
+H (一時停止の後、左折)
+I (ボール or キューボイドをつかんでUターン)
+H (直進)
+J (一時停止)
+A地点に入る(ゴール)
*ロボットの説明 [#u2c36caa]
#ref(001.JPG)
このロボットは全体的に,前の方が重くなっており,カーブを...
#ref(002.JPG)
参考に乗っているような,光センサーの場合,上にモーターを...
#ref(003.JPG)
前の腕は,レゴブロックでくっつけるようにしました.意外と...
*プログラムの説明 [#j324c425]
**使用したプログラム [#kcb14d75]
#define THRESHOLD 55
#define SPEED_H 40
#define SPEED_L 30
#define onRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#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
#define nMAX 300
#define short_break Off(OUT_BC);Wait(1000);
#define CROSS_TIME 1000
#define cross_line onRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
#define u_turn OnRev(OUT_BC,SPEED_L);Wait(500);onRL(-
SPEED_H,SPEED_H);Wait(600);Off(OUT_BC);
#define down OnRev(OUT_A,30);Wait(500);Off(OUT_A);
sub follow_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<1){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
cross++;
cross_line;
nOnline=0;
}
}
sub magaru_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<2){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_left1;Wait(1000);
nOnline=0;
cross++;
}
}
sub komawari_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<1){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
turn_left0;
cross=0;
}
}
task main()
{
SetSensorLight(S3);
SetSensorLowspeed(S4);
int nOnline=0;
int cross=0;
follow_line();
magaru_line();
while(SensorUS(S4)>9){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
down;
u_turn;
komawari_line();
follow_line();
}
**使ったもの [#l5b33675]
***定義したもの; [#e42b4e88]
#define THRESHOLD 55
#define SPEED_H 40
#define SPEED_L 30
#define onRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#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
#define nMAX 300
#define short_break Off(OUT_BC);Wait(1000);
#define CROSS_TIME 1000
#define cross_line onRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
#define u_turn OnRev(OUT_BC,SPEED_L);Wait(500);onRL(-
SPEED_H,SPEED_H);Wait(600);Off(OUT_BC);
#define down OnRev(OUT_A,30);Wait(500);Off(OUT_A);
THRESHOLDで閾値を決めました.SPPED_HとSPEED_Lによって,速...
***関数; [#s38bedf4]
交差点Dを通過するとき,交差点を渡る時に,黒が何回続いたか...
sub follow_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<1){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
cross++;
cross_line;
nOnline=0;
}
}
交差点G,Hを左折するとき,上と同じように,nOnlineで数え上...
sub magaru_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<2){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_left1;Wait(1000);
nOnline=0;
cross++;
}
}
HからJの間の急カーブは,曲がる時に,黒が何回も続くせいで...
sub komawari_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<1){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
turn_left0;
cross=0;
}
}
関数は主に上の3つを定義しました.どの関数にも光センサーを...
***task_main()の中身 [#sd556bd2]
task main()
{
SetSensorLight(S3);
SetSensorLowspeed(S4);
int nOnline=0;
int cross=0;
follow_line();
magaru_line();
while(SensorUS(S4)>9){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
down;
u_turn;
komawari_line();
follow_line();
}
task_main()の中身は,超音波センサーを起動するため,まずセ...
*まとめ [#n2f758ec]
今回は,プログラミングの方でも,車体の方でもてこずりまし...
終了行:
[[2019b/Member]]
#contents
課題2
*課題2 [#t733d938]
A地点を出発し、次のいずれかの経路を黒い線にそって動くロボ...
#ref(2019b-mission2.png)
+A地点から出発
+B
+C(直進)
+D (一時停止の後、直進)
+E, F 通過
+G (一時停止の後、左折)
+H (一時停止の後、左折)
+I (ボール or キューボイドをつかんでUターン)
+H (直進)
+J (一時停止)
+A地点に入る(ゴール)
*ロボットの説明 [#u2c36caa]
#ref(001.JPG)
このロボットは全体的に,前の方が重くなっており,カーブを...
#ref(002.JPG)
参考に乗っているような,光センサーの場合,上にモーターを...
#ref(003.JPG)
前の腕は,レゴブロックでくっつけるようにしました.意外と...
*プログラムの説明 [#j324c425]
**使用したプログラム [#kcb14d75]
#define THRESHOLD 55
#define SPEED_H 40
#define SPEED_L 30
#define onRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#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
#define nMAX 300
#define short_break Off(OUT_BC);Wait(1000);
#define CROSS_TIME 1000
#define cross_line onRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
#define u_turn OnRev(OUT_BC,SPEED_L);Wait(500);onRL(-
SPEED_H,SPEED_H);Wait(600);Off(OUT_BC);
#define down OnRev(OUT_A,30);Wait(500);Off(OUT_A);
sub follow_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<1){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
cross++;
cross_line;
nOnline=0;
}
}
sub magaru_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<2){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_left1;Wait(1000);
nOnline=0;
cross++;
}
}
sub komawari_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<1){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
turn_left0;
cross=0;
}
}
task main()
{
SetSensorLight(S3);
SetSensorLowspeed(S4);
int nOnline=0;
int cross=0;
follow_line();
magaru_line();
while(SensorUS(S4)>9){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
down;
u_turn;
komawari_line();
follow_line();
}
**使ったもの [#l5b33675]
***定義したもの; [#e42b4e88]
#define THRESHOLD 55
#define SPEED_H 40
#define SPEED_L 30
#define onRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#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
#define nMAX 300
#define short_break Off(OUT_BC);Wait(1000);
#define CROSS_TIME 1000
#define cross_line onRL(SPEED_L,SPEED_L);Wait(CROSS_TIME...
#define u_turn OnRev(OUT_BC,SPEED_L);Wait(500);onRL(-
SPEED_H,SPEED_H);Wait(600);Off(OUT_BC);
#define down OnRev(OUT_A,30);Wait(500);Off(OUT_A);
THRESHOLDで閾値を決めました.SPPED_HとSPEED_Lによって,速...
***関数; [#s38bedf4]
交差点Dを通過するとき,交差点を渡る時に,黒が何回続いたか...
sub follow_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<1){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
cross++;
cross_line;
nOnline=0;
}
}
交差点G,Hを左折するとき,上と同じように,nOnlineで数え上...
sub magaru_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<2){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_left1;Wait(1000);
nOnline=0;
cross++;
}
}
HからJの間の急カーブは,曲がる時に,黒が何回も続くせいで...
sub komawari_line()
{
SetSensorLight(S3);
int nOnline=0;
int cross=0;
while(cross<1){
while(nOnline<nMAX){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
turn_left0;
cross=0;
}
}
関数は主に上の3つを定義しました.どの関数にも光センサーを...
***task_main()の中身 [#sd556bd2]
task main()
{
SetSensorLight(S3);
SetSensorLowspeed(S4);
int nOnline=0;
int cross=0;
follow_line();
magaru_line();
while(SensorUS(S4)>9){
if(SENSOR_3<THRESHOLD-15){
turn_left1;
nOnline++;
}else{
if(SENSOR_3<THRESHOLD-7){
turn_left0;
}else if(SENSOR_3<THRESHOLD+7){
go_forward;
}else if(SENSOR_3<THRESHOLD+15){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
down;
u_turn;
komawari_line();
follow_line();
}
task_main()の中身は,超音波センサーを起動するため,まずセ...
*まとめ [#n2f758ec]
今回は,プログラミングの方でも,車体の方でもてこずりまし...
ページ名: