2012a/A2/yamadai/M3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*課題3 ロボコン [#wade5c2b]
**目的 [#d0f69384]
自分たちで作ったロボットで空き缶を運び中身の入っている缶...
~人間がやれば安易にできる作業だがボタン1つで勝手にやって...
**ルール [#sa416954]
#ref(ロボ image.png)
-フィールドは上の図のようになっていて、左側にある空き缶を...
-ロボットは左下にあるスタート地点に置き、そこからスタート...
-時間無制限だけれども明らかに走行不可の場合はその時点で終了
-ロボット所持者は競技のときは見守ることしかできない(ただ...
~他、採点方法等の詳しいルールは[[こちら:http://yakushi.sh...
を参照してください。
*ロボット紹介 [#p337977f]
全体写真
#ref(20120727_183443.jpg)
~今回のロボットは非常に大きくそれに比例するように重たくな...
~アーム部分 その1
#ref(20120727_183502.jpg)
~赤丸の部分に缶を持ち上げる際に滑り落ちないように滑り止め...
~アーム部分 その2
#ref(20120727_185015.jpg)
~空き缶がアーム圏内に入ったらロボットが認識できるように光...
~また、モーター1つでアームの開閉ができるように工夫した。
~アーム部分 その3
#ref(20120727_185028.jpg)
~空き缶をアームでつかみ持ち上げたまま右側エリアに運ぶ仕様...
~そしてこのタッチセンサーによって缶がアームの真下にあるの...
~シャフト稼働部分 その1
#ref(20120727_183532.jpg)
~モーターによって上下に動きアームでつかんだ缶を上げたり下...
~シャフト稼働部分 その2
#ref(20120727_183955.jpg)
~後ろについている回転センサーにより、正確に上げたり下げた...
~ロボット下部
#ref(20120727_183640.jpg)
~下向きについている光センサーによってラインをトレースする。
*プログラム紹介 [#i903fb4e]
~タイヤを動かすプログラム
#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)) ...
else if(SENSOR_1>THERSHOLD && SENSOR_3<THERSHOLD...
OnFwd(OUT_A);
OnRev(OUT_C);
}else if(SENSOR_1<THERSHOLD && SENSOR_3>THERSHOL...
OnFwd(OUT_C);
OnRev(OUT_A);
}else if(SENSOR_1>THERSHOLD && SENSOR_3>THERSHOL...
OnFwd(OUT_AC);
}}
task line_1st() //90度回転:(L,R)=(B,B) 右に旋回:(L,R)=(...
{
if ((SENSOR_1 < BLACK) && (SENSOR_3 > WHITE))
{
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);
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 < THER...
if(SENSOR_1>THERSHOLD && SENSOR_3<THERSHOLD){ ...
OnFwd(OUT_A);
OnRev(OUT_C);
}else if(SENSOR_1<THERSHOLD && SENSOR_3>THERSHOL...
OnFwd(OUT_C);
OnRev(OUT_A);
}else if(SENSOR_1>THERSHOLD && SENSOR_3>THERSHOL...
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) || (...
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);
}
}
*メンバー紹介 [#r4a5a1c0]
~&size(18){山田大介(環境機能工学科) ロボット担当代理兼総...
~ロボットの前後バランスとかものすごく考えてました。えげつ...
~ドライブベースしか作ってないとか聞こえない。ドライブベー...
~&size(18){與五沢啓太(電気電子工学科) ロボットデザイン全...
~色々と工夫しながらロボットを仕上げてくれました!! やた...
~かっくいいロボットをありがとう。
~&size(18){小野寺朗(機械システム工学科) 頭脳派プログラム...
~一生懸命プログラムを考えてくれてました!! 実際にロボッ...
~でも、ちゃんと缶をつかんで持ち上げられたときの感動は大き...
*感想 [#uf4fcf18]
今回は3人で誰も脱落すること無くできて、ロボコンはあまりよ...
終了行:
目次
#contents
*課題3 ロボコン [#wade5c2b]
**目的 [#d0f69384]
自分たちで作ったロボットで空き缶を運び中身の入っている缶...
~人間がやれば安易にできる作業だがボタン1つで勝手にやって...
**ルール [#sa416954]
#ref(ロボ image.png)
-フィールドは上の図のようになっていて、左側にある空き缶を...
-ロボットは左下にあるスタート地点に置き、そこからスタート...
-時間無制限だけれども明らかに走行不可の場合はその時点で終了
-ロボット所持者は競技のときは見守ることしかできない(ただ...
~他、採点方法等の詳しいルールは[[こちら:http://yakushi.sh...
を参照してください。
*ロボット紹介 [#p337977f]
全体写真
#ref(20120727_183443.jpg)
~今回のロボットは非常に大きくそれに比例するように重たくな...
~アーム部分 その1
#ref(20120727_183502.jpg)
~赤丸の部分に缶を持ち上げる際に滑り落ちないように滑り止め...
~アーム部分 その2
#ref(20120727_185015.jpg)
~空き缶がアーム圏内に入ったらロボットが認識できるように光...
~また、モーター1つでアームの開閉ができるように工夫した。
~アーム部分 その3
#ref(20120727_185028.jpg)
~空き缶をアームでつかみ持ち上げたまま右側エリアに運ぶ仕様...
~そしてこのタッチセンサーによって缶がアームの真下にあるの...
~シャフト稼働部分 その1
#ref(20120727_183532.jpg)
~モーターによって上下に動きアームでつかんだ缶を上げたり下...
~シャフト稼働部分 その2
#ref(20120727_183955.jpg)
~後ろについている回転センサーにより、正確に上げたり下げた...
~ロボット下部
#ref(20120727_183640.jpg)
~下向きについている光センサーによってラインをトレースする。
*プログラム紹介 [#i903fb4e]
~タイヤを動かすプログラム
#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)) ...
else if(SENSOR_1>THERSHOLD && SENSOR_3<THERSHOLD...
OnFwd(OUT_A);
OnRev(OUT_C);
}else if(SENSOR_1<THERSHOLD && SENSOR_3>THERSHOL...
OnFwd(OUT_C);
OnRev(OUT_A);
}else if(SENSOR_1>THERSHOLD && SENSOR_3>THERSHOL...
OnFwd(OUT_AC);
}}
task line_1st() //90度回転:(L,R)=(B,B) 右に旋回:(L,R)=(...
{
if ((SENSOR_1 < BLACK) && (SENSOR_3 > WHITE))
{
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);
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 < THER...
if(SENSOR_1>THERSHOLD && SENSOR_3<THERSHOLD){ ...
OnFwd(OUT_A);
OnRev(OUT_C);
}else if(SENSOR_1<THERSHOLD && SENSOR_3>THERSHOL...
OnFwd(OUT_C);
OnRev(OUT_A);
}else if(SENSOR_1>THERSHOLD && SENSOR_3>THERSHOL...
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) || (...
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);
}
}
*メンバー紹介 [#r4a5a1c0]
~&size(18){山田大介(環境機能工学科) ロボット担当代理兼総...
~ロボットの前後バランスとかものすごく考えてました。えげつ...
~ドライブベースしか作ってないとか聞こえない。ドライブベー...
~&size(18){與五沢啓太(電気電子工学科) ロボットデザイン全...
~色々と工夫しながらロボットを仕上げてくれました!! やた...
~かっくいいロボットをありがとう。
~&size(18){小野寺朗(機械システム工学科) 頭脳派プログラム...
~一生懸命プログラムを考えてくれてました!! 実際にロボッ...
~でも、ちゃんと缶をつかんで持ち上げられたときの感動は大き...
*感想 [#uf4fcf18]
今回は3人で誰も脱落すること無くできて、ロボコンはあまりよ...
ページ名: