紙コップの回収の流れ1C地点まで直進した後左折して、そこからF地点までライントレースする。QS間の線を認識するまで後退。課題2で使用したコースにピンポン玉が入った紙コップが指定された場所においてあり、それらを別々に回収してピンポン玉はX地点に、紙コップはY地点に運ぶ。障害物としても紙コップが置いてありそれらを動かしてはならない。今回の課題3は作業内容がとても多いので、チーム内でロボットを作る作業とプログラムを作る作業とで、分担して作業を行った。私は主にロボットの機体を作成したのでプログラムについての詳細は大谷風吾、カデンエン、チョウカイドウのレポートを参考にして下さい。†ルールの詳細はこちらのリンクにありますので参考にしてください。カイドウhttp://yakushi.shinshu-u.ac.jp/robotics/?2017b%2FMember%2FAlex%2FMission3(他のメンバーのレポートも参考にしてください。作成したロボットは一体で、コップを見つける、つかむ、重ねる、ピンポン玉を指定位置まで運ぶ動作、すべての動作を一体でこなせるようなロボットを作成した。†このロボットは前輪駆動となっており、ロボットの車体がとても重いので、ロボットの作成マニュアル本にあるロボットの後輪の車輪を二つ作り、ロボットの後ろに取り付けることでロボットの重量を支え、スムーズに動けるよう工夫した。†このロボットは一体でミッションをこなすためにロボットにNXT本体を二台積まなければならなかったので、ロボット本体の強度を強くする必要があった。そこで、ロボットの後ろと前の間に筋交いを設けることで、少しだけ強度を上げることが出きた。下の画像のようにロボットの左右両方に光センサーを取り付け、光センサーを使い分けることで紙に描かれた線の読み取り方が増えた。その結果、複雑な動きをすることができるようになった。超音波センサーコップを見つける超音波センサーはロボット前側中央に取り付け、さらにセンサーを縦にして使うことで測定した紙コップまでの距離をより正確に測ることができるように工夫した。(画像参照)しかし、「主なプログラミングによる動作の流れ」の項目で詳しく説明するが、このロボットは紙コップをロボットの中に取り込むので、超音波センサーに、下の動く画像のようにモーターを取り付けて超音波センサーが動けるようにし、紙コップをロボットの内部に取り込めるようにした。紙コップをつかむ機構は片方の腕を固定し、もう片方の腕をモーターで動かすことで紙コップをつかむようにした。紙コップをつかみやすいようタイヤを取り付けた。つかんだ時に紙コップを少し浮かせることでX地点の割りばしを超えてピンポン玉を枠内に運べるように工夫した。紙コップを上げ下げするモーターに紙コップをつかむモーターをとりつけて紙コップをつかみ、上げ下げできるようにした。*ロボットの紙コップを取得するときの一連の動きは「主なプログラミングによる動作の流れ」の項目で説明する。課題3のプログラミングは2機のNXT間でBluetouthを介して通信を行うプログラムを使用しており、超音波センサーを用いて紙コップを認識した後、親機からの信号を受信し子機の紙コップをつかむプログラムが起動するプログラムである。課題3に必要な主なプログラミングは「紙コップを見つけるプログラミング」と「ライントレースするプログラミング」である。†どのようにロボットから一番近い紙コップを見つけるのかロボットから一番近い紙コップを見つけるためにはセンサーが指定された任意の角度を回り、その後回っている途中で一番紙コップに近かった角度を随時記憶(紙コップとセンサーの距離の最小値を随時置き換えする)していく。ang)を用いてタイヤを回転させる。(画像参照)紙コップを見つけて近づくプログラムは次の1〜4の手順が行われている。ang)によって一番近い紙コップまでの距離を確認したら任意の距離まで近づく。d)をつかい、どのくらいタイヤを回せばよいかを計算してタイヤを回す。†ライントレースするプログラムの詳細は課題2のレポートで詳しく説明しているのでそちらを参考にして下さい。†ロボットの基本的な動作の流れはつぎのとおりである。†ライントレースを使い、紙コップの近くに到着しすると、センサーを起動して「紙コップを見つけるプログラミング」を使用して、一番近い紙コップを見つける。近い紙コップを見つけ次第その紙コップの方向にロボットの向きを変えてセンサーを上げる。†センサーを上げた後、紙コップをつかめる位置まで紙コップに向かって直進し、つかむ。紙コップをつかんだ後、ライントレースして、X地点まで紙コップを運ぶ。†X地点の中に紙コップが入ると、紙コップを上げて紙コップの中のピンポン玉を開放する。†ピンポン玉を開放したら、後ろに進みながらX地点の枠を出て、ピンポン玉に触れない位置までロボットが出ると超音波センサーを下ろして二つ目の紙コップを探しに行く。紙コップを一個取得した次の動作として、センサーで2つ目の紙コップを見つけてから紙コップを重ねる動作がある。最後に重ねた紙コップをY地点に置く。†まず親機、子機のdefineを次のように定義した。OnRev(OUT_AC,1);//紙コップを強くつかみ続けるライントレースするプログラムはsubルーチンにした。DKK()//ロボットの左側の光センサーが線の左側に沿ってライントレースする。DKK2()//ロボットの右側の光センサーが線の左側に沿ってライントレースする。}}課題3のプログラミングはできるだけ獲得スコアを得るためにD地点に近い(αとβ)二つの紙コップとピンポン玉(図参照)の回収を優先し、残り一つの紙コップの回収は断念した。α、βの紙コップの回収のプログラムをそれぞれ次のように分ける。C地点まで直進した後左折して、そこからF地点までライントレースする。F地点で交差点を認識した後、超音波センサーが作動してαの紙コップを見つける。QS間の線を認識するまで後退。QS間の線を認識するまで後退し、X地点まで運ぶ。↑1C地点まで直進した後左折して、そこからF地点までライントレースする。QS間の線を認識するまで後退。動いてほしい方向にロボットは動かなかった。超音波センサーが動かしてはいけない紙コップを感知して動かしてしまった。・NXT本体の取り付け位置を地面から高い位置にしてしまったので走行が不安定になってしまった。・ロボットの後輪を二つ取り付けることでスムーズに動けるよう工夫したが、車体が重すぎてロボットの走行に支障が出てしまった。・ロボットの縦方向に筋交いを取り付けたことで少し強度をつけることができたが、紙コップを上げ下げする機構との接触を避けるためにロボットの横方向の補強ができなかった。そのためロボットが回転したときに大きくゆがんでしまい、その結果、前輪の車軸に大きな負担がかかってしまい回転がスムーズにできなかった。強度を持たせるために横方向の補強も必要であったと考える。・ロボットの作成に多くの時間を割いてしまったためしっかりとしたプログラミングを作れなかった。・どのようなロボットを作成すれば効率よく紙コップを回収できるかを考えるのが難しかった。実際、完成したロボットは効率よく動いたとは言えなかった。