M5Stack社製ESP32系モジュールでのmicro-ROSサンプルの確認
記事概要
micro-ROSがROS2 Foxy対応と時期を同じくしてESP32 MCUをサポートしたので,M5Stack社製ESP32系モジュール(M5StickC, M5Atom Lite, M5Atom Matrix)でpublisherサンプルを動作させるまでの手順を記す.先に挙げた3つのデバイスはいずれも,本手順で生成された同じファームウェアを同じように書き込むことができ,同じように動作した.
なお本記事の内容は基本的にはmicro-ROS公式サイト上の情報の拾い集めであり,筆者が新しく付け加えた情報は特にない.
環境
ベースOS | ROS2 | Micro-XRCE-DDS-Agent | CPU, RAM | |
---|---|---|---|---|
環境1 | Ubuntu 20.04(amd64) | Foxy | v1.3.0 | Core i5-7200U, 4GB x 2 |
手順
本手順においてはマイコン側ファームウェアのビルドまでをカバーし,動作確認の項で使用しているPC側のMicro-XRCE-DDS-Agentのビルドについては済んでいるものとする.大まかなステップとしては以下の通り.
Step1. ワークスペースの作成からファームウェアのコンフィギュレーション
Step2. WiFi接続の設定
Step3. ファームウェアのビルドと書き込み
Step4. 動作確認
ワークスペースの作成からファームウェアのコンフィギュレーション
# ROS2の環境変数を読み込む.
$ source ros2_foxy/install/setup.bash
# 筆者なりのワークスペースディレクトリ命名規則
$ mkdir -p uros_ws/freertos__esp32__int32_publisher
$ cd uros_ws/freertos__esp32__int32_publisher
$ git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup
$ rosdep update && rosdep install --from-path src --ignore-src -y
$ colcon build
$ source install/local_setup.bash
# 次のコマンドを実行すると大容量のファイル群(ESP32用ツールチェーンやESP-IDF)がダウンロードされるので,太い回線下での実行を強く推奨
$ ros2 run micro_ros_setup create_firmware_ws.sh freertos esp32
# [your local machine IP]の部分はDDS-Agentを起動するPCのIPアドレス.
# ポート番号は8888以外でも動くと思われるが,とりあえずデフォルトの8888を使用する.
# 具体的には -t udp -i 192.168.11.2 -p 8888 のように指定する.
$ ros2 run micro_ros_setup configure_firmware.sh int32_publisher -t udp -i [your local machine IP] -p 8888
WiFi接続の設定
下記コマンドを実行してmenuconfigに入る.ここではWiFiルータに接続するためのSSIDとパスワードを設定する.設定ファイルにはSSIDとパスワードが平文で保存されるので取り扱い注意.
$ ros2 run micro_ros_setup build_firmware.sh menuconfig
ファームウェアのビルドと書き込み
# 次のコマンドを実行して [100%] Built target app のメッセージが出たらビルド成功と思われる
$ ros2 run micro_ros_setup build_firmware.sh
# USBケーブル(M5StickCやM5Atomならデバイス側はType-C)で接続して,次のコマンドでファームウェアを書き込む
$ ros2 run micro_ros_setup flash_firmware.sh
動作確認
Micro-XRCE-DDS-Agentを起動する.
# MicroXRCEAgentのバイナリがあるディレクトリで実行する
$ ./MicroXRCEAgent udp4 --port 8888
マイコンをリセットして少し待つとWiFiルータからIPが配布され,セッションが確立される.
別のターミナルを立ち上げ,topic名を確認してsubscribeする.
$ source ros2_foxy/install/setup.bash
$ ros2 topic list
$ ros2 topic echo /freertos_int32_publisher
所感
publisherサンプルのソースコードを覗いてみると,FreeRTOSのタスクとして実装されているようである.より実践的なアプリケーションとしてI/Oを扱うには,ESP-IDFのAPIを叩くことになりそう(gpio_get_level関数やgpio_set_level関数など).
参考資料
1.micro-ROS公式サイト
2.ESP32 Overview
3.Micro-XRCE-DDS-Agent
4.ESP-IDF Programming Guide
5.@MAEHARA_Keisukeのポータル記事
Author And Source
この問題について(M5Stack社製ESP32系モジュールでのmicro-ROSサンプルの確認), 我々は、より多くの情報をここで見つけました https://qiita.com/MAEHARA_Keisuke/items/fb94a9bd61db7564a413著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .