[[2018a/Member]]

*目次 [#p086b2ba]
#contents

*課題3.空き缶運搬ロボット † [#m2eb2879]
空き缶を分別して所定の場所に運ぶ。コース等は特に無く所定の位置に空き缶を置くことが目標.
#ref(./mission3地図.png,80%,コース画像)

*機体の概要 [#he5e87b2]
今回私達が制作した機体は2つのクワガタ機構アームと1つのカブトムシ機構アームを持つものだ.下の写真が全体図である.
今回私達が制作した機体は2つのクワガタ機構アームと1つのカブトムシ機構アームを持つものでその見た目と動きから”ハウルの動く城”.下の写真が全体図である.
#ref(./全体像3.jpg,100%,全体画像)
**アーム [#sd5ecf3a]
私達の当初の予定では上下に取り付けられたクワガタ機構アームで運搬が必要な空き缶を掴み真ん中のカブトムシ機構アームで真ん中のその場に留まらせたい空き缶を弾き飛ばし,上のクワガタ機構アームは上下することができるのでそのまま下に掴んだ空き缶の上に”上の空き缶”を積みもう1つの空き缶タワーまで運び,もう1つの空き缶タワーについても同じことを行い16点を狙いに行くものだった.
上のアームは上下に動かすことができ,上下のアームは空き缶を掴むことができるが,中のアームは空き缶を飛ばすために作成した.

**ギア [#iac7e02e]
私達は今回クワガタ機構アーム2つにクラッチギヤ(白いギヤ)を採用した.これは過去の先輩方のレポートを参考にしているときに知ったのだが,このクラッチギアには”トルクが大きくかかると空転する機能がある。”ということだ.これによってモーターの回転を止めてしまうと掴んでいる空き缶が落下してしまう、だからと言ってモーターを稼働させ続けて大きく負荷を掛けるのも良くないという2つ問題点を解決することができた.
以下クラッチギアを使用した箇所.
#ref(./クラッチ3.jpg,60%,クラッチギア)

**壁 [#u35499de]
RIS本体を縦置きにしたためRIS本体が倒れてしまうという問題が発生した.
#ref(./RIS.jpg,60%,RIS本体)
そこで私達はRIS本体の後ろ側に壁(ウォール・マリア)を制作することでこの問題を解決した.この時もともと機体本体が重いこととパーツ自体の不足が重なったため,ゼロ戦に用いられている穴を開けて質量を小さくする方法を撮った.
#ref(./壁.jpg,65%,ウォール・マリア)

*構想 [#e5bd4d18]
**当初の予定 [#tc1aceeb]
私達の当初の予定では上下に取り付けられたクワガタ機構アームで運搬が必要な空き缶を掴み真ん中のカブトムシ機構アームで真ん中のその場に留まらせたい空き缶を弾き飛ばし,上のクワガタ機構アームは上下することができるのでそのまま下に掴んだ空き缶の上に”上の空き缶”を積みもう1つの空き缶タワーまで運び,もう1つの空き缶タワーについても同じことを行い16点を狙いに行くものだった.また,それらのプログラム送信を通信によって行うものだった.
**変更後 [#i8daf470]
ロボット製作に大きく時間をかけてしまったためロボット自体は満足の行くものが出来上がった.しかし,プログラム制作の時間があまり取れないことを考慮して確実に1つの空き缶を円の中に入れることを目標に切り替えた.また,通信によって行う予定だったものも変更した.

*プログラムについて [#bee7b203]
先述したようにプログラムにかけられる時間がなかったためライントレースや通信機能は使用できなかった.
**アームのプログラム [#c0bbc8a8]
 #define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);//前に進む
 #define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC);//後ろに進む
 #define rightsenkai(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_AC);//右旋回
 #define leftsenkai(t) OnReV(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_AC);//左旋回
 task main()
 {
     Wait(180);
     OnFwd(OUT_AB);
     Wait(10);
     Off(OUT_A);
     Wait(570);
     Off(OUT_B);
     OnRev(OUT_AB);
     Wait(100);
     Off(OUT_AB);
 }
プログラム中に最初に"Wait(180);"を入れている理由は空き缶に到着するまでにかかる時間を停止させておくためである.途中の"Wait(570);"も同様の理由である.
**タイヤを動かすプログラム [#o9b6f478]
 #define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);//前に進む
 #define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC);//後ろに進む
 #define rightsenkai(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_AC);//右旋回
 #define leftsenkai(t) OnReV(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_AC);//左旋回
 #define rego(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC);//後ろに進む
定義の中に何秒間動くのか.という変数tを入れることでプログラム制作にかかる時間を少し削減した.
 task main()
 { 
     go(180);
     Wait(100);
     rightsenkai(140);
     go(400);
     Wait(100);
     rego(200);
 }
*まとめ [#j0e1249b]
**結果 [#s5302ed6]
変更後の予定どおり一つの缶を無事サークル内に入れることができた.ライントレースや通信機能を使用できなかったのは残念だったが予定どおりに行ってよかった.
**感想 [#yc5901b5]
今回は期待制作に時間をかけてしまったり期末テスト後ということもありうまくプログラムを組むことができなかった.しかし,仲間と日程を合わせ夜遅くまで制作をすることができてとても楽しかった.もし機会があるのであれば次回はパーツパーツが分けやすく軽く丈夫なものを制作し持ち運びアドもスムーズに行いたい.この授業を通して壁にぶつかったときにいかにして問題を解決するのかということやどのように機体,プログラムを作るのかという部分で成長できたと思う.


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS