2019a/Member/aoto/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題2 [#q9f9cf6a]
下の図のようなコースを各チームで作成し、「ミッション」を...
**コース [#sd0456bc]
#ref(2019a/Member/aoto/Mission2/course2019a.png,100%,robot)
**ミッション [#b86789f7]
A地点を出発し、次のいずれかの経路を黒い線にそって動くロボ...
交差点では1秒間停止し、丁字路では直角方向に進入する時のみ...
私は、以下のようなルートで試みた。
A,B(スタート)→C(直進)→D(停止後、直進)→G(左折)→J(左折)→K(...
*ロボット [#p655b343]
#ref(2019a/Member/aoto/Mission2/robot.jpg,90%,robot)
初期段階のロボットにアームを取り付けたものである。
光センサーをタイヤの間に取り付けた。
#ref(2019a/Member/aoto/Mission2/robot2.jpg,90%,robot2)
ボールを運ぶ部分は3つ目のモーターを使うことでより安定して...
*プログラム [#ma223713]
**定義 [#offa0f4f]
右折、左折、右旋回、左旋回、そして直進を定義した。
#define migi0 OnFwd(OUT_C,25);Off(OUT_B); //左折
#define hidari0 OnFwd(OUT_B,25);Off(OUT_C); //右折
#define migi1 OnFwd(OUT_C,30);OnRev(OUT_B,30); //左旋回
#define hidari1 OnFwd(OUT_B,30);OnRev(OUT_C,30); //右旋回
#define tyokusinn OnFwd(OUT_BC,30); //直進
光センサーの値を測定したところ
-黒26
-黒灰35
-白灰45
-白52
という結果になった。以後この値をもとにプログラムを作成し...
**交差点で停止するライントレースプログラム [#o8f0c9c9]
交差点は通常の直線と違い黒の値を長い間認識することが分か...
つまり、交差点で停止させるには黒にいる時間が一定時間を超...
void line_trace()
{
SetSensorLight(S3);
long t0; //long型でt0を定義
t0=CurrentTick(); //t0に現在の時間を代入
while(CurrentTick()-t0<100){ //今からt0になるまで0.1...
if(SENSOR_3>50){ //明るさ51以上(真っ白...
migi1; //右旋回
t0=CurrentTick(); //t0を更新
}else if(SENSOR_3>43){ //明るさ44〜50(白より...
migi0; //右折
t0=CurrentTick(); //t0を更新
}else if(SENSOR_3>38){ //明るさ39〜43(白と黒...
tyokusinn; //直進
t0=CurrentTick(); //t0を更新
}else if(SENSOR_3>30){ //明るさ31〜38(黒より...
hidari0; //左折
t0=CurrentTick(); //t0を更新
}else{ //明るさ30以下が測定さ...
hidari1; //左旋回
}
}
Wait(1000); //1秒停止
}
t0という時間変数を用いて黒が連続して観測される時間を図っ...
このプログラムは黒以外の値をとるとt0を更新し、黒ではt0は...
**停止後、直進、左折するプログラム [#g7df47c9]
交差点やT字路で停止したあとの動作を定義する
void go()
{
OnFwd(OUT_BC,35);
Wait(100); //0.1秒直進
}
void left()
{
OnFwd(OUT_C,35);
Wait(80); //0.08秒左折
}
**カーブに対応したプログラム [#v5562ca8]
交差点で停止するプログラムでは、黒を0.1秒以上認知した場合...
void line_trace2(long tt) //メインプログラムで()に数字を...
{
SetSensorLight(S3);
long t1; //long型でt1を定義 ...
t1=CurrentTick() //t1は現在の時間である
while(CurrentTick()-t1<tt){ //今からt1になるまでtt/10...
if(SENSOR_1>50){ //明るさ51以上(真っ白)...
migi1; //右旋回 ...
}else if(SENSOR_1>44){ //もし光センサで44〜50の...
migi0; //右折
}else if(SENSOR_1>39){ //もし光センサで39〜43の...
tyokusinn; //直進
}else if(SENSOR_1>30){ //もし光センサで31〜38の...
hidari0; //左折 ...
}else{ //もし光センサで30以下の...
hidari1; //左旋回
} ...
}
}
**全体のプログラム [#hf2d1e43]
task main()
{
go; //AからBへ進む
Wait(100); //0.1秒行う(調整用)
line_trace(); //BからDまで進む
go; //Dの交差点を直進する
line_trace; //DからGまで進む
left; //Gを左折
line_trace; //GからJまで進む
left; //Jを左折
line_trace; //JからKまで進む
left; //Kを左折
line_trace(2500); //2.5秒でKからLまで進む...
hidari0; //左旋回
Wait(600); //0.6秒行う(要調整)
go;
wait(40); //先の左側に移動(要調整)
line_trace2(10000); //10秒間(急カーブ)進む
line_trace; //Mまで進む
go; //シュート!
Wait(20);
}
*感想 [#rd2a72ee]
結論を言うと今回の課題は達成することができなかった。動作...
終了行:
#contents
*課題2 [#q9f9cf6a]
下の図のようなコースを各チームで作成し、「ミッション」を...
**コース [#sd0456bc]
#ref(2019a/Member/aoto/Mission2/course2019a.png,100%,robot)
**ミッション [#b86789f7]
A地点を出発し、次のいずれかの経路を黒い線にそって動くロボ...
交差点では1秒間停止し、丁字路では直角方向に進入する時のみ...
私は、以下のようなルートで試みた。
A,B(スタート)→C(直進)→D(停止後、直進)→G(左折)→J(左折)→K(...
*ロボット [#p655b343]
#ref(2019a/Member/aoto/Mission2/robot.jpg,90%,robot)
初期段階のロボットにアームを取り付けたものである。
光センサーをタイヤの間に取り付けた。
#ref(2019a/Member/aoto/Mission2/robot2.jpg,90%,robot2)
ボールを運ぶ部分は3つ目のモーターを使うことでより安定して...
*プログラム [#ma223713]
**定義 [#offa0f4f]
右折、左折、右旋回、左旋回、そして直進を定義した。
#define migi0 OnFwd(OUT_C,25);Off(OUT_B); //左折
#define hidari0 OnFwd(OUT_B,25);Off(OUT_C); //右折
#define migi1 OnFwd(OUT_C,30);OnRev(OUT_B,30); //左旋回
#define hidari1 OnFwd(OUT_B,30);OnRev(OUT_C,30); //右旋回
#define tyokusinn OnFwd(OUT_BC,30); //直進
光センサーの値を測定したところ
-黒26
-黒灰35
-白灰45
-白52
という結果になった。以後この値をもとにプログラムを作成し...
**交差点で停止するライントレースプログラム [#o8f0c9c9]
交差点は通常の直線と違い黒の値を長い間認識することが分か...
つまり、交差点で停止させるには黒にいる時間が一定時間を超...
void line_trace()
{
SetSensorLight(S3);
long t0; //long型でt0を定義
t0=CurrentTick(); //t0に現在の時間を代入
while(CurrentTick()-t0<100){ //今からt0になるまで0.1...
if(SENSOR_3>50){ //明るさ51以上(真っ白...
migi1; //右旋回
t0=CurrentTick(); //t0を更新
}else if(SENSOR_3>43){ //明るさ44〜50(白より...
migi0; //右折
t0=CurrentTick(); //t0を更新
}else if(SENSOR_3>38){ //明るさ39〜43(白と黒...
tyokusinn; //直進
t0=CurrentTick(); //t0を更新
}else if(SENSOR_3>30){ //明るさ31〜38(黒より...
hidari0; //左折
t0=CurrentTick(); //t0を更新
}else{ //明るさ30以下が測定さ...
hidari1; //左旋回
}
}
Wait(1000); //1秒停止
}
t0という時間変数を用いて黒が連続して観測される時間を図っ...
このプログラムは黒以外の値をとるとt0を更新し、黒ではt0は...
**停止後、直進、左折するプログラム [#g7df47c9]
交差点やT字路で停止したあとの動作を定義する
void go()
{
OnFwd(OUT_BC,35);
Wait(100); //0.1秒直進
}
void left()
{
OnFwd(OUT_C,35);
Wait(80); //0.08秒左折
}
**カーブに対応したプログラム [#v5562ca8]
交差点で停止するプログラムでは、黒を0.1秒以上認知した場合...
void line_trace2(long tt) //メインプログラムで()に数字を...
{
SetSensorLight(S3);
long t1; //long型でt1を定義 ...
t1=CurrentTick() //t1は現在の時間である
while(CurrentTick()-t1<tt){ //今からt1になるまでtt/10...
if(SENSOR_1>50){ //明るさ51以上(真っ白)...
migi1; //右旋回 ...
}else if(SENSOR_1>44){ //もし光センサで44〜50の...
migi0; //右折
}else if(SENSOR_1>39){ //もし光センサで39〜43の...
tyokusinn; //直進
}else if(SENSOR_1>30){ //もし光センサで31〜38の...
hidari0; //左折 ...
}else{ //もし光センサで30以下の...
hidari1; //左旋回
} ...
}
}
**全体のプログラム [#hf2d1e43]
task main()
{
go; //AからBへ進む
Wait(100); //0.1秒行う(調整用)
line_trace(); //BからDまで進む
go; //Dの交差点を直進する
line_trace; //DからGまで進む
left; //Gを左折
line_trace; //GからJまで進む
left; //Jを左折
line_trace; //JからKまで進む
left; //Kを左折
line_trace(2500); //2.5秒でKからLまで進む...
hidari0; //左旋回
Wait(600); //0.6秒行う(要調整)
go;
wait(40); //先の左側に移動(要調整)
line_trace2(10000); //10秒間(急カーブ)進む
line_trace; //Mまで進む
go; //シュート!
Wait(20);
}
*感想 [#rd2a72ee]
結論を言うと今回の課題は達成することができなかった。動作...
ページ名: