電動クローラの組み立て(その1)

category: gnss
tags: cugo pixhawk

はじめに

GNSS高精度測位の応用として、自律走行ロボットを作成してみたくなりました。測位航法学会では、毎年10月にQZSS/GNSSロボットカーコンテストが開催されていて、私もいつか挑戦したいと考えています。

ロボット作りの方法がわからないまま過ごしていたところ、学生&新人エンジニアのための小冊子トラ技Jr.の2024年夏号に「高精度cm級GPS自律走行ロボの製作」特集がありました。これで電動運搬車(クローラ)作りを始められます。この本に書かれていることを試してみました。

構成

自律走行できるクローラを組み立てるためには、測位だけでなく、測位結果に基づいた電気信号制御や、電気信号に基づいたモータ制御、機材を収納する工作、など、多くの考えるべきことがあります。上述の記事には、導入する機器の製品名、ステップバイステップでの動作確認方法、ソフトウエア設定などのノウハウも書かれていて、とてもありがたいです。

ここでは、自分の頭でも考えるため、少しだけ上述の記事の方法をアレンジしてみました。導入した機材は次のとおりです。

  1. 電動クローラ CuGo V3コンプリートキット(記事の通り)
  2. フライトコントローラ Holybro PixHawk 6X(記事ではPX4 2.4.8)
  3. GNSS受信機u-blox M10N PixHawk用(ブザー、セーフティスイッチ、GPS1コネクタ付き。セカンダリGNSS受信機として利用予定。記事では別途GNSS受信機、ブザー、セーフティスイッチを用意)
  4. パワーモジュール PM02D(標準電源ケーブルの中間にコネクタ接続し、PixHawkへの5.2ボルト電源供給とI2Cでの電圧モニタを提供。記事では、DC-DCコンバータを別途用意)
  5. 制御用オープンソースソフトウェア ArduPilotとWindows PC(記事の通り)

項目2, 3, 4については、AliExpressにて販売されているHolybro Pixhawk 6XキットのうちのStandard Set M10 GPSのセットを利用しました。

今後、これに追加する予定の機材は次のとおりです。

  1. 2アンテナGNSS受信機 Unicore Communications UM982キット TOP982(プライマリGNSS受信機として利用予定。記事ではSeptentrio mosaic-H)
  2. シリアルポート無線化 XBee S2C(記事ではPixHawk2用テレメトリユニット)

この構成は、

  • 座標をGNSS受信機で、
  • 進行方向をGNSS受信機とPixHawk内IMU(慣性航法装置、inertial measurement unit)で、
  • 姿勢をPixHawk内IMUセンサで、

それぞれ計測し、PixHawkに読み込むようになっています。インターフェースは標準化されていますので、実際の機器接続はコネクタを差し込むだけです。

経由座標設定や移動量の計算は、Windows PC上で実行するArduPilotのMission Plannerソフトウェアにて行います。PixHawkとPCとの間は、USB接続、または、無線テレメトリ接続します。

一方、PixHawkによるモータ制御形式はPWM(pulse width modulation)です。制御1信号あたり、電源、グランド、信号の3本の線が利用されます。手動の無線フライトコントローラ(プロポ)の出力形式もPWMです。このインターフェースも標準化されています。電動クローラが無線プロポ受信機接続にて制御できているならば、その結線をプロポ受信機からPixHawkにつなぎかえることで自動化できます。

このPWM出力にてモータを制御するために、モータドライバ(ESC: electric speed controller)を用います。ESCには、PWM信号を受け取るコネクタのほか、モータを駆動するための大電流を扱える大きなコネクタもついています。

電動クローラ

そこで、電動クローラモータユニット2式(CuGo V3)、バッテリ、バッテリ充電器、ESC、プロポ、プロポ受信機がセットされ、プロポにてクローラを遠隔制御できるようにセットアップされているCuGo V3コンプリートキットを購入しました。

このキットを利用するためには、シャーシにモータを固定するなどの組み立てが求められますが、この過程は自らでこのキットを拡張するための練習になりました。ネジやアルミフレームも同梱されています。モータは、左右2台分のIP4X防水のブラシモータで、最大積載重量が80キログラムです。内蔵の24ボルト充電式バッテリで動作します。ESC2台と、バッテリ、プロポ受信機はあらかじめ接続され、防水ボックスに収められていますが、ESCとモータとの間は自らで接続するようになっています。

