2018a/Member/yamada/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2018a/Member]]
#contents
*課題 [#kde01d96]
空き缶運搬ロボット
空き缶を分別し、特定の場所に運ぶ。
2種類の空き缶(Aタイプ,Bタイプ)をそれぞれ3個ずつ用意し、円...
円X内にBの缶、円Y内にAの缶を運ぶ。積み上げると得点が上が...
&ref(2018a/Member/yamada/Mission2/2018a-mission2.png,60%,...
*ロボット本体 [#k244554e]
&ref(2018a/Member/yamada/Mission3/IMG_0647.JPG,30%,ロボッ...
側面から見た様子。
前方に缶をつかむためのアームと、ア−ムを上げ下げする部分が...
バランスをとるために後方に知能ブロックを二つ取り付けた。
スムーズに動かすために前方にも後方にも車輪を付けたが、
逆に動きにくくしているとの指摘があった。
&ref(2018a/Member/yamada/Mission3/IMG_0648.JPG,30%,ロボッ...
上から見た様子。
&ref(2018a/Member/yamada/Mission3/IMG_0649.JPG,30%,ロボッ...
正面から見た様子。
&ref(2018a/Member/yamada/Mission3/IMG_0650.JPG,30%,ロボッ...
後ろから見た様子。
&ref(2018a/Member/yamada/Mission3/IMG_0651.JPG,30%,缶をつ...
缶をつかむアーム。
モーターの回転部中心に軸がささる。
二つの歯車をかみ合わせることで、
一つのモーターの回転のみで開閉、つまり缶をつかんだり放し...
&ref(2018a/Member/yamada/Mission3/IMG_0655.JPG,30%,アーム...
アームを上げ下げする部分。正面から見た様子。
&ref(2018a/Member/yamada/Mission3/IMG_0654.JPG,30%,アーム...
アームを上げ下げする部分。
側面から見た様子。
機関車のように、アームにつながった部分がモーターの回転に...
上下させる際、途中で引っかかってしまうことがあった。
モーターとアームをつなぐ部分を短くした方が良いと指摘があ...
*プログラム [#m8863906]
当初はライントレースにより缶のところまで移動する予定であ...
ロボコン時のプログラムは以下のようになった。
?A地点からまっすぐ進みY地点へ移動。
?Y地点の3段になった缶の、2段目の部分をつかみ、下ろす。
?下ろした缶の上にのっていた缶をつかみ、Y地点にある缶の上...
??によりできた2段積みの缶をX地点へ運ぶ。
?X地点にある3段積みの缶の塔をなぎ倒し、運んできた2段積...
**スレーブのプログラム [#n36c5d6b]
プログラムの作成過程でトラブルが発生し、NXTに転送してあっ...
以下は、プログラムの作成を担当してくれたメンバーが再現し...
モーターAがアームの開閉、モーターBとCがアームの上下を担当。
-アームを開く・缶を放す
task main(){ OnFwd(OUT_A,1c0); Wait(500); Off(OUT_A); }
-アームを閉じる・缶をつかむ
task main(){
OnRev(OUT_A,20);
Wait(1000);
}
-アームを上げる
task main(){
OnRev(OUT_BC,30);
OnRev(OUT_A,10);
Wait(8000);
}
-缶をつかみ続ける
task main(){
OnFwd(OUT_A,20);
Wait(1000);
Off(OUT_A);
}
上記??の、
「2段目の缶(上には3段目の缶がのっている)をつかんだ後、...
「下ろした缶の上にのっていた缶をつかんだ後、持ち上げて横...
という過程で缶がずり落ちないようにつかみ続けるプログラム。
-アームを下ろす
task main(){
OnFwd(OUT_BC,20);
Wait(600);
Off(OUT_BC);
}
**マスターのプログラム [#g5db9432]
タイヤを動かし機体を移動させることと、スレーブにアームの...
***ライントレースしようとしたがうまくいかなかったプログラ...
途中まで成功していたプログラムであったが、変更したところ...
課題2のプログラムを元にライントレースするプログラムを作...
どの段階を実行しているか確認するために要所要所で音を発す...
それらとアームの動作を組み合わせた。
-定数の定義
#define CONN 1//スレーブの番号を割り振り
#define AGERU RemoteStartProgram(CONN,"ageru.rxe");Wait(...
#define SAGERU RemoteStartProgram(CONN,"sageru.rxe");Wai...
#define TUKAMU RemoteStartProgram(CONN,"tukamu.rxe");Wai...
#define HANASU RemoteStartProgram(CONN,"hanasu.rxe");Wai...
#define MODOSU RemoteStartProgram(CONN,"modosu.rxe");Wai...
#define KUZUSU
TUKAMU;AGERU;OnRev(OUT_BC,10);Wait(1000);Off(OUT_BC);OnF...
#define BLACK 40
#define LITTLE_BLACK 47
#define LITTLE_WHITE 53
#define WHITE 65
#define LEFT OnFwd(OUT_B,30);OnRev(OUT_C,30);Wait(1);Off...
#define LITTLE_LEFT OnFwd(OUT_B,35);OnFwd(OUT_C,20);Wait...
#define LITTLE_RIGHT OnFwd(OUT_B,20);OnFwd(OUT_C,35);Wai...
#define RIGHT OnFwd(OUT_C,30);OnRev(OUT_B,30);Wait(1);Of...
#define FRONT OnFwd(OUT_BC,25);Wait(1);Off(OUT_AC);
#define LINE_LEFT if (SENSOR_1 < BLACK) {LEFT;KAZU += 3;...
LITTLE_BLACK) {LITTLE_LEFT;KAZU += 1;} else if (SENSOR_1...
if (SENSOR_1 > LITTLE_WHITE) {LITTLE_RIGHT;KAZU -= 3;} e...
#define LINE_RIGHT if (SENSOR_1 < BLACK) {RIGHT;KAZU += ...
LITTLE_BLACK) {LITTLE_RIGHT;KAZU += 1;} else if (SENSOR_...
if (SENSOR_1 > LITTLE_WHITE) {LITTLE_LEFT;KAZU -= 3;} el...
アームの動きを定義。
ライントレースのための明るさの閾値を定義。
明るさごとの走行の仕方を定義。
線の右側、左側それぞれでのライントレースの仕方を定義。
-task main
task main() {
SetSensorLight(S1); //光センサを定義 int KAZU=0; int n =...
RemotePlayTone(1,440,1000);Wait(1500); //最初に音を鳴らす
MODOSU; //最初に念のため開いておく
while(n < 1){
if (SENSOR_1 < BLACK) {OnFwd(OUT_C,25);OnFwd...
else {OnFwd(OUT_BC,20);Wait(1);Off(OUT_BC);}
}
n = 0; //黒を感知するまで進む//線を超えるために進む
while(n < 1){
if (SENSOR_1 < LITTLE_WHITE)
{OnFwd(OUT_C,35);OnFwd(OUT_B,20);Wait(100);Off(OUT_BC);n...
else {OnFwd(OUT_B,40);OnFwd(OUT_C,20);Wait(1)...
}
n = 0; //黒を感知するまで曲がる
repeat(2000){LINE_RIGHT;};KAZU *= 0; while(KAZU < 300){L...
PlaySound(SOUND_DOUBLE_BEEP); //十字の交差点を感知
OnFwd(OUT_C,30);OnRev(OUT_B,30);Wait(1200); //右に曲がる
OnFwd(OUT_BC,15);Wait(300);Off(OUT_BC);
repeat(2000){LINE_RIGHT;};KAZU *= 0; while(KAZU < 200){L...
PlaySound(SOUND_DOUBLE_BEEP); //円との交差点を感知
KUZUSU; //缶を崩す
OnFwd(OUT_BC,15);Wait(200);Off(OUT_BC); OnRev(OUT_BC,15)...
OnFwd(OUT_C,15);OnRev(OUT_B,30);Wait(200);Off(OUT_BC);
OnFwd(OUT_B,15);OnRev(OUT_C,15);Wait(200);Off(OUT_BC); /...
Wait(1000);
SAGERU;TUKAMU; //引きずるために掴む
Wait(2000);
OnFwd(OUT_B,40);OnFwd(OUT_C,30);Wait(3000);Off(OUT_BC); ...
repeat(3000){LINE_RIGHT};KAZU *= 0; while(KAZU < 200){LI...
PlaySound(SOUND_DOUBLE_BEEP); //十字の交差点を感知
/* OnFwd(OUT_C,20);OnRev(OUT_B,20);//右に曲がる Wait(250...
repeat(1500){LINE_RIGHT}; KAZU *= 0; while(KAZU < 100){L...
PlaySound(SOUND_DOUBLE_BEEP);//十字の交差点を感知
while(n < 1){
if (SENSOR_1 < BLACK){OnFwd(OUT_BC,20);Wait(1);Off(OUT_B...
else{n++;Off(OUT_BC);Wait(1);}
}n = 0; //白を感知するまで進む OnFwd(OUT_BC,25); Wait(70...
/*TUKAMU;AGERU; OnRev(OUT_BC,20);Wait(2000);Off(OUT_BC);...
Wait(1000); Off(OUT_BC); OnFwd(OUT_BC,20);Wait(2000);Off...
TUKAMU;AGERU; OnRev(OUT_BC,20);Wait(2000);Off(OUT_BC); O...
Wait(1000); Off(OUT_BC); OnFwd(OUT_BC,20);Wait(2000);Off...
/*repeat(1000){LINE_RIGHT}; KAZU *= 0; while(KAZU < 100)...
PlaySound(SOUND_DOUBLE_BEEP);//円との交差点を感知
}
スタート時にアームを開き忘れても困らないよう、最初にアー...
A地点からスタート。
A地点を囲う枠線を越え、ライントレースするために黒線の端へ...
B地点で右折。Yの円に到着後、3段積みの缶を種類ごとに分け...
X地点にある3段積みの缶の塔を倒し、空いたスペースに運んで...
***ロボコン直前に突貫で作成したプログラム [#m33868d5]
先述した通りの動きをするようにプログラムした。
ロボコン本番では失敗。
スタート地点での機体の置き方次第で成功するか否か決まって...
-定数の定義
#define CONN 1//スレーブの番号を割り振り
#define AGERU RemoteStartProgram(CONN,"ageru.rxe");Wait(...
#define SAGERU RemoteStartProgram(CONN,"sageru.rxe");Wai...
#define TUKAMU RemoteStartProgram(CONN,"tukamu.rxe");Wai...
#define HANASU RemoteStartProgram(CONN,"hanasu.rxe");Wai...
#define MODOSU RemoteStartProgram(CONN,"modosu.rxe");Wai...
#define KUZUSU
TUKAMU;AGERU;OnRev(OUT_BC,30);Wait(1000);Off(OUT_BC);OnF...
-task main
task main() { MODOSU; RemotePlayTone(1,440,1000);Wait(15...
OnFwd(OUT_BC,30); Wait(4000); Off(OUT_BC);
KUZUSU; //缶を崩す
OnFwd(OUT_BC,15);Wait(200);Off(OUT_BC); OnRev(OUT_BC,15)...
OnFwd(OUT_C,15);OnRev(OUT_B,30);Wait(200);Off(OUT_BC);
OnFwd(OUT_B,15);OnRev(OUT_C,15);Wait(200);Off(OUT_BC); /...
SAGERU;TUKAMU; //引きずるために掴む
OnFwd(OUT_B,30); OnFwd(OUT_C,35); Wait(4000); Off(OUT_BC...
OnFwd(OUT_C,30); Wait(500); Off(OUT_C);
HANASU; MODOSU; }
*反省 [#of19b2db]
-チームとして
途中まで成功していたプログラムや機体を多少変更したところ...
時間が足りず、しっかりと原因を考えることができなかった。
しかし期末テストやレポートなどで切羽詰まった中で、できる...
-個人として
ロボットの作成、プログラムの作成、どちらでも役に立てなか...
創造力と工夫する力が自分には不足していると分かった。
さらにロボコン前日は別の用事があり作業に参加できず、メン...
持てる時間を目一杯使って作成に取り組んでくれたメンバーに...
終了行:
[[2018a/Member]]
#contents
*課題 [#kde01d96]
空き缶運搬ロボット
空き缶を分別し、特定の場所に運ぶ。
2種類の空き缶(Aタイプ,Bタイプ)をそれぞれ3個ずつ用意し、円...
円X内にBの缶、円Y内にAの缶を運ぶ。積み上げると得点が上が...
&ref(2018a/Member/yamada/Mission2/2018a-mission2.png,60%,...
*ロボット本体 [#k244554e]
&ref(2018a/Member/yamada/Mission3/IMG_0647.JPG,30%,ロボッ...
側面から見た様子。
前方に缶をつかむためのアームと、ア−ムを上げ下げする部分が...
バランスをとるために後方に知能ブロックを二つ取り付けた。
スムーズに動かすために前方にも後方にも車輪を付けたが、
逆に動きにくくしているとの指摘があった。
&ref(2018a/Member/yamada/Mission3/IMG_0648.JPG,30%,ロボッ...
上から見た様子。
&ref(2018a/Member/yamada/Mission3/IMG_0649.JPG,30%,ロボッ...
正面から見た様子。
&ref(2018a/Member/yamada/Mission3/IMG_0650.JPG,30%,ロボッ...
後ろから見た様子。
&ref(2018a/Member/yamada/Mission3/IMG_0651.JPG,30%,缶をつ...
缶をつかむアーム。
モーターの回転部中心に軸がささる。
二つの歯車をかみ合わせることで、
一つのモーターの回転のみで開閉、つまり缶をつかんだり放し...
&ref(2018a/Member/yamada/Mission3/IMG_0655.JPG,30%,アーム...
アームを上げ下げする部分。正面から見た様子。
&ref(2018a/Member/yamada/Mission3/IMG_0654.JPG,30%,アーム...
アームを上げ下げする部分。
側面から見た様子。
機関車のように、アームにつながった部分がモーターの回転に...
上下させる際、途中で引っかかってしまうことがあった。
モーターとアームをつなぐ部分を短くした方が良いと指摘があ...
*プログラム [#m8863906]
当初はライントレースにより缶のところまで移動する予定であ...
ロボコン時のプログラムは以下のようになった。
?A地点からまっすぐ進みY地点へ移動。
?Y地点の3段になった缶の、2段目の部分をつかみ、下ろす。
?下ろした缶の上にのっていた缶をつかみ、Y地点にある缶の上...
??によりできた2段積みの缶をX地点へ運ぶ。
?X地点にある3段積みの缶の塔をなぎ倒し、運んできた2段積...
**スレーブのプログラム [#n36c5d6b]
プログラムの作成過程でトラブルが発生し、NXTに転送してあっ...
以下は、プログラムの作成を担当してくれたメンバーが再現し...
モーターAがアームの開閉、モーターBとCがアームの上下を担当。
-アームを開く・缶を放す
task main(){ OnFwd(OUT_A,1c0); Wait(500); Off(OUT_A); }
-アームを閉じる・缶をつかむ
task main(){
OnRev(OUT_A,20);
Wait(1000);
}
-アームを上げる
task main(){
OnRev(OUT_BC,30);
OnRev(OUT_A,10);
Wait(8000);
}
-缶をつかみ続ける
task main(){
OnFwd(OUT_A,20);
Wait(1000);
Off(OUT_A);
}
上記??の、
「2段目の缶(上には3段目の缶がのっている)をつかんだ後、...
「下ろした缶の上にのっていた缶をつかんだ後、持ち上げて横...
という過程で缶がずり落ちないようにつかみ続けるプログラム。
-アームを下ろす
task main(){
OnFwd(OUT_BC,20);
Wait(600);
Off(OUT_BC);
}
**マスターのプログラム [#g5db9432]
タイヤを動かし機体を移動させることと、スレーブにアームの...
***ライントレースしようとしたがうまくいかなかったプログラ...
途中まで成功していたプログラムであったが、変更したところ...
課題2のプログラムを元にライントレースするプログラムを作...
どの段階を実行しているか確認するために要所要所で音を発す...
それらとアームの動作を組み合わせた。
-定数の定義
#define CONN 1//スレーブの番号を割り振り
#define AGERU RemoteStartProgram(CONN,"ageru.rxe");Wait(...
#define SAGERU RemoteStartProgram(CONN,"sageru.rxe");Wai...
#define TUKAMU RemoteStartProgram(CONN,"tukamu.rxe");Wai...
#define HANASU RemoteStartProgram(CONN,"hanasu.rxe");Wai...
#define MODOSU RemoteStartProgram(CONN,"modosu.rxe");Wai...
#define KUZUSU
TUKAMU;AGERU;OnRev(OUT_BC,10);Wait(1000);Off(OUT_BC);OnF...
#define BLACK 40
#define LITTLE_BLACK 47
#define LITTLE_WHITE 53
#define WHITE 65
#define LEFT OnFwd(OUT_B,30);OnRev(OUT_C,30);Wait(1);Off...
#define LITTLE_LEFT OnFwd(OUT_B,35);OnFwd(OUT_C,20);Wait...
#define LITTLE_RIGHT OnFwd(OUT_B,20);OnFwd(OUT_C,35);Wai...
#define RIGHT OnFwd(OUT_C,30);OnRev(OUT_B,30);Wait(1);Of...
#define FRONT OnFwd(OUT_BC,25);Wait(1);Off(OUT_AC);
#define LINE_LEFT if (SENSOR_1 < BLACK) {LEFT;KAZU += 3;...
LITTLE_BLACK) {LITTLE_LEFT;KAZU += 1;} else if (SENSOR_1...
if (SENSOR_1 > LITTLE_WHITE) {LITTLE_RIGHT;KAZU -= 3;} e...
#define LINE_RIGHT if (SENSOR_1 < BLACK) {RIGHT;KAZU += ...
LITTLE_BLACK) {LITTLE_RIGHT;KAZU += 1;} else if (SENSOR_...
if (SENSOR_1 > LITTLE_WHITE) {LITTLE_LEFT;KAZU -= 3;} el...
アームの動きを定義。
ライントレースのための明るさの閾値を定義。
明るさごとの走行の仕方を定義。
線の右側、左側それぞれでのライントレースの仕方を定義。
-task main
task main() {
SetSensorLight(S1); //光センサを定義 int KAZU=0; int n =...
RemotePlayTone(1,440,1000);Wait(1500); //最初に音を鳴らす
MODOSU; //最初に念のため開いておく
while(n < 1){
if (SENSOR_1 < BLACK) {OnFwd(OUT_C,25);OnFwd...
else {OnFwd(OUT_BC,20);Wait(1);Off(OUT_BC);}
}
n = 0; //黒を感知するまで進む//線を超えるために進む
while(n < 1){
if (SENSOR_1 < LITTLE_WHITE)
{OnFwd(OUT_C,35);OnFwd(OUT_B,20);Wait(100);Off(OUT_BC);n...
else {OnFwd(OUT_B,40);OnFwd(OUT_C,20);Wait(1)...
}
n = 0; //黒を感知するまで曲がる
repeat(2000){LINE_RIGHT;};KAZU *= 0; while(KAZU < 300){L...
PlaySound(SOUND_DOUBLE_BEEP); //十字の交差点を感知
OnFwd(OUT_C,30);OnRev(OUT_B,30);Wait(1200); //右に曲がる
OnFwd(OUT_BC,15);Wait(300);Off(OUT_BC);
repeat(2000){LINE_RIGHT;};KAZU *= 0; while(KAZU < 200){L...
PlaySound(SOUND_DOUBLE_BEEP); //円との交差点を感知
KUZUSU; //缶を崩す
OnFwd(OUT_BC,15);Wait(200);Off(OUT_BC); OnRev(OUT_BC,15)...
OnFwd(OUT_C,15);OnRev(OUT_B,30);Wait(200);Off(OUT_BC);
OnFwd(OUT_B,15);OnRev(OUT_C,15);Wait(200);Off(OUT_BC); /...
Wait(1000);
SAGERU;TUKAMU; //引きずるために掴む
Wait(2000);
OnFwd(OUT_B,40);OnFwd(OUT_C,30);Wait(3000);Off(OUT_BC); ...
repeat(3000){LINE_RIGHT};KAZU *= 0; while(KAZU < 200){LI...
PlaySound(SOUND_DOUBLE_BEEP); //十字の交差点を感知
/* OnFwd(OUT_C,20);OnRev(OUT_B,20);//右に曲がる Wait(250...
repeat(1500){LINE_RIGHT}; KAZU *= 0; while(KAZU < 100){L...
PlaySound(SOUND_DOUBLE_BEEP);//十字の交差点を感知
while(n < 1){
if (SENSOR_1 < BLACK){OnFwd(OUT_BC,20);Wait(1);Off(OUT_B...
else{n++;Off(OUT_BC);Wait(1);}
}n = 0; //白を感知するまで進む OnFwd(OUT_BC,25); Wait(70...
/*TUKAMU;AGERU; OnRev(OUT_BC,20);Wait(2000);Off(OUT_BC);...
Wait(1000); Off(OUT_BC); OnFwd(OUT_BC,20);Wait(2000);Off...
TUKAMU;AGERU; OnRev(OUT_BC,20);Wait(2000);Off(OUT_BC); O...
Wait(1000); Off(OUT_BC); OnFwd(OUT_BC,20);Wait(2000);Off...
/*repeat(1000){LINE_RIGHT}; KAZU *= 0; while(KAZU < 100)...
PlaySound(SOUND_DOUBLE_BEEP);//円との交差点を感知
}
スタート時にアームを開き忘れても困らないよう、最初にアー...
A地点からスタート。
A地点を囲う枠線を越え、ライントレースするために黒線の端へ...
B地点で右折。Yの円に到着後、3段積みの缶を種類ごとに分け...
X地点にある3段積みの缶の塔を倒し、空いたスペースに運んで...
***ロボコン直前に突貫で作成したプログラム [#m33868d5]
先述した通りの動きをするようにプログラムした。
ロボコン本番では失敗。
スタート地点での機体の置き方次第で成功するか否か決まって...
-定数の定義
#define CONN 1//スレーブの番号を割り振り
#define AGERU RemoteStartProgram(CONN,"ageru.rxe");Wait(...
#define SAGERU RemoteStartProgram(CONN,"sageru.rxe");Wai...
#define TUKAMU RemoteStartProgram(CONN,"tukamu.rxe");Wai...
#define HANASU RemoteStartProgram(CONN,"hanasu.rxe");Wai...
#define MODOSU RemoteStartProgram(CONN,"modosu.rxe");Wai...
#define KUZUSU
TUKAMU;AGERU;OnRev(OUT_BC,30);Wait(1000);Off(OUT_BC);OnF...
-task main
task main() { MODOSU; RemotePlayTone(1,440,1000);Wait(15...
OnFwd(OUT_BC,30); Wait(4000); Off(OUT_BC);
KUZUSU; //缶を崩す
OnFwd(OUT_BC,15);Wait(200);Off(OUT_BC); OnRev(OUT_BC,15)...
OnFwd(OUT_C,15);OnRev(OUT_B,30);Wait(200);Off(OUT_BC);
OnFwd(OUT_B,15);OnRev(OUT_C,15);Wait(200);Off(OUT_BC); /...
SAGERU;TUKAMU; //引きずるために掴む
OnFwd(OUT_B,30); OnFwd(OUT_C,35); Wait(4000); Off(OUT_BC...
OnFwd(OUT_C,30); Wait(500); Off(OUT_C);
HANASU; MODOSU; }
*反省 [#of19b2db]
-チームとして
途中まで成功していたプログラムや機体を多少変更したところ...
時間が足りず、しっかりと原因を考えることができなかった。
しかし期末テストやレポートなどで切羽詰まった中で、できる...
-個人として
ロボットの作成、プログラムの作成、どちらでも役に立てなか...
創造力と工夫する力が自分には不足していると分かった。
さらにロボコン前日は別の用事があり作業に参加できず、メン...
持てる時間を目一杯使って作成に取り組んでくれたメンバーに...
ページ名: