[M5StickC] RoverC ProとJoyCでメカナムホイールラジコン事始め

【この記事の所要時間: 750秒】

今更かもだけど、ふと面白いホイールを知った。
通常のホイールの接地面に当たる部分に、小さな樽型の回転コマがやや斜めになって円周に沿って多数並んだ「メカナムホイール」という物。
通常のホイールが車軸の垂直方向(前後)へ動くだけなのに対して、真横や斜め方向にも動くことが出来る。
四輪配置された各車輪の回転方向や回転速度を変えることで自由自在に動かせて、その挙動はまるで陸上版ドローンといった趣き。
Amazonなどでも、このメカナムホイールを使ったラジコンが幾つも見掛け、マニピュレーター(グリッパー/ハンド、クレーン、フォークリフト)やカメラを搭載した物、中には柔らかいウォータージェルを発射する物まで多種多様。
また、Raspberry PiやArduinoなどのプロセッサーモジュールを搭載して制御出来る物も有る。

公開されている様々な動画を観ているうちに、この摩訶不思議な挙動に惹かれて、自分でも動かして(走らせて)みたくなった。
手軽なのは最初から完成しているラジコン…比較的安価で直ぐに遊べるけれどちょっと物足りない。
Raspberry PiやArduinoを使うタイプはやや高価な上に本体以外にも結構費用が掛かり(特にRaspberry Piは現在暴騰しているし…)、セットアップの敷居も高い。

その中で見つけたのが、M5StackRoverC Pro
M5StickC(現行はM5StickC Plus)という比較的安価で、大人の親指程度という非常にコンパクトながら多機能なプロセッサーモジュールを使用するメカナムホイールカー(ロボット)。
動作にはM5StickCを使ってプログラムを作成・実行する必要があるが、JoyCというコントローラーと組み合わせてラジコン操作が出来るサンプルプログラムが公開されているので、開発環境を整えれば先ずはラジコンとして遊ぶことが出来る。
尚、国内でも数社で取り扱いがあるものの、タイミングが悪く現時点では全て品切れで入荷未定。
幸いにM5Stackの公式オンラインショップに在庫があり、送料を含めても国内価格と大差無かったため注文し、つい先日届いた。
他に、コントローラー JoyC、RoverC ProとJoyCに使用するM5StickC Plus、いずれ画像認識もしたいというわけでAIカメラモジュール UnitVを、こちらは在庫が有る国内ショップで購入した。

RoverC Pro w/M5StickC Plus & JoyC w/M5StickC Plus

購入品

RoverC Pro、JoyC、UnitV、M5StickC Plus(二個)
M5StickC Plus用液晶保護シート(二枚入り)とRoverC Pro購入時に付属していたカード

M5StickC Plus

RoverC ProとJoyCには付属していないため、それぞれ用に購入する必要がある。
付属品は一切無く、本体にジャストフィットな箱に収められている。
M5StickC Plusの多彩な機能については、未だ使い始めたばかりでとても紹介しきれないので割愛。

RoverC Pro (w/o M5StickC)

RoverC Pro 本体と付属品一式

RoverC Proはほぼ組み立て済みで、必要に応じてグリッパー(手前にある角状の物)を取り付ける。
グリッパーはサーボ制御により開閉し小物を挟むことが出来る。
尚、各部に開いている丸い穴はレゴブロックのコネクタピンと互換があり、様々なブロックの装着が可能。

グリッパーユニットとM5StickC Plusを装着

M5StickC PlusはRoverC Proのピンヘッダに差し込むのみで特に固定する機構は無いが、容易に外れる恐れは無し。

JoyC (w/o M5StickC)

JoyC 付属品は無し

左右にジョイスティックが有り周囲にLEDが並んでいる。
それぞれ全方位に傾けることが出来て、電源が入っている状態では傾けた方向のLEDにが点灯する。
押しボタンは無いが、両スティックとも押し込み操作に対応。

M5StickC Plusを装着

こちらもM5StickC PlusはJoyCのピンヘッダに差し込むだけど、こちらは容易に抜けることはないが多少ガタつく感じ。
粘着力が弱めの両面テープで固定しようかな。

UnitV

UnitV 本体と付属品

画像の色や輪郭、動きなどを認識出来るAIカメラ…もちろんプログラミングが必要だけど、RoverC Proと組み合わせれば、ライントレースや障害物回避、物体追尾など、応用範囲はかなり広そうだ。

充電

RoverC ProとJoyCのバッテリー

RoverC ProとJoyCには共に汎用(16340)のリチウムイオンバッテリーが使用されており、着脱可なので手持ちの充電器でも充電出来るが、M5StickC Plus本体と合わせて充電する。

RoverC Pro側(スライドスイッチはRoverC Pro本体の電源スイッチ)
JoyC側(スライドスイッチはJoyC本体の電源スイッチ)

RoverC ProとJoyCともに、搭載したM5StickC PlusのUSB-Cポートを介して給電⇒充電する。
この際に各M5StickC PlusとRoverC Pro/JoyCの電源はONにしておくとのこと。
但し、全てOFFでも問題無く充電されるとの報告もあるので、余り厳密に考えなくても良さそう。
尚、充電中(充電完了)表示は無いので、気になる場合はUSBチェッカーなどで電流量を監視するのも良いだろう。(電流量が著しく下がったら充電完了。)

試運転

MacBookPro/13に入れているmacOS12.3はM5StickC関連のツールと相性が悪く、接続しても認識しない・転送出来ない、といった報告を見かけたので、GPD P2 Maxに開発環境を構築した。

様々な関連ツールが用意されているが、先ずはラジコン操作としての試運転が出来る最小限の環境から構築していこう…というわけで、ラジコン操作のサンプルプログラム(スケッチ)が用意されている Arduino IDEをセットアップ。
インストールからセットアップ(必要ライブラリのインストール等)、M5StickC Plusへの書き込みなどの手順については、詳細且つ大変分かりやすく説明されているページが数多くあるので割愛。
私も大変お世話になりました。(多謝)

サンプルプログラム(スケッチ)
Arduino IDEの【ファイル】⇒【スケッチ例】で【M5StickCPlus】⇒【KIT】⇒【JoyC_&_RoverC】を開く。
【Master】…RoverC Pro側のM5StickC Plusへ書き込む。
【Remote】…JoyC側のM5StickC Plusへ書き込む。

それぞれのM5StickC PlusとRoverC Pro/JoyCの電源をONにして、RoverC Pro側とJoyC側の両方のM5STickC Plusに同じアクセスポイント名が表示されたら(上の写真)、JoyC側M5StickC Plusの【M5】ボタンを数秒長押しする。
JoyC側M5StickC Plusの表示が数値の羅列(コントローラーの操作値表示)に変わったら操作可能。

開発環境の構築やプログラム(スケッチ)のコンパイル/転送では先達の方々の情報・解説に大変助けられた。
引っ掛かることもあったものの、今まで触れなかった事に触れて知らなかった事を知るのは実に楽しい。
今はまだ出来合いのプログラムを動かしているのみだけど、部分的なカスタマイズから始めて理解を深め、いずれはUnitVを使った画像認識も組み込んでみたい。

それにしてもメカナムホイールの挙動は実に妙で面白いな。

後日談…UnitV搭載

ひとまずM5StickC Plusを二つ使って手動(ラジコン)操作が出来るようになったので、次は一緒に購入したAIカメラモジュール UnitV による画像認識を用いた自律走行にトライしてみたい。

RoverC ProへのUnitVの搭載について…RoverC Pro(本体とグリッパーユニット)とUnitVにはレゴ(テクニックシリーズ)のコネクタを差し込める穴が用意されているので、レゴブロックを組み合わせてコネクタで接続することで搭載出来そう。
幸いに、レゴの様々なブロックパーツを単品販売しているネットショップが有るので、早速構成を検討し必要なパーツを購入した。

RoverC ProにUnitVを搭載

グリッパー動作に干渉しないようにサーボの上にUnitVを搭載した。
M5StickC Plusとケーブルの固定も考慮した構成にしている。

後部にパネルを装着

グリッパーユニットとUnitVでややフロントヘビーになるため、車体の後部にカウンターウェイト代わりのパネルパーツを装着、見た目的な意味も有り。