まず、SRC2015お疲れさまでした。
SRCで初めてのロボコンを経験できました。
で、私(@ken_kentan)は手動機の制御(回路)を担当したのでその部分の説明をさせていただきます。
足回りについて
手動機の足回りは3輪オムニホール(ウレタン)を使っています。
2輪ではなくオムニにした理由は、姿勢を保ったまま全方向に移動できるので資材を掴む際の位置合わせがしやすいと考えたからです。
上の動画が、手動機足回りv1の制御テスト動画です。
DCモーターの出力は最大80%での動作です。制御には一般的な式を使っています。
SRC2015_Bteam_Manual/src/main.cpp (249~252行)
オムニは重心など様々な要因によってズレが生じるのでそれを6軸ジャイロを使い補正をかけています。
SRC2015_Bteam_Manual/inc/machine/machine.h (261~289行)
ノイズによって静止している状態でも値が加算されていくのでそれをmachine.hのGyroクラス・set()で除去しています。(かなり大雑把)
築城機能について
当チームの作戦では、実機内でお城を完成させることによって移動によるタイムロスをなくすというものでした。
そのため、資材を掴むアームハンドと完成したお城を押し出す上下機構のお皿を搭載しました。
・押し出しテスト
ハンド、お皿ともに上下する必要があり、これらを手動で動かすのは操縦者の技量に依存しすぎると判断しそれぞれの工程をボタン一つで行うように自動化しました。
・自動化
(一部、取得に失敗しているのはサーボ基板の不具合です。)
上下機構にそれぞれポテンショメータを付け、現在の高さを取得するようにしてそこからP制御で指定の位置までなめらか(?)に上下させました。
築城機能はmachine.hのBuilderクラスにぶちこんであるので適当にご覧ください。
プログラムでは、if(completed_arm == false || cnt_ture_arm < 5) break;というように指定の位置に移動が完了するまでサーボを動かさないようにしています。
本番で、押し出せなかって原因がここにあります。
上下機構のモーターがゆるみで空回りしたため指定位置まで上がずcompleted_plateがfalseのままで押し出すことができなかったのです。。。
自動化を行うなら自動化した全ての動作を手動でも行えるようにしなければならないと身をもって知りました。
サーボの制御はメイン基板から指示をArduinoに投げています。
本来は、CAN通信を行う予定だったのですが上手くいかずOnとOffの信号を3本線で送り、3bitで通信(?)しています。
と、制御っぽいことは以上です。
SRC前日に手動機が石垣を持ったままエリアに侵入できないと判明(見逃していた)ため急きょハードと制御を改造したためウンコードが生まれてしまいました✌
次にロボットを作るときは1か月ぐらいの練習期間が必要だと実感しました。
ここまで読んでいただきありがとうございました。
最近のコメント