2017b/Member/shun/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題2 [#of71d595]
黒い線に沿って動き紙コップを移動させるロボットを製作せよ。
#ref(2017b/Member/shun/Mission2/2017b-mission2.png,50%,ロ...
Aをスタート→Bを直進→Cを右折→Fを直進→Rを左折(一時停止)→Pを...
*ロボットの説明 [#gd0fe1e7]
トレースを可能にするために右と左に一つずつモーターをつけ...
#ref(2017b/Member/shun/Mission2/IMG_1885.JPG,30%,ロボット)
光センサーがロボットの中心部にできるだけ近づくように努力...
また後輪は一番小さいギアと一番大きいギアをかみ合わせるこ...
#ref(2017b/Member/shun/Mission2/IMG_1884.JPG,30%,ロボット)
コップを取るアームは下のように囲いを作りそれを上下に移動...
#ref(2017b/Member/shun/Mission2/IMG_1886.JPG,30%,ロボット)
*プログラミング [#tceae947]
**定義 [#r752f369]
スムーズなライントレースを可能にするために5段階の移動方法...
また直進、右折、左折は時間が指定できるよう定義し、アーム...
#define go_straight OnFwd(OUT_AC); SetPower(OUT_AC,5); ...
#define turn_right OnFwd(OUT_A);OnRev(OUT_C);SetPower(OU...
#define turn_left OnFwd(OUT_C);OnRev(OUT_A);SetPower(OUT...
#define sift_right OnFwd(OUT_A);Off(OUT_C);SetPower(OUT_...
#define sift_left OnFwd(OUT_C);Off(OUT_A);SetPower(OUT_C...
#define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); ...
#define right OnFwd(OUT_A);Wait(t);Off(OUT_A); ...
#define left OnFwd(OUT_C);Wait(t);Off(OUT_C); ...
#define down OnFwd(OUT_B);Wait(40);Off(OUT_B); ...
#define up OnRev(OUT_B);Wait(40);Off(OUT_B); ...
**サブルーチン [#ybcfffef]
基本的には右側のライントレースを使ったが、右側のライント...
***トレース(線の右側) [#i3bc3866]
SetSensorMode(SENSOR_2,SENSOR_MODE_RAW)を入れることにより...
また下のライントレースのサブルーチンでは右旋回の時間(光セ...
黒(閾値が830より大きい)→右旋回
やや黒(閾値が800より大きく830以下)→右折
やや白(閾値が770より小さく750以上)→左折
白(閾値が750より小さい)→左旋回
それ以外(閾値が770以上800以下)→直進
sub torace()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensorMode(SENSOR_2,SENSOR_MODE_RAW);
ClearTimer(0);
while(FastTimer(0)<32)
{
if(SENSOR_2>830) //閾値が830より大...
{
turn_right; //右旋回が0.32秒以...
}
else
{
if(SENSOR_2>800){ //閾値が800よりお...
sift_right //右折
ClearTimer(0); //タイマーを0にする
}else if(SENSOR_2<750){ //閾値が750より小...
turn_left //左旋回
ClearTimer(0); //タイマーを0にする
}else if(SENSOR_2<770){ //閾値が770より小...
sift_left //左折
ClearTimer(0); //タイマーを0にする
}else{ //上記の条件を満た...
go_straight //直進
ClearTimer(0); //タイマーを0にする
}
}
}
Off(OUT_AC);
}
***トレース(線の左側) [#g0fd5f8e]
上にある線の左側のライントレースと仕組みは同じで、線の左...
sub torace_left()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensorMode(SENSOR_2,SENSOR_MODE_RAW);
ClearTimer(0);
while(FastTimer(0)<32)
{
if(SENSOR_2>820) //閾値が820より...
{
turn_left; //左旋回が0.32...
}
else
{
if(SENSOR_2>800){ //閾値が800より...
sift_left //左折
ClearTimer(0); //タイマーを0に...
}else if(SENSOR_2<760){ //閾値が760より...
turn_right //右折
ClearTimer(0); //タイマーを0に...
}else if(SENSOR_2<780){ //閾値が780より...
sift_right //右折
ClearTimer(0); //タイマーを0に...
}else{ //上記の条件を...
go_straight //直進
ClearTimer(0); //タイマーを0に...
}
}
}
Off(OUT_AC);
}
**タスクメイン [#s2aa5515]
task main()
{
go(30);
torace(); //C地点
right(30);
torace(); //F地点
left(20);
torace(); //E地点
torace_left(); //R地点
Wait(100);
left(10);
torace_left(); //P地点
left(60);
down; //紙コップをつかむ
right(70);
torace_left(); //Q地点
go(20);
torace(); //S地点
go(30);
Wait(100);
torace(); //S地点
right(30);
Wait(100);
up; //紙コップ置く
torace(); //F地点
Wait(100);
right(30);
torace(); //C地点
Wait(100);
right(60);
go(40);
}
*結果 [#b98cbff4]
スタートからゴールまで行くことが出来たが、コップをうまく...
*感想 [#obbd96c7]
今回の課題は課題1に比べて、プログラミングが大変だった。ロ...
終了行:
#contents
*課題2 [#of71d595]
黒い線に沿って動き紙コップを移動させるロボットを製作せよ。
#ref(2017b/Member/shun/Mission2/2017b-mission2.png,50%,ロ...
Aをスタート→Bを直進→Cを右折→Fを直進→Rを左折(一時停止)→Pを...
*ロボットの説明 [#gd0fe1e7]
トレースを可能にするために右と左に一つずつモーターをつけ...
#ref(2017b/Member/shun/Mission2/IMG_1885.JPG,30%,ロボット)
光センサーがロボットの中心部にできるだけ近づくように努力...
また後輪は一番小さいギアと一番大きいギアをかみ合わせるこ...
#ref(2017b/Member/shun/Mission2/IMG_1884.JPG,30%,ロボット)
コップを取るアームは下のように囲いを作りそれを上下に移動...
#ref(2017b/Member/shun/Mission2/IMG_1886.JPG,30%,ロボット)
*プログラミング [#tceae947]
**定義 [#r752f369]
スムーズなライントレースを可能にするために5段階の移動方法...
また直進、右折、左折は時間が指定できるよう定義し、アーム...
#define go_straight OnFwd(OUT_AC); SetPower(OUT_AC,5); ...
#define turn_right OnFwd(OUT_A);OnRev(OUT_C);SetPower(OU...
#define turn_left OnFwd(OUT_C);OnRev(OUT_A);SetPower(OUT...
#define sift_right OnFwd(OUT_A);Off(OUT_C);SetPower(OUT_...
#define sift_left OnFwd(OUT_C);Off(OUT_A);SetPower(OUT_C...
#define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); ...
#define right OnFwd(OUT_A);Wait(t);Off(OUT_A); ...
#define left OnFwd(OUT_C);Wait(t);Off(OUT_C); ...
#define down OnFwd(OUT_B);Wait(40);Off(OUT_B); ...
#define up OnRev(OUT_B);Wait(40);Off(OUT_B); ...
**サブルーチン [#ybcfffef]
基本的には右側のライントレースを使ったが、右側のライント...
***トレース(線の右側) [#i3bc3866]
SetSensorMode(SENSOR_2,SENSOR_MODE_RAW)を入れることにより...
また下のライントレースのサブルーチンでは右旋回の時間(光セ...
黒(閾値が830より大きい)→右旋回
やや黒(閾値が800より大きく830以下)→右折
やや白(閾値が770より小さく750以上)→左折
白(閾値が750より小さい)→左旋回
それ以外(閾値が770以上800以下)→直進
sub torace()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensorMode(SENSOR_2,SENSOR_MODE_RAW);
ClearTimer(0);
while(FastTimer(0)<32)
{
if(SENSOR_2>830) //閾値が830より大...
{
turn_right; //右旋回が0.32秒以...
}
else
{
if(SENSOR_2>800){ //閾値が800よりお...
sift_right //右折
ClearTimer(0); //タイマーを0にする
}else if(SENSOR_2<750){ //閾値が750より小...
turn_left //左旋回
ClearTimer(0); //タイマーを0にする
}else if(SENSOR_2<770){ //閾値が770より小...
sift_left //左折
ClearTimer(0); //タイマーを0にする
}else{ //上記の条件を満た...
go_straight //直進
ClearTimer(0); //タイマーを0にする
}
}
}
Off(OUT_AC);
}
***トレース(線の左側) [#g0fd5f8e]
上にある線の左側のライントレースと仕組みは同じで、線の左...
sub torace_left()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensorMode(SENSOR_2,SENSOR_MODE_RAW);
ClearTimer(0);
while(FastTimer(0)<32)
{
if(SENSOR_2>820) //閾値が820より...
{
turn_left; //左旋回が0.32...
}
else
{
if(SENSOR_2>800){ //閾値が800より...
sift_left //左折
ClearTimer(0); //タイマーを0に...
}else if(SENSOR_2<760){ //閾値が760より...
turn_right //右折
ClearTimer(0); //タイマーを0に...
}else if(SENSOR_2<780){ //閾値が780より...
sift_right //右折
ClearTimer(0); //タイマーを0に...
}else{ //上記の条件を...
go_straight //直進
ClearTimer(0); //タイマーを0に...
}
}
}
Off(OUT_AC);
}
**タスクメイン [#s2aa5515]
task main()
{
go(30);
torace(); //C地点
right(30);
torace(); //F地点
left(20);
torace(); //E地点
torace_left(); //R地点
Wait(100);
left(10);
torace_left(); //P地点
left(60);
down; //紙コップをつかむ
right(70);
torace_left(); //Q地点
go(20);
torace(); //S地点
go(30);
Wait(100);
torace(); //S地点
right(30);
Wait(100);
up; //紙コップ置く
torace(); //F地点
Wait(100);
right(30);
torace(); //C地点
Wait(100);
right(60);
go(40);
}
*結果 [#b98cbff4]
スタートからゴールまで行くことが出来たが、コップをうまく...
*感想 [#obbd96c7]
今回の課題は課題1に比べて、プログラミングが大変だった。ロ...
ページ名: