はじめに
残念ながら、GR-ROSEの開発環境であるIDE for GRの最新版は2020年9月のVersion 1.13であり、1年ほど更新されていない状態です。
そのため、GR-ROSEのROS2ライブラリはDashing対応で止まっている状態です。
一方、ROS2のバージョンリリースについてはREP 2000で決められており、2021年12月時点での現行バージョンはFoxyとなっています。
マイクロコントローラ向けのROS2環境は、現在はmicro-ROSが主流となりつつあります。
ルネサスさんもmicro-ROSへの対応をすすめているようですが、ターゲットのマイクロコントローラがGR-ROSEに搭載されているRX65Nではなく、ARM系のRA6M5になっています。
RA6M5ベースのがじぇるねボードが出てくること期待しています。
それまでは、このGR-ROSEをROS2で使っていきたいと思いますので、今回は現在(2021年12月末)もGR-ROSEのROS2環境を構築可能かを確認してみます。
ROS2およびAgent環境の構築
GR-ROSEのROS2バージョンはDashingであるため、GR-ROSEのROS2ライブラリとやりとりをするAgentおよびROS2ノードが動作するOS(Ubuntuを想定)のバージョンは、18.04LTSになるかと思います。
幸い、Ubuntu 18.04LTSのEOLは2023年4月であり、今回使用するシングルボードコンピュータのJetson NanoのJetpack SDKですが、最新版であるJetPack 4.6はUbuntu 18.04ベースなので問題ありませんでした。
JetPack 4.6を導入後、公式にあるDashingのインストール手順でROS2をインストールします。
次に、Agent側の準備ですが、GitHubのReadmeにリンクがかかれているInstallation manualに従って導入します。
ただし、GR-ROSEが対応しているバージョンは1.1.6のため
~/Micro-XRCE-DDS-Agent/$ git checkout 1.1.6
をした後にmake&ビルド、インストールします。
動作確認
動作確認は、IDE for GR 1.13のudp_talker_besteffortを使用しました。
サンプルプログラム udp_talker_besteffortのネットワークの設定のみを環境にあわせて設定し、ビルド&書き込みします。
その後、Jetson Nano側でAgentを起動します。
~/Micro-XRCE-DDS-Agent/build$ ./MicroXRCEAgent udp --port 2020 -d
ポートは空いていればなんでもよいです。最後の、-d
は重要で、Discovery serverを有効化します。GR-ROSEのROS2ライブラリは、Discovery(Agentの自動発見)が前提のためこの指定が必要です。
シリアルモニタを開いてログをみると、うまく動作している場合は以下のような出力になるかと思います。
Discovery Agent...
Found agent => ip: xxx.xxx.xxx.xxx, port: 2020
Chosen agent => ip: xxx.xxx.xxx.xxx, port: 2020
Sent topic: Hello DDS world!: 0
Sent topic: Hello DDS world!: 1
Sent topic: Hello DDS world!: 2
・・・
Jetson NanoにAgentを動作させているのと別のコンソールを開いて、
~$ ros2 topic echo chatter
とすれば、GR-ROSEからメッセージが送られてきているのが確認できます。
注意:別のコンソールを開いた際は、以下のROS2環境の有効化を忘れずに:)
$ source /opt/ros/dashing/setup.bash
最後に
既にGR-ROSEのROS2ライブラリが対応するバージョンの開発は終了しましたが、まだ使用することは可能です。
今後は、micro-ROSに開発環境は移っていくかと思いますが、現状、micro-ROSを利用するにはLinuxの環境が必要になると思います。手軽にROS2を試すという点で、GR-ROSEのROS2ライブラリを使うのはありかもしれません。