2019a/Member/yuka/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
*目次 [#gfd180ac]
#contents
*課題内容 [#j3d00ab6]
黒線の幅は20mmでなるべく均等な濃さにすること。ゴールには...
課題2のコース
#ref(2019a/Member/yuka/Mission2/課題のルート,10%,課題のル...
A地点を出発し、次のいずれかの経路を黒い線にそって動くロボ...
(他のメンバーとは別の経路になるようにする)。
-A地点から出発 → B → C(直進) → D(一時停止の後、直進) → E ...
#br
-A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(...
交差点では1秒間停止し、丁字路では直角方向に進入する時のみ...
*ロボットの仕様 [#cb96596b]
#ref(2019a/Member/yuka/Mission2/斜め上.jpg,10%,斜め上)
-前輪と後輪とモーターなどの基本構造は説明書のままにした。
-光センサーは正確な値を図れるように車体前方の車輪のすぐそ...
#ref(2019a/Member/yuka/Mission2/前.jpg,10%,前)
#ref(2019a/Member/yuka/Mission2/左横.jpg,10%,左横)
-部品を減らして構造を単純化するために、ボールを掴むのでは...
#ref(2019a/Member/yuka/Mission2/アーム.jpg,10%,アーム)
*プログラミング [#p5058ead]
-定義したこと
--BLACK 21 //ライン?
--B_WHITE 31 //ライン?
--Gray 35 //ライン?
--W_BLACK 56 //ライン?
--WHITE 63 //ライン?
添付ファイル色図を参照
--MOVE_TIME1 400 //ライントレースす...
--go_forward OnFwd(OUT_BC,30);
--turn_left OnFwd(OUT_B,30);Off(OUT_C);
--turn_right OnFwd(OUT_C,30);Off(OUT_B);
--short_break Off(OUT_BC);Wait(1000);
--rot_left OnFwd(OUT_B,30);OnRev(OUT_C,30); //左に旋...
--rot_right OnFwd(OUT_C,30);OnRev(OUT_B,30); //右に旋回
--rot_left2 OnFwd(OUT_B,40);OnRev(OUT_C,40); //左に旋...
--A_down OnFwd(OUT_A,20);Wait(300);Off(OUT_A); //ボール...
--A_up OnRev(OUT_A,30);Wait(300);Off(OUT_A); //ボール...
--go_back OnRev(OUT_BC,30);Wait(300);Off(OUT_BC);
--follow_line() //線上を進む
{
SetSensorLight(S3);
long t0 = CurrentTick();
while(CurrentTick()-t0<=MOVE_TIME1) {
if (SENSOR_3>WHITE) {t0=CurrentTick();
rot_right; //明るさが63...
} else if (SENSOR_3>W_BLACK){t0=CurrentTick();
turn_right; //明るさが56よ...
} else if (SENSOR_3>Gray){t0=CurrentTick();
go_forward; //明るさが35...
} else if (SENSOR_3>W_BLACK) {t0=CurrentTick();
turn_left; //明るさが31...
} else {
rot_left; //明るさが21...
}
}
}
--cross_line() //交差点を曲がらずに超える
{
while(SENSOR_3<Gray){
go_forward; //明るさが35より大きいとき直進
}
while(SENSOR_3>W_BLACK){
turn_right; //明るさが31より大きいとき右に...
}
Off(OUT_BC);
}
--fetch() //線を追うときに時間内で動作を終える
{
long t1;
t1=CurrentTick();
while(CurrentTick()-t1<400){
if(SENSOR_3>WHITE) {
rot_left; //明るさが63より大きいとき...
} else if (SENSOR_3>W_BLACK){
turn_right; //明るさが56より大きいとき...
} else if (SENSOR_3>Gray){
go_forward; //明るさが35より大きいとき...
} else if (SENSOR_3>W_BLACK) {
turn_left; //明るさが31より大きいとき左...
} else {
rot_right; //明るさが21より大きいとき右...
}
}
}
*ライントレースする仕組み
---光センサーにより線上の明るさを感知して、判別すると添付...
---交差点はBLACKの時間によって判断している。
まず交差点に行くまでは上記のように進む。交差点に行きつく...
-プログラムの全体像
task main()
follow_line();
short_break;
cross_line();
go_forward;
Wait(300); //アームを下ろす前に一度止まる
A_down; //アームをおろしてから
fetch(); //進む
follow_line();
rot_left2;
Wait(1600); //200度ほど旋回して
go_forward;
Wait(600); //次のラインまですすむ
turn_left;
Wait(1000); //センサーがうまく反応しなかったので...
go_forward;
Wait(500); //次のラインまで進む
follow_line();
cross_line();
follow_line();
A_up; //アームを上げて
go_forward(); //シュート
}
*生じた問題と改善 [#hddd9d01]
-KLにかけての交差点を超えてボールを取り、旋回してKJ間の道...
→明るさの調整と定義した操作を利用した。
#br
-旋回するときに他の線をたどりだしてしまう
→出力を上げて光センサーがラインを感知する暇を作らない。
*結果 [#u2e285cf]
-一回でコースをすべて回りきることは一回くらいしかなかった。
-部分的に走行できても途中で道を外れてしまうことが多かった。
#ref(2019a/Member/yuka/Mission2/運ぶ様子.jpg,10%,運ぶ様子)
#ref(2019a/Member/yuka/Mission2/ゴール直前.jpg,10%,ゴール...
#ref(2019a/Member/yuka/Mission2/ゴール.jpg,10%,ゴール)
*反省と感想 [#uc82f4b9]
-ロボットの作成は課題1よりは難しくなかったが、色の微調整...
-すべてがfollow_line で進めることができなかったので、この...
終了行:
[[2019a/Member]]
*目次 [#gfd180ac]
#contents
*課題内容 [#j3d00ab6]
黒線の幅は20mmでなるべく均等な濃さにすること。ゴールには...
課題2のコース
#ref(2019a/Member/yuka/Mission2/課題のルート,10%,課題のル...
A地点を出発し、次のいずれかの経路を黒い線にそって動くロボ...
(他のメンバーとは別の経路になるようにする)。
-A地点から出発 → B → C(直進) → D(一時停止の後、直進) → E ...
#br
-A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(...
交差点では1秒間停止し、丁字路では直角方向に進入する時のみ...
*ロボットの仕様 [#cb96596b]
#ref(2019a/Member/yuka/Mission2/斜め上.jpg,10%,斜め上)
-前輪と後輪とモーターなどの基本構造は説明書のままにした。
-光センサーは正確な値を図れるように車体前方の車輪のすぐそ...
#ref(2019a/Member/yuka/Mission2/前.jpg,10%,前)
#ref(2019a/Member/yuka/Mission2/左横.jpg,10%,左横)
-部品を減らして構造を単純化するために、ボールを掴むのでは...
#ref(2019a/Member/yuka/Mission2/アーム.jpg,10%,アーム)
*プログラミング [#p5058ead]
-定義したこと
--BLACK 21 //ライン?
--B_WHITE 31 //ライン?
--Gray 35 //ライン?
--W_BLACK 56 //ライン?
--WHITE 63 //ライン?
添付ファイル色図を参照
--MOVE_TIME1 400 //ライントレースす...
--go_forward OnFwd(OUT_BC,30);
--turn_left OnFwd(OUT_B,30);Off(OUT_C);
--turn_right OnFwd(OUT_C,30);Off(OUT_B);
--short_break Off(OUT_BC);Wait(1000);
--rot_left OnFwd(OUT_B,30);OnRev(OUT_C,30); //左に旋...
--rot_right OnFwd(OUT_C,30);OnRev(OUT_B,30); //右に旋回
--rot_left2 OnFwd(OUT_B,40);OnRev(OUT_C,40); //左に旋...
--A_down OnFwd(OUT_A,20);Wait(300);Off(OUT_A); //ボール...
--A_up OnRev(OUT_A,30);Wait(300);Off(OUT_A); //ボール...
--go_back OnRev(OUT_BC,30);Wait(300);Off(OUT_BC);
--follow_line() //線上を進む
{
SetSensorLight(S3);
long t0 = CurrentTick();
while(CurrentTick()-t0<=MOVE_TIME1) {
if (SENSOR_3>WHITE) {t0=CurrentTick();
rot_right; //明るさが63...
} else if (SENSOR_3>W_BLACK){t0=CurrentTick();
turn_right; //明るさが56よ...
} else if (SENSOR_3>Gray){t0=CurrentTick();
go_forward; //明るさが35...
} else if (SENSOR_3>W_BLACK) {t0=CurrentTick();
turn_left; //明るさが31...
} else {
rot_left; //明るさが21...
}
}
}
--cross_line() //交差点を曲がらずに超える
{
while(SENSOR_3<Gray){
go_forward; //明るさが35より大きいとき直進
}
while(SENSOR_3>W_BLACK){
turn_right; //明るさが31より大きいとき右に...
}
Off(OUT_BC);
}
--fetch() //線を追うときに時間内で動作を終える
{
long t1;
t1=CurrentTick();
while(CurrentTick()-t1<400){
if(SENSOR_3>WHITE) {
rot_left; //明るさが63より大きいとき...
} else if (SENSOR_3>W_BLACK){
turn_right; //明るさが56より大きいとき...
} else if (SENSOR_3>Gray){
go_forward; //明るさが35より大きいとき...
} else if (SENSOR_3>W_BLACK) {
turn_left; //明るさが31より大きいとき左...
} else {
rot_right; //明るさが21より大きいとき右...
}
}
}
*ライントレースする仕組み
---光センサーにより線上の明るさを感知して、判別すると添付...
---交差点はBLACKの時間によって判断している。
まず交差点に行くまでは上記のように進む。交差点に行きつく...
-プログラムの全体像
task main()
follow_line();
short_break;
cross_line();
go_forward;
Wait(300); //アームを下ろす前に一度止まる
A_down; //アームをおろしてから
fetch(); //進む
follow_line();
rot_left2;
Wait(1600); //200度ほど旋回して
go_forward;
Wait(600); //次のラインまですすむ
turn_left;
Wait(1000); //センサーがうまく反応しなかったので...
go_forward;
Wait(500); //次のラインまで進む
follow_line();
cross_line();
follow_line();
A_up; //アームを上げて
go_forward(); //シュート
}
*生じた問題と改善 [#hddd9d01]
-KLにかけての交差点を超えてボールを取り、旋回してKJ間の道...
→明るさの調整と定義した操作を利用した。
#br
-旋回するときに他の線をたどりだしてしまう
→出力を上げて光センサーがラインを感知する暇を作らない。
*結果 [#u2e285cf]
-一回でコースをすべて回りきることは一回くらいしかなかった。
-部分的に走行できても途中で道を外れてしまうことが多かった。
#ref(2019a/Member/yuka/Mission2/運ぶ様子.jpg,10%,運ぶ様子)
#ref(2019a/Member/yuka/Mission2/ゴール直前.jpg,10%,ゴール...
#ref(2019a/Member/yuka/Mission2/ゴール.jpg,10%,ゴール)
*反省と感想 [#uc82f4b9]
-ロボットの作成は課題1よりは難しくなかったが、色の微調整...
-すべてがfollow_line で進めることができなかったので、この...
ページ名: