2018a/Member/shima/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2018a/Member]]
#contents
*課題 [#s8d00e43]
空き缶を分別して所定の場所に運ぶ。
#ref(./2018a-mission3.png,50%,課題3のコース)
フィールドの説明&br;
・フィールドは課題2で使用した紙を使用する。&br;
・2種類の空き缶(Aタイプ,Bタイプ)をそれぞれ3個づつ用意し、...
・空き缶には色をつけたり文字や記号を書いてもよい。あるい...
#br
ルール&br;
・競技時間は審判が続行不能と判断するまで、あるいはリタイ...
・図のA地点または(および)A'地点からスタートする。ただし...
・Aタイプの空き缶を円Y内に、Bタイプの空き缶を円X内に運ぶ...
・開始の合図から5秒以内にスタートボタンを押す作業を完了...
・競技が終了するまで、ロボットに触ったり人間が遠隔で操作...
・途中でうまく動かなくなった場合、1回限り再スタートする...
*ロボットについて [#rc44acab]
**全体像 [#a1ca0261]
#ref(./Image_060a1c4.jpg,50%,全体図)
アームを制御するRISとロボットの移動を制御するRISを取り付...
**アーム [#m1fe2543]
#ref(./課題3 アーム.jpg,50%,アーム)
缶を挟む機構をつかみたい缶の中央まで移動させ、1缶ずつ運...
**タイヤ [#a20077f7]
#ref(./課題3タイヤ.jpg,50%,タイヤ)
当初は前後どちらもタイヤを用いていたが、ライントレースが...
*プログラム [#jfabbe82]
**流れ [#m7204d5b]
?A`からXに向かう
#ref(./課題3?.jpg,50%,?)
?X内の缶3つを円外に移動させる
#ref(./IMG_8277.jpg,50%,?)
??で移動させた缶の上2つをX内に戻す
#ref(./IMG_8279.jpg,50%,?)
??で移動させた上の缶を円外にある缶に重ねる
#ref(./IMG_8286.jpg,50%,?)
??で重ねた2缶をYに運ぶ
#ref(./IMG_8290.jpg,50%,?)
**本体の移動 [#r236a115]
***定義 [#f8a1f40d]
最初の5行はロボットの移動に関わる定義で、それ以降はロボ...
#define go_straight(t) OnFwd(OUT_AC);Wait(t);Off(OUT_A...
#define go_back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); ...
#define TURN_RIGHT(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t...
#define TURN_LEFT(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t)...
#define cross_stop Off(OUT_AC);Wait(100); ...
#define kan_temae_toutyaku 10 ...
#define kan_sanko_motu 11 ...
#define kan_sanko_motte_senkaisita 12 ...
#define kan_niko_motta 13 ...
#define kan_niko_motte_senkaisita 14 ...
#define kan_ikko_motta 15 ...
#define kan_ikko_motte_senkaisita 16 ...
#define kan_okiowatta 17 ...
#define kan_futatabi_modoru 18 ...
#define kan_futatabi_motta 19 ...
#define y_toutyaku 20 ...
***メインプログラム [#hde208ce]
流れ?、?、?は同じ角度移動させるため、理屈的には旋回の秒数...
task main()
{
SetSensor(SENSOR_3,SENSOR_LIGHT);
go_straight(100); //前に直進
OnFwd(OUT_AC);
until(SENSOR_3<=46); //Xの円...
Off(OUT_AC);
SendMessage(kan_temae_toutyaku); //本体が...
ClearMessage();
until (Message()==kan_sanko_motu); //アーム...
TURN_LEFT(90); //3個の...
Off(OUT_AC);
SendMessage(kan_sanko_motte_senkaisita); //3個の...
ClearMessage();
until (Message()==kan_niko_motta); //アーム...
TURN_RIGHT(140); //缶を持...
Off(OUT_AC);
SendMessage(kan_niko_motte_senkaisita); //アーム...
ClearMessage();
until (Message()==kan_ikko_motta); //アーム...
go_back(45); //後退(...
TURN_LEFT(97); //左旋回
Off(OUT_AC);
go_back(10); //後退
SendMessage(kan_ikko_motte_senkaisita); //持って...
ClearMessage();
until (Message()==kan_okiowwata); //アーム...
go_back(150); //後退
Wait(100);
go_straight(150); //後退し...
Off(OUT_AC);
SendMessage(kan_futatabi_modoru); //本体が...
ClearMessage();
until (Message()==kan_futatabi_motta); //アーム...
go_straight(400); //直進
TURN_RIGHT(130); //右旋回
Off(OUT_AC);
go_straight(10); //直進
Wait(100);
SendMessage(y_touchaku); //Yに到...
Off(OUT_AC);
}
**アーム [#ya3b2c9a]
***定義 [#c1cbcaa1]
最初の6行はロボットの移動に関わる定義で、それ以降はロボッ...
#define arm_ueageru OnFwd(OUT_AC);Wait(120);Off(OUT_AC...
#define arm_sageru OnRev(OUT_C); ...
#define kan_tukamu OnRev(OUT_A); ...
#define arm_ageru OnFwd(OUT_C); ...
#define kan_hanasu OnFwd(OUT_A);Wait(30);Off(OUT_AC); ...
#define STOP Off(OUT_AC); ...
#define kan_temae_toutyaku 10 ...
#define kan_sanko_motu 11 ...
#define kan_sanko_motte_senkaisita 12 ...
#define kan_niko_motta 13 ...
#define kan_niko_motte_senkaisita 14 ...
#define kan_ikko_motta 15 ...
#define kan_ikko_motte_senkaisita 16 ...
#define kan_okiowatta 17 ...
#define kan_futatabi_modoru 18 ...
#define kan_futatabi_motta 19 ...
#define y_toutyaku 20 ...
***サブルーチン [#kd46c955]
下から2番目の缶をつかむサブルーチンである。缶を持ち上げる...
sub ueno_kan_tukamu()
{
arm_ueageru; //アームを最大まであげる
Wait(10);
arm_sageru; //アームを少し下げる
Wait(5);
kan_tukamu; //缶をつかむ
Wait(5);
arm_ageru; //缶をつかんだままアームを...
}
***メインプログラム [#r9ebd473]
缶を放すときに、Waitのプログラムを入れることで、缶が倒れ...
task main ()
{
ClearMessage();
until(Message() == kan_temae_toutyaku); ...
kan_tukamu;
Wait(50);
SendMessage(kan_sanko_motu);
ClearMessage(); ...
until(Message() == kan_sanko_motte_senkaisita); ...
Wait(100);
STOP;
kan_hanasu; ...
ueno_kan_tukamu();
ClearMessage();
Wait(100);
SendMessage(kan_niko_motta); ...
ClearMessage();
until(Message() == kan_niko_motte_senkaisita); ...
Wait(100);
Off(OUT_C); ...
Wait(800);
kan_hanasu; //缶を1個2個に分ける
ueno_kan_tukamu();
Wait(100);
ClearMessage();
SendMessage(kan_ikko_motta); ...
ClearMessage();
until(Message() == kan_ikko_motte_senkaisita); ...
STOP;
Wait(800); ...
kan_hanasu; ...
OnFwd(OUT_A); ...
arm_ueageru; ...
SendMessage(kan_okiowatta); ...
until(Message() == kan_futatabi_modoru); ...
kan_tukamu; ...
SendMessage(kan_futatabi_motta); ...
until(Message() == y_toutyaku); ...
kan_hanasu; ...
}
*まとめ [#f1df4472]
**課題 [#d1e632dc]
・アームで缶を挟むためにロボットの高さが必要となり、ブロ...
・RISのバッテリー等に大きく左右されてしまったため、成功率...
・ルールをしっかり把握し、作戦を練るべきであった。&br;
・ライントレースをせず時間でプログラムを作ったことから、...
・光センサの設置位置が良くなかったのか、その場所の明るさ...
**感想 [#v78b3398]
今までの学びを総結集させて、今回の課題に取り組んだため、...
終了行:
[[2018a/Member]]
#contents
*課題 [#s8d00e43]
空き缶を分別して所定の場所に運ぶ。
#ref(./2018a-mission3.png,50%,課題3のコース)
フィールドの説明&br;
・フィールドは課題2で使用した紙を使用する。&br;
・2種類の空き缶(Aタイプ,Bタイプ)をそれぞれ3個づつ用意し、...
・空き缶には色をつけたり文字や記号を書いてもよい。あるい...
#br
ルール&br;
・競技時間は審判が続行不能と判断するまで、あるいはリタイ...
・図のA地点または(および)A'地点からスタートする。ただし...
・Aタイプの空き缶を円Y内に、Bタイプの空き缶を円X内に運ぶ...
・開始の合図から5秒以内にスタートボタンを押す作業を完了...
・競技が終了するまで、ロボットに触ったり人間が遠隔で操作...
・途中でうまく動かなくなった場合、1回限り再スタートする...
*ロボットについて [#rc44acab]
**全体像 [#a1ca0261]
#ref(./Image_060a1c4.jpg,50%,全体図)
アームを制御するRISとロボットの移動を制御するRISを取り付...
**アーム [#m1fe2543]
#ref(./課題3 アーム.jpg,50%,アーム)
缶を挟む機構をつかみたい缶の中央まで移動させ、1缶ずつ運...
**タイヤ [#a20077f7]
#ref(./課題3タイヤ.jpg,50%,タイヤ)
当初は前後どちらもタイヤを用いていたが、ライントレースが...
*プログラム [#jfabbe82]
**流れ [#m7204d5b]
?A`からXに向かう
#ref(./課題3?.jpg,50%,?)
?X内の缶3つを円外に移動させる
#ref(./IMG_8277.jpg,50%,?)
??で移動させた缶の上2つをX内に戻す
#ref(./IMG_8279.jpg,50%,?)
??で移動させた上の缶を円外にある缶に重ねる
#ref(./IMG_8286.jpg,50%,?)
??で重ねた2缶をYに運ぶ
#ref(./IMG_8290.jpg,50%,?)
**本体の移動 [#r236a115]
***定義 [#f8a1f40d]
最初の5行はロボットの移動に関わる定義で、それ以降はロボ...
#define go_straight(t) OnFwd(OUT_AC);Wait(t);Off(OUT_A...
#define go_back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); ...
#define TURN_RIGHT(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t...
#define TURN_LEFT(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t)...
#define cross_stop Off(OUT_AC);Wait(100); ...
#define kan_temae_toutyaku 10 ...
#define kan_sanko_motu 11 ...
#define kan_sanko_motte_senkaisita 12 ...
#define kan_niko_motta 13 ...
#define kan_niko_motte_senkaisita 14 ...
#define kan_ikko_motta 15 ...
#define kan_ikko_motte_senkaisita 16 ...
#define kan_okiowatta 17 ...
#define kan_futatabi_modoru 18 ...
#define kan_futatabi_motta 19 ...
#define y_toutyaku 20 ...
***メインプログラム [#hde208ce]
流れ?、?、?は同じ角度移動させるため、理屈的には旋回の秒数...
task main()
{
SetSensor(SENSOR_3,SENSOR_LIGHT);
go_straight(100); //前に直進
OnFwd(OUT_AC);
until(SENSOR_3<=46); //Xの円...
Off(OUT_AC);
SendMessage(kan_temae_toutyaku); //本体が...
ClearMessage();
until (Message()==kan_sanko_motu); //アーム...
TURN_LEFT(90); //3個の...
Off(OUT_AC);
SendMessage(kan_sanko_motte_senkaisita); //3個の...
ClearMessage();
until (Message()==kan_niko_motta); //アーム...
TURN_RIGHT(140); //缶を持...
Off(OUT_AC);
SendMessage(kan_niko_motte_senkaisita); //アーム...
ClearMessage();
until (Message()==kan_ikko_motta); //アーム...
go_back(45); //後退(...
TURN_LEFT(97); //左旋回
Off(OUT_AC);
go_back(10); //後退
SendMessage(kan_ikko_motte_senkaisita); //持って...
ClearMessage();
until (Message()==kan_okiowwata); //アーム...
go_back(150); //後退
Wait(100);
go_straight(150); //後退し...
Off(OUT_AC);
SendMessage(kan_futatabi_modoru); //本体が...
ClearMessage();
until (Message()==kan_futatabi_motta); //アーム...
go_straight(400); //直進
TURN_RIGHT(130); //右旋回
Off(OUT_AC);
go_straight(10); //直進
Wait(100);
SendMessage(y_touchaku); //Yに到...
Off(OUT_AC);
}
**アーム [#ya3b2c9a]
***定義 [#c1cbcaa1]
最初の6行はロボットの移動に関わる定義で、それ以降はロボッ...
#define arm_ueageru OnFwd(OUT_AC);Wait(120);Off(OUT_AC...
#define arm_sageru OnRev(OUT_C); ...
#define kan_tukamu OnRev(OUT_A); ...
#define arm_ageru OnFwd(OUT_C); ...
#define kan_hanasu OnFwd(OUT_A);Wait(30);Off(OUT_AC); ...
#define STOP Off(OUT_AC); ...
#define kan_temae_toutyaku 10 ...
#define kan_sanko_motu 11 ...
#define kan_sanko_motte_senkaisita 12 ...
#define kan_niko_motta 13 ...
#define kan_niko_motte_senkaisita 14 ...
#define kan_ikko_motta 15 ...
#define kan_ikko_motte_senkaisita 16 ...
#define kan_okiowatta 17 ...
#define kan_futatabi_modoru 18 ...
#define kan_futatabi_motta 19 ...
#define y_toutyaku 20 ...
***サブルーチン [#kd46c955]
下から2番目の缶をつかむサブルーチンである。缶を持ち上げる...
sub ueno_kan_tukamu()
{
arm_ueageru; //アームを最大まであげる
Wait(10);
arm_sageru; //アームを少し下げる
Wait(5);
kan_tukamu; //缶をつかむ
Wait(5);
arm_ageru; //缶をつかんだままアームを...
}
***メインプログラム [#r9ebd473]
缶を放すときに、Waitのプログラムを入れることで、缶が倒れ...
task main ()
{
ClearMessage();
until(Message() == kan_temae_toutyaku); ...
kan_tukamu;
Wait(50);
SendMessage(kan_sanko_motu);
ClearMessage(); ...
until(Message() == kan_sanko_motte_senkaisita); ...
Wait(100);
STOP;
kan_hanasu; ...
ueno_kan_tukamu();
ClearMessage();
Wait(100);
SendMessage(kan_niko_motta); ...
ClearMessage();
until(Message() == kan_niko_motte_senkaisita); ...
Wait(100);
Off(OUT_C); ...
Wait(800);
kan_hanasu; //缶を1個2個に分ける
ueno_kan_tukamu();
Wait(100);
ClearMessage();
SendMessage(kan_ikko_motta); ...
ClearMessage();
until(Message() == kan_ikko_motte_senkaisita); ...
STOP;
Wait(800); ...
kan_hanasu; ...
OnFwd(OUT_A); ...
arm_ueageru; ...
SendMessage(kan_okiowatta); ...
until(Message() == kan_futatabi_modoru); ...
kan_tukamu; ...
SendMessage(kan_futatabi_motta); ...
until(Message() == y_toutyaku); ...
kan_hanasu; ...
}
*まとめ [#f1df4472]
**課題 [#d1e632dc]
・アームで缶を挟むためにロボットの高さが必要となり、ブロ...
・RISのバッテリー等に大きく左右されてしまったため、成功率...
・ルールをしっかり把握し、作戦を練るべきであった。&br;
・ライントレースをせず時間でプログラムを作ったことから、...
・光センサの設置位置が良くなかったのか、その場所の明るさ...
**感想 [#v78b3398]
今までの学びを総結集させて、今回の課題に取り組んだため、...
ページ名: