カエデ自動機械

ちょっとしたものづくりや電子工作のメモなど。技術開発とは今は呼べないかな。

倒立振子ロボット ver2を作る(5)-車体の組立と試運転

前回までで、

  1. ホストPC側で制御目標や制御ゲインを決定してマイコンに送信
  2. 受信した情報を元にモータ制御
  3. 車体の情報をマイコンで取得してホストPCに返信

という最低限の流れを確立することができました。
今回は簡単ですが車体の組立と試運転の状況を紹介しようと思います。

実はブログにまとめる作業が億劫で半年以上放置してしまいまして、既に当時のことを思い出せない状態になっています。
これ以降、残念ですが観念的な説明に終始することになりそうです。

車体の組立

基本的な部品構成等の話はこのシリーズの初期に書いた通りです。
部品についても大方紹介したとおりで、その通り組み立てていきます。

f:id:ktd-prototype:20200119222854j:plain
倒立振子ロボットver2の組立後の状態

青いフレームはmakeblockのシリーズです。
非常に便利なのですが、最近個別の部品単位での購入ができなくなってしまいました・・・
モータ等の取り付けは黄色の部品で、友人に頼んで3Dプリンタで出力してもらいました。

f:id:ktd-prototype:20200119223033j:plain
車体の搭載品拡大図

車体の下段向かって右にマイコン系を配置しています。
スイッチサイエンスで売られているESP32の開発者キットを、20mmの足長ピンソケットでシールド対応にして使っています。
プリント基板を2階層にしており、上層がESP32、モータドライバ、エンコーダケーブルのコネクタが配置されています。下層はIMUと、シングルボードコンピュータに給電するためのDCDCコンバータが載っています。

下段向かって左側はUbuntuが載るシングルボードコンピュータであるUPBoardを搭載しています。
まだ使用はしておらず、後述する試運転では、ホストPCとしてデスクトップPCを使っており、当該PCに有線で繋がったまま倒立振子を動かしています。
up-board.org


下段中央、車体の前後方向に伸びる青いmakeblockの梁は、転倒時に回路やコネクタが地面にぶつからないようにするためのバンパーです。実験の時は、この部分にクッションを巻いて使っていました。

上段は3セルのLiPoバッテリ、右上はモータへの給電をON-OFFするスイッチです。
スイッチはいわゆるミサイルスイッチと呼ばれるもので、非常停止スイッチとは少々異なりますが、

  • 赤い蓋を開けてトグルを操作しないとONにならない(誤ってONにしづらい)
  • 赤い蓋を閉じればトグルが自動的にOFF側に切り替わる(OFFにし易い。更に確実ではないが、強い衝撃が加わってもその弾みで蓋が閉じてOFFになってくれる)

という優れものです。通電時は赤いLEDが光ります。

モータ駆動のためのPIDゲイン調整用ノードとGUIの整備

この部分は、倒立振子ロボットver1で作ったノードを流用します。
(参考)
ktd-prototype.hatenablog.com

上記記事にも書きましたが、何個かのwebサイトから見様見真似で作ったため、自分でもなぜ動いているのかあまり説明ができません。
従って恥ずかしい話ですが、このノードについての解説は省略します・・・

とりあえず、ノードが立ち上がるとスライドバーでゲイン調整ができるGUIが立ち上がり、ゲインを調整するたびに、ROSメッセージとしてそれをPublishします。
Publishされたノードは、前回説明したマイコンとのI/FノードでSubscribeされ、シリアル通信でマイコンに送信されます。

将来的には

  • 長時間放置してもその場に留まってくれる機能
  • 外部入力により遠隔操縦できる機能

等を実装したいので、それら用のゲイン調整バーも準備してあります(後述の試運転では未使用)

試運転の状況

制御目標角度は0°で固定、おなじく目標方向転換量もゼロで固定して、ゲインを適切に設定すれば、倒立振子を直立に立たせる方向にモータが回るようになります。
重心位置が前後にずれていると、直立安定の角度が厳密にゼロにはなりませんので、適宜値は修正します(ミリラジアン単位)


倒立振子ロボットver2 試運転


まだゲインの最適値は見つけられていないためたまに挙動が不安定になりますが、大体バランスを取ろうとロボットが動くところまでは実装することができました。
次回は、放置してもその場に留まってくれるような機能を実装しようと思っています。

ktd-prototype.hatenablog.com