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のディスプレイノードに表示されている.