2017b/Member/kuwa/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*今回の課題 [#d8f15565]
ピンポン玉と紙コップを別々に回収して所定の場所に運ぶ。
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
**マップ解説 [#oaa332eb]
~図のマジェンタの円に逆さまにした紙コップを置き、その中に...
~図の黄色い円に紙コップを通常の向きに置き、障害物とする。...
~紙コップには色をつけたり文字や記号を書いてもよい。
~割り箸を使って一辺が14cmの正方形を作り、X地点を中心とし...
**ルール [#s01c366e]
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
◦図のA地点または(および)D地点からスタートする。た...
に収まるものとする(線上はOK)。上空部分は領域からはみ出...
◦ピンポン玉をX地点に運び、割り箸で正方形に囲まれた...
◦紙コップをY地点がある黒線に囲まれた領域に運ぶ。
◦開始の合図から5秒以内にスタートボタンを押す作業を...
◦競技が終了するまで、ロボットに触ったり人間が遠隔で...
◦途中でうまく動かなくなった場合、1回限り再スタート...
*ロボットの説明 [#ic8408e0]
RIS1台ではモーターを3つまでしか動かせないので、2つのRIS...
**車体部分 [#k1ce9a6f]
&ref(1.jpg);
&ref(2.jpg);
~基本的にはライントレースのロボットである。センサー位置が...
**アーム部分 [#h3082750]
&ref(3.jpg);
&ref(4.jpg);
&ref(5.jpg);
~アームを上げ下げするために棒を上下から押すしくみを作った...
*プログラム [#o19c543f]
アームを上げ下げするためのRISのプログラム
#define up(t) OnRev(OUT_A);Wait(t);Off(OUT_A);//アームを...
#define down(t) OnFwd(OUT_A);Wait(t);Off(OUT_A);//アーム...
task main ()
{
Wait(870);//一つ目のコップに着くまでまで待つ
up(30);//アームを上げる
Wait(200);//円Xに着くまで待つ
down(30);//アームを下す
}
マップ上を移動するためのRISのプログラム
#define leftSENKAI OnFwd(OUT_A);OnRev(OUT_C); //左旋回
#define leftMAGARU OnFwd(OUT_A);Off(OUT_C); //左折
#define rightSENKAI OnFwd(OUT_C);OnRev(OUT_A); //右旋回
#define rightMAGARU OnFwd(OUT_C);Off(OUT_A); //右折
#define ch OnFwd(OUT_B);Wait(30);Off(OUT_B); //アームを...
#define re OnRev(OUT_B);Wait(20);Off(OUT_B); //アームを...
#define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); //t秒...
#define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); //t...
#define cross_stop Off(OUT_AC);Wait(100); //1秒止まる
#define carb 46 //閾値
ライントレースのプログラム
sub r()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); //光センサを2にセ...
ClearTimer(0);
while(FastTimer(0)<=20) //0.2秒より小さければ以下...
{
if(SENSOR_2>middle+5) //閾値より大きい時左...
{
leftSENKAI
ClearTimer(0);
}
else if(SENSOR_2>middle+3) //閾値より少し大きい時...
{
leftMAGARU
ClearTimer(0);
}
else if(SENSOR_2>middle) //閾値の時直進
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>middle-3) //閾値より少し小さい時...
{
rightMAGARU
ClearTimer(0);
}
else
{
rightSENKAI //閾値より小さい時右旋回
}
}
Off(OUT_AC); //0.2秒以上の時停止
}
task main ()
{
go(30); //A地点の枠から出る
r(); //A〜Bライントレース
leftSENKAI;
Wait(5); //左旋回して位置調整
re; //アームを開く
go(160); //直線ABの延長上にあるコップに近づく
cross_stop; //一時停止
ch; //アームを閉じコップをつかむ
rightSENKAI;
Wait(140); //右旋回して位置調整
cross_stop; //一時停止
ch; //コップを離さないように再びアームを閉じる
go(90); //X地点に近づく
cross_stop; //一時停止
re; //アームを開きX地点にコップを置く
back(100); //後退して位置調整
leftSENKAI;
Wait(30); //左旋回して位置調整
go(200); //前進して位置調整
rightSENKAI;
Wait(40); //右旋回して障害物に当たらないようにする
re; //アームを開く
go(250); //交差点Qの上にあるコップを本体で押しながらY...
}
*結果と反省 [#p50361fc]
ロボット制作に多くの時間を費やしたが、アームの重さにモー...
終了行:
#contents
*今回の課題 [#d8f15565]
ピンポン玉と紙コップを別々に回収して所定の場所に運ぶ。
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
**マップ解説 [#oaa332eb]
~図のマジェンタの円に逆さまにした紙コップを置き、その中に...
~図の黄色い円に紙コップを通常の向きに置き、障害物とする。...
~紙コップには色をつけたり文字や記号を書いてもよい。
~割り箸を使って一辺が14cmの正方形を作り、X地点を中心とし...
**ルール [#s01c366e]
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
◦図のA地点または(および)D地点からスタートする。た...
に収まるものとする(線上はOK)。上空部分は領域からはみ出...
◦ピンポン玉をX地点に運び、割り箸で正方形に囲まれた...
◦紙コップをY地点がある黒線に囲まれた領域に運ぶ。
◦開始の合図から5秒以内にスタートボタンを押す作業を...
◦競技が終了するまで、ロボットに触ったり人間が遠隔で...
◦途中でうまく動かなくなった場合、1回限り再スタート...
*ロボットの説明 [#ic8408e0]
RIS1台ではモーターを3つまでしか動かせないので、2つのRIS...
**車体部分 [#k1ce9a6f]
&ref(1.jpg);
&ref(2.jpg);
~基本的にはライントレースのロボットである。センサー位置が...
**アーム部分 [#h3082750]
&ref(3.jpg);
&ref(4.jpg);
&ref(5.jpg);
~アームを上げ下げするために棒を上下から押すしくみを作った...
*プログラム [#o19c543f]
アームを上げ下げするためのRISのプログラム
#define up(t) OnRev(OUT_A);Wait(t);Off(OUT_A);//アームを...
#define down(t) OnFwd(OUT_A);Wait(t);Off(OUT_A);//アーム...
task main ()
{
Wait(870);//一つ目のコップに着くまでまで待つ
up(30);//アームを上げる
Wait(200);//円Xに着くまで待つ
down(30);//アームを下す
}
マップ上を移動するためのRISのプログラム
#define leftSENKAI OnFwd(OUT_A);OnRev(OUT_C); //左旋回
#define leftMAGARU OnFwd(OUT_A);Off(OUT_C); //左折
#define rightSENKAI OnFwd(OUT_C);OnRev(OUT_A); //右旋回
#define rightMAGARU OnFwd(OUT_C);Off(OUT_A); //右折
#define ch OnFwd(OUT_B);Wait(30);Off(OUT_B); //アームを...
#define re OnRev(OUT_B);Wait(20);Off(OUT_B); //アームを...
#define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); //t秒...
#define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); //t...
#define cross_stop Off(OUT_AC);Wait(100); //1秒止まる
#define carb 46 //閾値
ライントレースのプログラム
sub r()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); //光センサを2にセ...
ClearTimer(0);
while(FastTimer(0)<=20) //0.2秒より小さければ以下...
{
if(SENSOR_2>middle+5) //閾値より大きい時左...
{
leftSENKAI
ClearTimer(0);
}
else if(SENSOR_2>middle+3) //閾値より少し大きい時...
{
leftMAGARU
ClearTimer(0);
}
else if(SENSOR_2>middle) //閾値の時直進
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>middle-3) //閾値より少し小さい時...
{
rightMAGARU
ClearTimer(0);
}
else
{
rightSENKAI //閾値より小さい時右旋回
}
}
Off(OUT_AC); //0.2秒以上の時停止
}
task main ()
{
go(30); //A地点の枠から出る
r(); //A〜Bライントレース
leftSENKAI;
Wait(5); //左旋回して位置調整
re; //アームを開く
go(160); //直線ABの延長上にあるコップに近づく
cross_stop; //一時停止
ch; //アームを閉じコップをつかむ
rightSENKAI;
Wait(140); //右旋回して位置調整
cross_stop; //一時停止
ch; //コップを離さないように再びアームを閉じる
go(90); //X地点に近づく
cross_stop; //一時停止
re; //アームを開きX地点にコップを置く
back(100); //後退して位置調整
leftSENKAI;
Wait(30); //左旋回して位置調整
go(200); //前進して位置調整
rightSENKAI;
Wait(40); //右旋回して障害物に当たらないようにする
re; //アームを開く
go(250); //交差点Qの上にあるコップを本体で押しながらY...
}
*結果と反省 [#p50361fc]
ロボット制作に多くの時間を費やしたが、アームの重さにモー...
ページ名: