えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

M5Core2届いた!ROS2Arduino動かした!

 M5Core2を買いました!(研究費の予算だけど)  実はM5Stackシリーズを触ったことがなかったので、結構気になっていたところでした。

f:id:Ray_ar:20201121231341j:plain
届いたやつ

 届いて思ったのは、M5Core2をROSと接続してコントローラノードにしたら面白いんじゃね?と思い、ROSを使うことにしました。そして、何を間違ったのか、「ROS2で動かしてみよう!面白そうだし」と思い、ROS2で開発することに…

 ここからおよそ5日間の地獄の開発が始まるのでした…

 記事を書くのは面倒だけど忘れるのは嫌なので、追記していく感じでやっていきます。

環境

次の環境で動作を確認しました。ROS2(と周辺ツール)は2020年時点ではまだまだ未熟なところもあるため、現時点でほかの環境で動くと思わないほうがいいでしょう。

【ハードウェア】

【ソフトウェア】

  • 開発環境(M5Core2):Arduino IDE 1.8.13(Windows Store 1.8.42.0)
  • RasPiのOS:xubuntu18.04.5 LTS(Ubuntu Server上のインストール)
  • ROS:ROS2 Dashing(patch:7)
  • Micro-XRC-DDS:v1.3.0 (←Dashing patch6とMicro-XRC-DDS 1.3.0の組み合わせが推奨らしいです)

準備

  1. Raspberry Pi4 にUbuntu Server18.04 LTSをインストールします。Raspi-imagerに掲載されているやつを使いました。Mateとかでもいいと思います。
  2. RaspiのUbuntuxubuntu化します。Ubuntu mateとかlubuntuとかでもいいと思います。
  3. Raspberry Pi4 にROS2 Dashing(Patch7)をインストールします。Patch7は執筆時の最新バージョンです。Debianパッケージをそのままインストールしてokです。
  4. Micro-XRC-DDS-Agentをインストールします。サイトを参考にしてください。

github.com

  1. M5Core2をボードマネージャーから追加します。これは、環境設定のURL貼り付け欄にESP32のためのjson URLを貼り付けて読み込ませれば、ボードマネージャーに読み込まれるのでそれの最新版をインストールしましょう。
  2. ROS2Arduino関連のパッケージをインストールします。ros2arduinoと検索してライブラリマネージャーから適当に最新版を持ってくればOKです。

  3. ボードを「ESP32 Dev Module」にして適切なポートを選択すれば準備完了です!

Arduinoのスケッチ例からudpのサンプルプログラム(PublisherとSubscriber)があるため、それのSSIDとPASSWORDを適切なものにしてコンパイルします。

動きます。

今のところうまくいっていないところ(ROS2Arduino×ESP32)

  • ros2::Nodeは継承しないとコンパイルが通っていも使えない(?)セーブしていないので構文を間違えただけかもしれない。

  • ros2::Node.publishが使えない。コンパイルは通るのに動かない。不思議。そのため、周期的にPublishすることしかできないと考えている。

  • Micro-XRC-Agentは環境が大きく関係するみたい。Raspberry Pi4 + Dashingはいけるけど、汎用CPU+DashingやRaspberry Pi4 + Foxyの組み合わせはだめだった。(issueに伝えろと言われているので、さらに検証してみます。)

 SubscriberやMicro-XRC-Agentの互換性についてはこれから検証して追記します。