LoginSignup
17
13

More than 1 year has passed since last update.

[ROS2 foxy] ESP32を使ってmicro-ROS for Arduinoで遊ぼう

Posted at

ROS2とマイコン間を通信したい欲求が出てきて、ESP32にmicro-ROSを導入して遊びました.
その記録を残します.

構築環境

  • Ubuntu 20.04
  • ros2 foxy
  • ESPDuino (esp32-wroom-32)
    (ESP32 Dev Module)

すでにros2 foxyを導入していることを前提とします.

micro-ROSの構成

大雑把にいうと、

という関係になります.

micro-ROS-Agentは、ros2で利用されるDDSとESP32のメッセージの橋渡しを行う中継役を担います.

インストール

1.Arduino IDEにesp32ボードを導入

まず、ESP32ボードのArduino開発環境を手に入れます.

IDEツールバーの「ファイル」->「環境設定」から、追加のボードマネージャのURLに、以下のURLを追加する.

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

「ツール」->「ボード」->「ボードマネージャー」から、"esp32"を検索して、v2.0.4を選択しインストールします.

2. Arduino IDEにmicro-ROS for Arduinoを導入

先に、以下のURLからmicro-ROS for Arduinoのfoxy版v2.0.5をダウンロードしておきます.

https://github.com/micro-ROS/micro_ros_arduino/archive/refs/tags/v2.0.5-foxy.zip

IDEツールバーの「スケッチ」->「ファイルのインクルード」->「.Zip形式のライブラリをインストール」から、先程ダウンロードしたmicro_ros_arduinoをインストールします.

3. micro-ROS-Agentを導入

公式でセットアップツールが用意されているので、そちらを使います.
(使わない場合も試したけど、色々と依存パッケージを解消しないといけないみたい)

setupツールのインストール
cd {ros2のwork spaceのパス}

source /opt/ros/$ROS_DISTRO/setup.bash

git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup

rosdep update && rosdep install --from-paths src --ignore-src -y

colcon build

source install/local_setup.bash

セットアップツールを使って、次は、micro_ros_Agentをビルドします.

Agentのインストール
ros2 run micro_ros_setup create_agent_ws.sh
ros2 run micro_ros_setup build_agent.sh
source install/local_setup.sh

4. Arduino IDEでmicro-ROSサンプルをESP32に書き込む

A. WiFI経由でmicro-ROS-Agentに接続

Arduino IDEで、「ファイル」->「スケッチ例」->「micro_ros_arduino」->「micro-ros_publisher_wifi」を選択します.

44行目のset_microros_wifi_transportsにWIFI情報を書き込みます.

IPは、micro-ROS-Agentを導入したPCのIP.
PORTは、デフォルトで8888ですが、Agent起動時にポートは変えることができます.

set_microros_wifi_transports("WIFI SSID", "WIFI PASS", "IP", "PORT");

「ツール」->「ボード」から、「ESP32 Arduino」->「ESP32 Dev Module」に変更し、コンパイルして書き込みましょう.

B. USB経由でmicro-ROS-Agentに接続

Arduino IDEで、「ファイル」->「スケッチ例」->「micro_ros_arduino」->「micro-ros_publisher」を選択します.

「ツール」->「ボード」から、「ESP32 Arduino」->「ESP32 Dev Module」に変更し、コンパイルして書き込みましょう.

5. micro-ROS-Agentを起動する

ここまで行ければ、あとは、micro-ROS-Agentを起動するだけで、ros2に接続できます.

A. WiFI経由でmicro-ROS-Agentに接続

ros2 run micro_ros_agent micro_ros_agent udp4 --port [PORT] -v6

B. USB経由でmicro-ROS-Agentに接続

ros2 run micro_ros_agent micro_ros_agent serial --dev [ESP32のデバイス /dev/tty〇〇] -v6

6. トピック確認

最後にESP32から送られたトピックを確認しましょう.

  • /topic_name : micro-ros_publisher_wifi
  • /micro_ros_arduino_node_publisher : micro-ros_publisher

で配信されています.

ros2 topic list
---
/topic_name
/parameter_events
/rosout

トラブル対応マニュアル

※トラブルが起きたら、追加していきます.

  • Arduino IDEでコンパイルできないんだが?

    • ESP32のversionが違うかも.v2.0.4になってるか確認しよう
    • ついでに、micro-ROS for Arduinoのバージョンもv2.0.5であることも確認しよう
    • 再起動も忘れずに.
  • micro_ros_setupがコンパイルできないんだが?

    • 別のワークスペースを作ってもう一度やってみよう.何か別のパッケージが干渉しているかも?
  • 全く通信されないんだが?

    • ROS_DOMAIN_IDを見直そう! おそらく、ROS_DOMAIN_IDを変えているに違いない!
    • WIFI設定を見直そう!
17
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
13