目次

micro-ROS

https://microros.github.io/
FreeRTRPSの開発が止まってるので,組込み用のROS周りはこちらの方が希望が持てそう
DDSにMicro XRCE-DDSを採用している.組み込み側にはRTOS(リアルタイムOS)が必要. 現状はNuttxを採用している.どうやらMicro XRCE-DDSがNuttxでの動作サポートしているかららしい?

micro-ROSの環境構築

Windows10

ROS2の環境構築

Micro-ROS Setupをやっただけ
ROS2(Robot Operating System 2)のセットアップは終わっているものとする.
Python仮想環境を構築し,その中でmicro-ROSのセットアップを行う.pythonおよびpipはすでにインストール済みとする.上記のROS2のセットアップをしていればすでに入っているはず.
cmdでもpowershellでもどっちでもいいからとりあえずCUIを開く,管理者権限つけてね.

> pip install virtualenv
> virtualenv VIRTUAL_ENV_LOCAL_DIRECTORY
> VIRTUAL_ENV_LOCAL_DIRECTORY\Scripts\activate
> pip install -U vcstool
> pip install -U colcon-common-extensions

Docker使ってROS2の環境構築もできるらしいけど今回は上記の方法でやった.

ワークスペースを構築

2つのワークスペースを作成する.1つはクライアント用,もう一つはエージェント用.
クライアントワークスペースにはすべてのMicroノードが,エージェントワークスペースにはすべてのROS2ノードが含まれる.
現状では,クライアントとエージェントのパッケージは分離指定置く必要があるため,パッケージは分けておく.
それぞれのフォルダにsrcフォルダを作成する.とりあえずCドライブ直下それぞれ作る.あまりディレクトリ名が長いとめんどくさいのでなるべく短くしよう.

> mkdir C:\C
> mkdir C:\C\src
> mkdir C:\A
> mkdir C:\A\src

micro-ROSパッケージをインポートする.

micro-ROSを使用するには,事前定義されたROS2パッケージグループが必要. クライアント側のリポジトリリストをクライアントワークスペースに配置,リポジトリをダウンロードしてくる.

> cd C:\C
> curl --basic https://raw.githubusercontent.com/microROS/micro-ROS-doc/master/repos/client_minimum.repos > micro_ros.repos
> cd C:\C
> vcs-import src < micro_ros.repos

エージェント側も同様

> cd C:\A
> curl --basic https://raw.githubusercontent.com/microROS/micro-ROS-doc/master/repos/agent_minimum.repos > micro_ros.repos
> cd C:\A
> vcs-import src < micro_ros.repos

micro-ROSをビルドする

Windowsの場合,colconを「VS 2017 用 x64 Native Tools コマンド プロンプト」で実行することでビルドする必要があるらしい,管理者権限つけてね.

> cd C:\C
> colcon build --cmake-args -DBUILD_SHARED_LIBS=ON --merge-install
> cd C:\A
> colcon build --cmake-args -DBUILD_SHARED_LIBS=ON --merge-install

実行環境を構築する

cmdやpowershellでmicro-ROSの環境を構築するため,クライアント,エージェントを起動する前に以下のコマンドを実行する.

> C:\C\install\local_setup.bat
> C:\A\install\local_setup.bat

デモを試す

Micro ROS Demoをやっただけ

数字

文字列

ごちゃまぜ

実際のアプリケーションのデモ

ROS2ノードも実行し,micro-ROSノードとの通信を確認する.実際に使うアプリケーションにより即しているデモ

micro-ROSとROS2ノードのやり取りをするエージェントを起動

cd C:\A\install\Lib\uros_agent\
uros_agent.exe udp 8888

姿勢センサノードを起動

cd C:\C\install\Lib\rad0_altitude_sensor_c
rad0_altitude_sensor_c.exe

アクチュエータノードを起動

cd C:\C\install\Lib\rad0_actuator_c
rad0_actuator_c.exe

ディスプレイノードを起動

cd C:\C\install\Lib\rad0_display_c\
rad0_display_c.exe

ROS2ノードを起動

cd C:\A\install\Lib\rad0_control_cpp\
rad0_control_cpp.exe

ポイントとして,ROS2ノードのステータスがmicro-ROSのディスプレイノードに表示されている.