このCuGo V3の上位機種には、

  • CuGo V3i(ブラシレスモータ、防水なし)や、
  • CuGo V4(ブラシレスモータ、IP65防塵防水)

もあります。仕様書に、これらの制御インターフェースはUSBまたはTTLと書かれていましたので、私はこれらを早々に購入候補から外していました。しかし、これらは、プロポの信号を受けられるラジコン受信機ボードが内蔵され、この受信機と制御用Raspberry Pi Picoとを切り替えできるようになっているので、PixHawkのPWM信号を受け取れるように設定できる可能性があります。V4のブラシレスモータや防塵防水にも魅力がありますが、やや高価です。

V3コンプリートキットは、プロポが付属し、すぐにクローラを制御できるようにセットアップされ、失敗する可能性も少なく、機構拡張の勉強になる点で、私の用途に適していました。上述の記事にて推奨された機種を購入して良かったです。

CuGo V3

このV3コンプリートキットでは、プロポの左ステックの前後で左車輪を、右ステックの前後で右車輪を、それぞれ制御できるよう、あらかじめ設定されています。このプロポは、ステックの左右や、ステック押し込みや、プロポの別スイッチの情報を受信機にてプロポ受信機にて受け取れます。プロポ受信機出力をPixHawk PWM入力に接続して、Mission Plannerを設定すれば、面白いことができるかも知れません。

PixHawkとMission Planner

このPixHawk 6Xは、2つのGNSS入力を受け取ることができ、さらに有線イーサネットにも接続できます。さらに、このPixHawk 6Xには、テレメータ3ポート、CAN(controller area network)2ポート、I2C 1ポート、ESC 2ポート、PWM入出力 8ポート、外部入力4ポートなど、入出力ポートが潤沢にあります。私の購入したPixHawk 6Xには、コネクタ類も添付されていました。PixHawk 6Xを筐体に固定するには、両面テープを利用します。

PixHawk 6X

はじめに、Windows PCにArduPilotのMission Plannerソフトウェアをインストールします。ここでは、Windows PC標準のパッケージマネージャwingetを用いました。

winget install "mission planner"

次に、PixHawk 6XのGPS1コネクタにM10N受信機を、USBケーブルをPCに接続します。最初にすることは、Mission Plannerを起動し、PixHawk 6Xにファームウェアをインストールすることです。ここでは、ファームウェアとしてRover V4.5.5 Officialを用います。

PixHawk 6X Firmware

PC上には2つのシリアルポートが現れました。プルダウンメニュでいずれかのシリアルポートを選択し、右上の接続ボタンを押すと、地図上にROVERのイラストが現れます。M10受信機を窓辺におき、そのまま測位を続けました。正しい位置を示すまでに、10分程度の時間がかかりました。左上の姿勢表示(AI: attitude indicator)の人工地平線も航空機のグラスコックピットのようで、格好いいです。PixHawk本体を傾けると、この人工地平線も動き、右側の高度表示スケールも変化します。

Mission Planner

地図上で右クリックすると、走行経路を指定できます。現在はdisarm(安全)状態ですが、左下のアクションメニューでarm(起動)状態にすると、自動制御が始まります。

フルパラメータリスト画面から、PixHawkの動作を設定します。テレメトリ、セカンダリGNSS受信機、左右モータ結線などもここで設定します。また設定により、主要GNSS受信機の生データも解釈できます。Mission PlannerにはNTRIPクライアントの設定項目もあり、NTRIPキャスタのアドレス指定によりGNSS衛星番号や電波強度も表示されました。RTK測位もできるようです。

Mission Planner

もう少し頑張って、自律走行できるようにしてみたいと思います。

おわりに

電動クローラを組み立て、ArduPilotのPixHawkとMission Plannerを使ってみました。機構工作、クローラ制御など、自ら手を動かしてみてはじめてわかったことが多く、挑戦してみてよかったです。GNSS測位に基づきクローラを制御できるようになりたいです。


関連記事