ros2-rust動かしてみた


ros2-rustを動かしてみた報告と理解ができていない部分のまとめです。

(自分でもコミットできるかと思ったのですが、理解してない部分が多くて先に進めぬ。。。)

環境

  • OS Ubuntu 20.04
  • ROS FoxyFitzroy (Dashingでは何個かヘッダが見つからずビルドエラー)
  • rustc 1.46.0
  • cargo 1.46.0

準備

Rustのインストール

下記コマンドでインストールできます。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

インストール時に以下の画面出ますが1を選んでください。

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>

スクリプトがPATHを勝手に通してくれるのですが、一旦ログアウトしないと適用されないので、ログアウト&ログインしてください。

使用ツールのインストール

vcstool他必要なツールをインストールします。

sudo apt install python3-vcstool libclang-dev clang git

ソースコードのインポート

(2020/10/29修正 wgetだけじゃインポートできなくなってた)

mkdir -p ~/ros2_rust_ws/src/ros2-rust
cd ~/ros2_rust_ws/src/ros2-rust
git clone https://github.com/ros2-rust/ros2_rust.git
cd ../../
vcs import src < src/ros2-rust/ros2_rust/ros2_rust.repos

ビルド

あとは、いつものようにros2のビルドをすれば良いだけ。

source /opt/ros/foxy/setup.sh
colcon build

実行

Publisher端末

source ./install/setup.sh
ros2 run rclrs_examples rclrs_publisher

Subscriber端末

source ./install/setup.sh
ros2 run rclrs_examples rclrs_subscriber

実行結果はこんな感じ。

この辺分からん

サンプル動かしてみただけなので、まだちゃんと読んでませんが、以下の部分理解してなかったり、知識不足です。。

知ってる方いたら教えてください。。。。

  • ros2/common_interfaces, ros2/rcl_interfaces, ros2/rosidl_defaultsの3つのリポジトリの役割
    • おそらくidlの生成とかrclを自前で作るのに必要なリポジトリっぽい。あとで調べる
    • この辺の資料知ってる人居たら、コメント貰えると嬉しいです
  • rcls_examplesのCargo.tomlにrclrsについての記述が無い(なぜ?)
    • おそらくammentやcolconの都合でこうなってるんだろうけど。。ぱっと見不自然。。

参考

ros2-rustのリポジトリ https://github.com/ros2-rust/ros2_rust