2018a/Member/yama/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2018a/Member]]
#contents
*課題 [#t466ace1]
空き缶を分別して所定の場所に運ぶ。
#ref(2018a/Member/yama/Mission3/課題3の図.png,50%) [#c77...
*ロボットの説明 [#r4747622]
**ロボットの全体 [#f359cbe6]
#ref(2018a/Member/yama/Mission3/ロボット3全体.jpg,50%)
ロボットを2個に分けると連携が難しいと思ったので、1個の...
**アームの上げ下げ [#i83cbd88]
#ref(2018a/Member/yama/Mission3/ロボット3上下.jpg,50%)
アームを上にあげると重力で自然に下がってしまうので、上に...
**ロボットの補強 [#ic53257d]
#ref(2018a/Member/yama/Mission3/ロボット3補強.jpg,50%)
ロボットの高い位置に重いモーターをつけてアームを上下する...
**タイヤ [#adacd693]
#ref(2018a/Member/yama/Mission3/ロボット3タイヤ.jpg,50%)
後輪にモーターをつけた。前輪にもタイヤをつけたら摩擦や内...
*プログラム [#bd5447f1]
大まかな動きとして、Xにある缶を一度外に出す。2段目をXに...
**アームの定義 [#va9e3703]
#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 ...
**サブルーチン [#me0eb506]
sub ueno_kan_tukamu()
{
arm_ueageru;
Wait(10);
arm_sageru;
Wait(5);
kan_tukamu;
Wait(5);
arm_ageru;
}
缶が3個積みあがっているので、それを順番に下ろしていくサ...
**アームのタスクメイン [#p70c4d62]
task main ()
{
ClearMessage();
until(Message() == kan_temae_toutyaku); //Xに着...
kan_tukamu;
Wait(50);
SendMessage(kan_sanko_motu);
ClearMessage(); //缶3個掴んだことを伝える
until(Message() == kan_sanko_motte_senkaisita); ...
Wait(100);
STOP;
kan_hanasu; //缶を3個横に移動
ueno_kan_tukamu();
ClearMessage();
Wait(100);
SendMessage(kan_niko_motta); ...
ClearMessage();
until(Message() == kan_niko_motte_senkaisita); ...
Wait(100);
Off(OUT_C); //缶が下りるのを待つ
Wait(800);
2段目の缶を持ち上げて移動させて下ろそうとしても、缶を持...
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; //缶を2個1個に分けた
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; //缶を放...
}
**車輪の定義 [#z161bdd6]
#define go_straight(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC)...
#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);O...
#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_okiowwata 17
#define kan_futatabi_modoru 18
#define kan_futatabi_motta 19
#define y_touchaku 20
**車輪のタスクメイン [#y3fb889b]
Aからスタート。Xが正面に来るようにロボットをセット。
task main()
{
SetSensor(SENSOR_3,SENSOR_LIGHT);
go_straight(100);
OnFwd(OUT_AC);
until(SENSOR_3<=46);
Off(OUT_AC); //Xの円の黒まで直進
SendMessage(kan_temae_toutyaku);
ClearMessage();
until (Message()==kan_sanko_motu); //缶3個をつかむ
TURN_LEFT(90); //左旋回
Off(OUT_AC);
SendMessage(kan_sanko_motte_senkaisita);
ClearMessage();
until (Message()==kan_niko_motta); //上の缶2個を...
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); //アームを開く
Off(OUT_AC);
}
*感想 [#n6c7b735]
今回はロボットを作るのも、プログラムを考えるのもどちらと...
終了行:
[[2018a/Member]]
#contents
*課題 [#t466ace1]
空き缶を分別して所定の場所に運ぶ。
#ref(2018a/Member/yama/Mission3/課題3の図.png,50%) [#c77...
*ロボットの説明 [#r4747622]
**ロボットの全体 [#f359cbe6]
#ref(2018a/Member/yama/Mission3/ロボット3全体.jpg,50%)
ロボットを2個に分けると連携が難しいと思ったので、1個の...
**アームの上げ下げ [#i83cbd88]
#ref(2018a/Member/yama/Mission3/ロボット3上下.jpg,50%)
アームを上にあげると重力で自然に下がってしまうので、上に...
**ロボットの補強 [#ic53257d]
#ref(2018a/Member/yama/Mission3/ロボット3補強.jpg,50%)
ロボットの高い位置に重いモーターをつけてアームを上下する...
**タイヤ [#adacd693]
#ref(2018a/Member/yama/Mission3/ロボット3タイヤ.jpg,50%)
後輪にモーターをつけた。前輪にもタイヤをつけたら摩擦や内...
*プログラム [#bd5447f1]
大まかな動きとして、Xにある缶を一度外に出す。2段目をXに...
**アームの定義 [#va9e3703]
#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 ...
**サブルーチン [#me0eb506]
sub ueno_kan_tukamu()
{
arm_ueageru;
Wait(10);
arm_sageru;
Wait(5);
kan_tukamu;
Wait(5);
arm_ageru;
}
缶が3個積みあがっているので、それを順番に下ろしていくサ...
**アームのタスクメイン [#p70c4d62]
task main ()
{
ClearMessage();
until(Message() == kan_temae_toutyaku); //Xに着...
kan_tukamu;
Wait(50);
SendMessage(kan_sanko_motu);
ClearMessage(); //缶3個掴んだことを伝える
until(Message() == kan_sanko_motte_senkaisita); ...
Wait(100);
STOP;
kan_hanasu; //缶を3個横に移動
ueno_kan_tukamu();
ClearMessage();
Wait(100);
SendMessage(kan_niko_motta); ...
ClearMessage();
until(Message() == kan_niko_motte_senkaisita); ...
Wait(100);
Off(OUT_C); //缶が下りるのを待つ
Wait(800);
2段目の缶を持ち上げて移動させて下ろそうとしても、缶を持...
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; //缶を2個1個に分けた
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; //缶を放...
}
**車輪の定義 [#z161bdd6]
#define go_straight(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC)...
#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);O...
#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_okiowwata 17
#define kan_futatabi_modoru 18
#define kan_futatabi_motta 19
#define y_touchaku 20
**車輪のタスクメイン [#y3fb889b]
Aからスタート。Xが正面に来るようにロボットをセット。
task main()
{
SetSensor(SENSOR_3,SENSOR_LIGHT);
go_straight(100);
OnFwd(OUT_AC);
until(SENSOR_3<=46);
Off(OUT_AC); //Xの円の黒まで直進
SendMessage(kan_temae_toutyaku);
ClearMessage();
until (Message()==kan_sanko_motu); //缶3個をつかむ
TURN_LEFT(90); //左旋回
Off(OUT_AC);
SendMessage(kan_sanko_motte_senkaisita);
ClearMessage();
until (Message()==kan_niko_motta); //上の缶2個を...
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); //アームを開く
Off(OUT_AC);
}
*感想 [#n6c7b735]
今回はロボットを作るのも、プログラムを考えるのもどちらと...
ページ名: