2013b/Member/mato/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013b/Member]]
#contents
*MISSION [#d4ab6ca5]
-2台のロボットで空き缶を収集し、ゴールに空き缶になるべく...
**基本ルール [#j6b30dbe]
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-図の左下の隅からスタートする。ロボットが紙からはみ出ない...
-空き缶を集めて図の「ゴール」と書かれた円弧と直線で囲まれ...
-なるべく高く空き缶を積み上げる
-運び終わった後、あるいは積み上げた後はロボットはゴールの...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
&ref(2013b/Member/mato/Mission2/route.JPG);
*ロボットの説明 [#ya482e58]
-戦略 二台のロボットを駆使して、缶を集めるロボットと缶を...
&ref(2013b/Member/mato/Mission2/route2.jpg);
積み上げロボットが青のルートで缶を一つ持ってゴールで待機...
**積み上げロボット [#x0b93d5e]
&ref(2013b/Member/mato/Mission2/IMG_0696.JPG,50%);
缶を縦に二個掴みタイヤで押さえつける。
&ref(2013b/Member/mato/Mission2/IMG_0698.JPG,50%);
この二つのタイヤで缶を持ち上げる。
&ref(2013b/Member/mato/Mission2/IMG_0689.JPG,50%);
モーターの出力が3つしかないため、直進しかできなくなりま...
**収集ロボット [#n309ed06]
&ref(2013b/Member/mato/Mission2/IMG_0687.JPG,50%);
&ref(2013b/Member/mato/Mission2/IMG_0693.JPG,50%);
シンプルです。積むロボットとの関係上、缶一つだけしか運べ...
*メンバー [#y8876074]
-[[yunagi>http://yakushi.shinshu-u.ac.jp/robotics/?2013b%...
積み上げロボの制作
-[[uirin>http://uirin.shinshu-u.ac.jp/robotics/?2013b%2FM...
空き缶収集ロボの制作とプログラミング
-mato 積み上げロボのプログラミング 私です
-[[ryois>http://ryois.shinshu-u.ac.jp/robotics/?2013b%2FM...
空き缶収集ロボの制作とプログラミング
*プログラム [#w07b1001]
**缶を積むロボット [#ia01b447]
***定義 [#dee1c4d0]
#define THRESHOLD 50 //閾値
#define HIPOWER 2 //高速
#define LOWPOWER 1 //低速
#define set_power_H SetPower(OUT_AC,HIPOWER); //ACを高速...
#define set_power_L SetPower(OUT_AC,LOWPOWER); //ACを低...
#define go_forward(t) set_power_H; OnFwd(OUT_A); Wait(t)...
#define go_back(t) set_power_L; OnRev(OUT_A); Wait(t); O...
#define can_hold(t)set_power_L; OnFwd(OUT_C); Wait(t); ...
#define can_up(t) set_power_L; OnFwd(OUT_B); Wait(t); Of...
#define can_down(t) set_power_L; OnRev(OUT_B); Wait(t); ...
#define can_rerease(t) set_power_L; OnRev(OUT_C); Wait(t...
***サブルーチン(缶を積む) [#b76cdf7f]
sub can_stack()
{
can_hold(100);
go_back(30);
go_forward(50);
can_up(700);
go_forward(200);
can_down(200);
can_rerease(60);
go_back(1000);
}
***メインのプログラム [#c920ea85]
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
go_forward(600);
Wait(3000); //缶を集めるロボットがいなくなるのを...
can_stack();
}
**缶を運ぶロボット [#mb9f9016]
***定義 [#d321e7cf]
#define THRESHOLD 40 //閾値
#define HIPOWER 3 //高速
#define LOWPOWER 2 //低速
#define set_power_H SetPower(OUT_AC,HIPOWER); //ACを高速...
#define set_power_L SetPower(OUT_AC,LOWPOWER); //ACを低...
#define go_forward set_power_H; OnFwd(OUT_AC); //前進
#define turn_left1 set_power_L; OnFwd(OUT_C); OnRev(OUT_...
#define turn_left0 set_power_L; OnFwd(OUT_C); Off(OUT_A)...
#define turn_right0 set_power_L; OnFwd(OUT_A); Off(OUT_C...
#define turn_right1 set_power_L; OnFwd(OUT_A); OnRev(OUT...
#define time0 800
#define time1 700
#define time3 4000
***サブルーチン [#a542824f]
-最初にライントレースをするためにターンする
sub turn1() { OnFwd(OUT_A); Wait(250); Off(OUT_A); }
- 一個目の空き缶にまでいくためのプログラム
sub line1() {
if (SENSOR_2 < THRESHOLD -5) { turn_right1; }
else if (SENSOR_2 < THRESHOLD -3) { turn_right0;...
else if (SENSOR_2 < THRESHOLD +3) { go_forward; }
else if (SENSOR_2 < THRESHOLD +5) { turn_left0; }
else { turn_left1; ...
-小回りの精度をあげたライントレースのプログラム
sub line2() {
if (SENSOR_2 < THRESHOLD +0) { turn_right1; }
else if (SENSOR_2 < THRESHOLD +3) { turn_right0;...
else if (SENSOR_2 < THRESHOLD +5) { go_forward; }
else if (SENSOR_2 < THRESHOLD +7) { turn_left0; }
else { turn_left1; ...
-一個目の空き缶を運んだあとのプログラム
sub uturn() { OnRev(OUT_AC); Wait(150); OnFwd(OUT_A);...
-ラインの左側を通り、空き缶を回収するプログラム
sub line3() {
if (SENSOR_2 < THRESHOLD +0) { turn_left1; }
else if (SENSOR_2 < THRESHOLD +3) { turn_left0; }
else if (SENSOR_2 < THRESHOLD +5) { go_forward; }
else if (SENSOR_2 < THRESHOLD +7) { turn_right0; }
else { turn_right1;...
***メインのプログラム [#ac07e7eb]
task main ()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
turn1(); ...
ClearTimer(0);
while (FastTimer(0) <= time0) { line1(); } ...
ClearTimer(0);
while (FastTimer(0) <= time1) { line2(); } ...
uturn(); ...
ClearTimer(0);
while (FastTimer(0) <= time3) { line3(); } ...
OnRev(OUT_AC); Wait(150); ...
Off(OUT_AC);
}
*感想 [#i5ae0213]
はじめは缶を掴み、そのアームごと持ち上げて積むロボット...
終了行:
[[2013b/Member]]
#contents
*MISSION [#d4ab6ca5]
-2台のロボットで空き缶を収集し、ゴールに空き缶になるべく...
**基本ルール [#j6b30dbe]
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-図の左下の隅からスタートする。ロボットが紙からはみ出ない...
-空き缶を集めて図の「ゴール」と書かれた円弧と直線で囲まれ...
-なるべく高く空き缶を積み上げる
-運び終わった後、あるいは積み上げた後はロボットはゴールの...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
&ref(2013b/Member/mato/Mission2/route.JPG);
*ロボットの説明 [#ya482e58]
-戦略 二台のロボットを駆使して、缶を集めるロボットと缶を...
&ref(2013b/Member/mato/Mission2/route2.jpg);
積み上げロボットが青のルートで缶を一つ持ってゴールで待機...
**積み上げロボット [#x0b93d5e]
&ref(2013b/Member/mato/Mission2/IMG_0696.JPG,50%);
缶を縦に二個掴みタイヤで押さえつける。
&ref(2013b/Member/mato/Mission2/IMG_0698.JPG,50%);
この二つのタイヤで缶を持ち上げる。
&ref(2013b/Member/mato/Mission2/IMG_0689.JPG,50%);
モーターの出力が3つしかないため、直進しかできなくなりま...
**収集ロボット [#n309ed06]
&ref(2013b/Member/mato/Mission2/IMG_0687.JPG,50%);
&ref(2013b/Member/mato/Mission2/IMG_0693.JPG,50%);
シンプルです。積むロボットとの関係上、缶一つだけしか運べ...
*メンバー [#y8876074]
-[[yunagi>http://yakushi.shinshu-u.ac.jp/robotics/?2013b%...
積み上げロボの制作
-[[uirin>http://uirin.shinshu-u.ac.jp/robotics/?2013b%2FM...
空き缶収集ロボの制作とプログラミング
-mato 積み上げロボのプログラミング 私です
-[[ryois>http://ryois.shinshu-u.ac.jp/robotics/?2013b%2FM...
空き缶収集ロボの制作とプログラミング
*プログラム [#w07b1001]
**缶を積むロボット [#ia01b447]
***定義 [#dee1c4d0]
#define THRESHOLD 50 //閾値
#define HIPOWER 2 //高速
#define LOWPOWER 1 //低速
#define set_power_H SetPower(OUT_AC,HIPOWER); //ACを高速...
#define set_power_L SetPower(OUT_AC,LOWPOWER); //ACを低...
#define go_forward(t) set_power_H; OnFwd(OUT_A); Wait(t)...
#define go_back(t) set_power_L; OnRev(OUT_A); Wait(t); O...
#define can_hold(t)set_power_L; OnFwd(OUT_C); Wait(t); ...
#define can_up(t) set_power_L; OnFwd(OUT_B); Wait(t); Of...
#define can_down(t) set_power_L; OnRev(OUT_B); Wait(t); ...
#define can_rerease(t) set_power_L; OnRev(OUT_C); Wait(t...
***サブルーチン(缶を積む) [#b76cdf7f]
sub can_stack()
{
can_hold(100);
go_back(30);
go_forward(50);
can_up(700);
go_forward(200);
can_down(200);
can_rerease(60);
go_back(1000);
}
***メインのプログラム [#c920ea85]
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
go_forward(600);
Wait(3000); //缶を集めるロボットがいなくなるのを...
can_stack();
}
**缶を運ぶロボット [#mb9f9016]
***定義 [#d321e7cf]
#define THRESHOLD 40 //閾値
#define HIPOWER 3 //高速
#define LOWPOWER 2 //低速
#define set_power_H SetPower(OUT_AC,HIPOWER); //ACを高速...
#define set_power_L SetPower(OUT_AC,LOWPOWER); //ACを低...
#define go_forward set_power_H; OnFwd(OUT_AC); //前進
#define turn_left1 set_power_L; OnFwd(OUT_C); OnRev(OUT_...
#define turn_left0 set_power_L; OnFwd(OUT_C); Off(OUT_A)...
#define turn_right0 set_power_L; OnFwd(OUT_A); Off(OUT_C...
#define turn_right1 set_power_L; OnFwd(OUT_A); OnRev(OUT...
#define time0 800
#define time1 700
#define time3 4000
***サブルーチン [#a542824f]
-最初にライントレースをするためにターンする
sub turn1() { OnFwd(OUT_A); Wait(250); Off(OUT_A); }
- 一個目の空き缶にまでいくためのプログラム
sub line1() {
if (SENSOR_2 < THRESHOLD -5) { turn_right1; }
else if (SENSOR_2 < THRESHOLD -3) { turn_right0;...
else if (SENSOR_2 < THRESHOLD +3) { go_forward; }
else if (SENSOR_2 < THRESHOLD +5) { turn_left0; }
else { turn_left1; ...
-小回りの精度をあげたライントレースのプログラム
sub line2() {
if (SENSOR_2 < THRESHOLD +0) { turn_right1; }
else if (SENSOR_2 < THRESHOLD +3) { turn_right0;...
else if (SENSOR_2 < THRESHOLD +5) { go_forward; }
else if (SENSOR_2 < THRESHOLD +7) { turn_left0; }
else { turn_left1; ...
-一個目の空き缶を運んだあとのプログラム
sub uturn() { OnRev(OUT_AC); Wait(150); OnFwd(OUT_A);...
-ラインの左側を通り、空き缶を回収するプログラム
sub line3() {
if (SENSOR_2 < THRESHOLD +0) { turn_left1; }
else if (SENSOR_2 < THRESHOLD +3) { turn_left0; }
else if (SENSOR_2 < THRESHOLD +5) { go_forward; }
else if (SENSOR_2 < THRESHOLD +7) { turn_right0; }
else { turn_right1;...
***メインのプログラム [#ac07e7eb]
task main ()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
turn1(); ...
ClearTimer(0);
while (FastTimer(0) <= time0) { line1(); } ...
ClearTimer(0);
while (FastTimer(0) <= time1) { line2(); } ...
uturn(); ...
ClearTimer(0);
while (FastTimer(0) <= time3) { line3(); } ...
OnRev(OUT_AC); Wait(150); ...
Off(OUT_AC);
}
*感想 [#i5ae0213]
はじめは缶を掴み、そのアームごと持ち上げて積むロボット...
ページ名: