
"Rapiro"をmicro-ROSで動かしてみよう
皆さんこんにちは。
1年半ほど前、M5Stackを二足ロボットのRapiroへ組み込み、Blynk経由でラジコン化した記事を書きました。今回はそれをmicro-ROS経由でやってみようという記事です。
ROS2の特徴の一つに、組み込み系マイコンへ対応しているという点が挙げられます。そんなROS2が動作しているPCと、マイコンをブリッジしてくれるライブラリがmicro-ROSです。
簡単に組み立てられるロボットと手を出しやすいマイコン、micro-ROSを使用して、ぜひROS2を用いたロボット開発に踏み出してみてください。
使用環境
使用した環境は下表の通りです。なお、ROS2やmicro-ROSの環境構築についてはこちらの記事をご参照ください。
今回使用したmicro_ros_arduinoは、公式にはM5Stackに対応していません。しかし、ESP32 Dev Moduleは対応しており、同じコアを持つM5Stackシリーズであれば動作するものと思われます。(他シリーズでの動作確認はしていませんので、悪しからずご了承ください)
OS | Ubuntu 22.04 |
ディストリビューション | ROS2 Humble |
IDE | Arduino IDE |
マイコン | M5Stack Basic |
ロボット | Rapiro |
組み立て・コーディング
Rapiroを組み立て、頭内部にM5Stackを設置します。Rapiro本体の組み立て方法については、こちらの記事と公式の組み立てマニュアルをご参照ください。
M5StackのTX2・RX2・5V・GNDと、Rapiroのシリアル通信用ケーブルのピンをオスーメスのジャンパ線で接続します。
使用したコードはこちらです。
ROS2でロボットの操作によく使用される、/cmd_velトピックを読み込み、前後進・左右旋回に対応したコマンドをM5Stackのシリアルポート"Serial2"からRapiro側へ送信するという処理になっています。
また、Rapiroに内蔵されているArduino Uno R3互換ボードには、公式のサンプルプログラムを書き込んであります。
動かしてみよう
早速動かしてみます。
以下のコマンドをPCで実行して、M5Stackからの接続を待ちます。
ros2 run
micro_ros_agent micro_ros_agent udp4 -p 8888
正常にM5Stackが接続されたことを確認したら、以下のコマンドを実行して、teleop_twist_keyboardを動かします。
ros2 run
teleop_twist_keyboard teleop_twist_keyboard
teleop_twist_keyboardの実行が始まったら、"i"、"j"、"k"、"l"、","をキーボードから入力すると、入力に応じてRapiroは前後進・左右旋回の動作を行います。
是非、お手元でお試しください。