2012a/A2/LoveCraft/M3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*ロボコン-缶を積み上げるロボット- [#pc44419b]
''目次''
#contents
**はじめに [#i3b6209e]
ども、また私です。ついにやってきたぜ、この日が!というわ...
~''ルール''
~今回はルールが複雑なうえに専用のフィールドなどもあるので...
~⇒[[2012年度前期ロボコン:http://yakushi.shinshu-u.ac.jp/r...
**製作したロボット、プログラム [#rff602fd]
***ロボットの構造 [#m0ef6b15]
今回はRISを2セット使って1つのロボットを作りました。
~&ref(20120727_183443.jpg);
~相変わらずゴツいですね。ハイ。なぜ私がロボットを作るとこ...
~&ref(20120727_185237.jpg); &ref(20120727_183736.jpg);
~ドライブベースの部分です。機体が重いので結構頑丈に作って...
~&ref(20120727_183640.jpg);
~ロボットの裏側です。青い丸で囲まれた赤く光っている2つの...
~&ref(20120727_183407.jpg); &ref(20120727_185015.jpg);
~続いてアームというか、缶をつかむハサミの部分です。左上の...
~&ref(20120727_183515.jpg);
~ハサミの先端の部分です。実は赤い丸で囲ってある部分にはゴ...
~&ref(20120727_183532.jpg); &ref(20120727_183955.jpg);
~最後にリフトの部分です。今回のロボット作りではこれが鬼門...
***プログラム [#b5a0284c]
今回の課題を攻略する方針としては、下図にあるようにスター...
~&ref(robocon2012a.png);
~''<ロボット移動制御>''
#define THERSHOLD 30//閾値
#define go_st OnFwd(OUT_A); OnFwd(OUT_C);//直進
#define go_ri OnFwd(OUT_A); OnRev(OUT_C);//右旋回
#define go_le OnFwd(OUT_C); OnRev(OUT_A);//左旋回
#define go_ba OnRev(OUT_A); OnRev(OUT_C);//後退
#define BLACK 38
#define WHITE 38
#define SIGNALON1 11 // アーム動作開始を知らせるメ...
#define SIGNALON2 21 // アーム動作完了を知らせるメ...
#define SIGNALON3 31 // アーム動作開始を知らせるメ...
#define SIGNALON4 41 // アーム動作完了を知らせるメ...
#define ReMessage2 32 // SIGNALON3の返事
#define RUN_SECTION2 100 //第4セクションの時間
int cross; //黒線をまたぐ回数
sub count()
{ if ((SENSOR_1 < THERSHOLD) && (SENSOR_3 < THERSHOLD))/...
{go_st;cross = cross++;}//直進してcountに+1する
else if(SENSOR_1>THERSHOLD && SENSOR_3<THERSHOLD)...
OnFwd(OUT_A);
OnRev(OUT_C);//右旋回
}else if(SENSOR_1<THERSHOLD && SENSOR_3>THERSHOLD...
OnFwd(OUT_C);
OnRev(OUT_A);//左旋回
}else if(SENSOR_1>THERSHOLD && SENSOR_3>THERSHOLD...
OnFwd(OUT_AC);//直進
}}
task line_1st()
{
if ((SENSOR_1 < BLACK) && (SENSOR_3 > WHITE)) //1...
{
go_le;//左旋回
}
else if ((SENSOR_1 > WHITE) && (SENSOR_3 < BLACK)...
{
go_ri;//右旋回
}
else if ((SENSOR_1 < BLACK) && (SENSOR_3 < BLACK)...
{
go_ri;
Wait(180); //90度回転させる
Off(OUT_AC);
stop line_1st; //このタスクを止める
}
else if ((SENSOR_1 > WHITE) && (SENSOR_3 > WHITE)...
{
go_ba;//後退
}
}
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);センサー1を光センサ...
SetSensor(SENSOR_2, SENSOR_TOUCH);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetPower(OUT_A,3);
SetPower(OUT_C,3);
ClearMessage();
ClearTimer(0);
while(cross < 1){
count()
}//最初の黒線を無視する
while (Message() != SIGNALON1) { //真ん中が反応する...
if ((SENSOR_1 < THERSHOLD) && (SENSOR_3 < THERS...
if(SENSOR_1>THERSHOLD && SENSOR_3<THERSHOLD){ /...
OnFwd(OUT_A);
Rev(OUT_C);
}else if(SENSOR_1<THERSHOLD && SENSOR_3>THERSHOLD...
OnFwd(OUT_C);
Rev(OUT_A);
}else if(SENSOR_1>THERSHOLD && SENSOR_3>THERSHOLD...
OnFwd(OUT_AC);
}
}
Off(OUT_AC);
SetPower(OUT_A,3);
SetPower(OUT_C,3);
until (Message() = SIGNALON2);
go_st;
Wait(30);
until ((SENSOR_1 < BLACK) || (SENSOR_3 < BLACK) || (F...
go_le;
Wait(180);
go_st;
until (SENSOR_2 == 1); //タッチのセン...
Off(OUT_AC);
PlaySound(SOUND_CLICK);
SetPower(OUT_A,3);
SetPower(OUT_C,3);
while ( Message() != ReMessage2) { //メッセージ...
SendMessage(SIGNALON3);
}
if (Message() == ReMessage2) {
PlaySound(SOUND_CLICK); // 送信に成...
} else {
PlaySound(SOUND_LOW_BEEP); // 送信に失...
}
until (Message() = SIGNALON4);
go_ba;
Wait(50);
Off(OUT_AC);
}
~''<アーム制御>''
#define SIGNALON1 11 // アーム動作開始を知らせるメッ...
#define SIGNALON2 21 // アーム動作完了を知らせるメッセ...
#define ReMessage1 12 // SIGNALON1の返事
#define SIGNALON3 31 // アーム動作開始を知らせるメ...
#define SIGNALON4 41 // アーム動作完了を知らせるメ...
#define ReMessage2 32 // SIGNALON3の返事
#define GREEN 51 // until (SENSOR_3 > GREEN); 普...
int i; // for ループのための変数
int i_min=1,i_max=3;
task main ()
{
ClearMessage(); // Message()の値を...
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_ROTATION);
SetPower(OUT_A,4);
SetPower(OUT_B,7);
for (i=i_min; i<=i_max; i++) { //3回繰り返す
until (SENSOR_1 > GREEN && FastTimer()==200);
PlaySound(SOUND_CLICK);
SendMessage(SIGNALON1); // 缶を見つけ...
Wait(50);
OnFwd(OUT_A);
Wait(50);
Off(OUT_A); // アームで掴む
OnFwd(OUT_B);
until (SENSOR_3 == -25); //回転センサーを使い一定...
Off(OUT_B); // リフトであげる
SendMessage(SIGNALON2); // 動作完了の合図
until (Message() == SIGNALON3);
SendMessage(ReMessage2); //返事
SetPower(OUT_A,3);
SetPower(OUT_B,4);
OnRev(OUT_B);
Wait(10);
Float(OUT_B);
Wait(30); //シャフト...
OnRev(OUT_A);
Wait(50);
Off(OUT_A); //アームを...
SetPower(OUT_B,7);
OnRev(OUT_B);
Wait(70);
Float(OUT_B); //シャフト...
SendMessage(SIGNALON4);
}
}
***工夫した点、頑張った点 [#z1c35334]
工夫した点や頑張った点といってもほとんどロボットの紹介で...
**まとめ [#g3943554]
ようやくすべてが終わりました。はあ〜疲れた・・・。やっぱ...
**リンク [#t8b2e530]
私と共に今プロジェクトに取り組んでくれた人たちのロボコン...
~[[2012a/A2/yamadai/M3:http://yakushi.shinshu-u.ac.jp/rob...
~[[2012a/A2/Jiro/M3:http://yakushi.shinshu-u.ac.jp/roboti...
・・
終了行:
*ロボコン-缶を積み上げるロボット- [#pc44419b]
''目次''
#contents
**はじめに [#i3b6209e]
ども、また私です。ついにやってきたぜ、この日が!というわ...
~''ルール''
~今回はルールが複雑なうえに専用のフィールドなどもあるので...
~⇒[[2012年度前期ロボコン:http://yakushi.shinshu-u.ac.jp/r...
**製作したロボット、プログラム [#rff602fd]
***ロボットの構造 [#m0ef6b15]
今回はRISを2セット使って1つのロボットを作りました。
~&ref(20120727_183443.jpg);
~相変わらずゴツいですね。ハイ。なぜ私がロボットを作るとこ...
~&ref(20120727_185237.jpg); &ref(20120727_183736.jpg);
~ドライブベースの部分です。機体が重いので結構頑丈に作って...
~&ref(20120727_183640.jpg);
~ロボットの裏側です。青い丸で囲まれた赤く光っている2つの...
~&ref(20120727_183407.jpg); &ref(20120727_185015.jpg);
~続いてアームというか、缶をつかむハサミの部分です。左上の...
~&ref(20120727_183515.jpg);
~ハサミの先端の部分です。実は赤い丸で囲ってある部分にはゴ...
~&ref(20120727_183532.jpg); &ref(20120727_183955.jpg);
~最後にリフトの部分です。今回のロボット作りではこれが鬼門...
***プログラム [#b5a0284c]
今回の課題を攻略する方針としては、下図にあるようにスター...
~&ref(robocon2012a.png);
~''<ロボット移動制御>''
#define THERSHOLD 30//閾値
#define go_st OnFwd(OUT_A); OnFwd(OUT_C);//直進
#define go_ri OnFwd(OUT_A); OnRev(OUT_C);//右旋回
#define go_le OnFwd(OUT_C); OnRev(OUT_A);//左旋回
#define go_ba OnRev(OUT_A); OnRev(OUT_C);//後退
#define BLACK 38
#define WHITE 38
#define SIGNALON1 11 // アーム動作開始を知らせるメ...
#define SIGNALON2 21 // アーム動作完了を知らせるメ...
#define SIGNALON3 31 // アーム動作開始を知らせるメ...
#define SIGNALON4 41 // アーム動作完了を知らせるメ...
#define ReMessage2 32 // SIGNALON3の返事
#define RUN_SECTION2 100 //第4セクションの時間
int cross; //黒線をまたぐ回数
sub count()
{ if ((SENSOR_1 < THERSHOLD) && (SENSOR_3 < THERSHOLD))/...
{go_st;cross = cross++;}//直進してcountに+1する
else if(SENSOR_1>THERSHOLD && SENSOR_3<THERSHOLD)...
OnFwd(OUT_A);
OnRev(OUT_C);//右旋回
}else if(SENSOR_1<THERSHOLD && SENSOR_3>THERSHOLD...
OnFwd(OUT_C);
OnRev(OUT_A);//左旋回
}else if(SENSOR_1>THERSHOLD && SENSOR_3>THERSHOLD...
OnFwd(OUT_AC);//直進
}}
task line_1st()
{
if ((SENSOR_1 < BLACK) && (SENSOR_3 > WHITE)) //1...
{
go_le;//左旋回
}
else if ((SENSOR_1 > WHITE) && (SENSOR_3 < BLACK)...
{
go_ri;//右旋回
}
else if ((SENSOR_1 < BLACK) && (SENSOR_3 < BLACK)...
{
go_ri;
Wait(180); //90度回転させる
Off(OUT_AC);
stop line_1st; //このタスクを止める
}
else if ((SENSOR_1 > WHITE) && (SENSOR_3 > WHITE)...
{
go_ba;//後退
}
}
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);センサー1を光センサ...
SetSensor(SENSOR_2, SENSOR_TOUCH);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetPower(OUT_A,3);
SetPower(OUT_C,3);
ClearMessage();
ClearTimer(0);
while(cross < 1){
count()
}//最初の黒線を無視する
while (Message() != SIGNALON1) { //真ん中が反応する...
if ((SENSOR_1 < THERSHOLD) && (SENSOR_3 < THERS...
if(SENSOR_1>THERSHOLD && SENSOR_3<THERSHOLD){ /...
OnFwd(OUT_A);
Rev(OUT_C);
}else if(SENSOR_1<THERSHOLD && SENSOR_3>THERSHOLD...
OnFwd(OUT_C);
Rev(OUT_A);
}else if(SENSOR_1>THERSHOLD && SENSOR_3>THERSHOLD...
OnFwd(OUT_AC);
}
}
Off(OUT_AC);
SetPower(OUT_A,3);
SetPower(OUT_C,3);
until (Message() = SIGNALON2);
go_st;
Wait(30);
until ((SENSOR_1 < BLACK) || (SENSOR_3 < BLACK) || (F...
go_le;
Wait(180);
go_st;
until (SENSOR_2 == 1); //タッチのセン...
Off(OUT_AC);
PlaySound(SOUND_CLICK);
SetPower(OUT_A,3);
SetPower(OUT_C,3);
while ( Message() != ReMessage2) { //メッセージ...
SendMessage(SIGNALON3);
}
if (Message() == ReMessage2) {
PlaySound(SOUND_CLICK); // 送信に成...
} else {
PlaySound(SOUND_LOW_BEEP); // 送信に失...
}
until (Message() = SIGNALON4);
go_ba;
Wait(50);
Off(OUT_AC);
}
~''<アーム制御>''
#define SIGNALON1 11 // アーム動作開始を知らせるメッ...
#define SIGNALON2 21 // アーム動作完了を知らせるメッセ...
#define ReMessage1 12 // SIGNALON1の返事
#define SIGNALON3 31 // アーム動作開始を知らせるメ...
#define SIGNALON4 41 // アーム動作完了を知らせるメ...
#define ReMessage2 32 // SIGNALON3の返事
#define GREEN 51 // until (SENSOR_3 > GREEN); 普...
int i; // for ループのための変数
int i_min=1,i_max=3;
task main ()
{
ClearMessage(); // Message()の値を...
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_ROTATION);
SetPower(OUT_A,4);
SetPower(OUT_B,7);
for (i=i_min; i<=i_max; i++) { //3回繰り返す
until (SENSOR_1 > GREEN && FastTimer()==200);
PlaySound(SOUND_CLICK);
SendMessage(SIGNALON1); // 缶を見つけ...
Wait(50);
OnFwd(OUT_A);
Wait(50);
Off(OUT_A); // アームで掴む
OnFwd(OUT_B);
until (SENSOR_3 == -25); //回転センサーを使い一定...
Off(OUT_B); // リフトであげる
SendMessage(SIGNALON2); // 動作完了の合図
until (Message() == SIGNALON3);
SendMessage(ReMessage2); //返事
SetPower(OUT_A,3);
SetPower(OUT_B,4);
OnRev(OUT_B);
Wait(10);
Float(OUT_B);
Wait(30); //シャフト...
OnRev(OUT_A);
Wait(50);
Off(OUT_A); //アームを...
SetPower(OUT_B,7);
OnRev(OUT_B);
Wait(70);
Float(OUT_B); //シャフト...
SendMessage(SIGNALON4);
}
}
***工夫した点、頑張った点 [#z1c35334]
工夫した点や頑張った点といってもほとんどロボットの紹介で...
**まとめ [#g3943554]
ようやくすべてが終わりました。はあ〜疲れた・・・。やっぱ...
**リンク [#t8b2e530]
私と共に今プロジェクトに取り組んでくれた人たちのロボコン...
~[[2012a/A2/yamadai/M3:http://yakushi.shinshu-u.ac.jp/rob...
~[[2012a/A2/Jiro/M3:http://yakushi.shinshu-u.ac.jp/roboti...
・・
ページ名: