ROS2 Tutorials – Configuring environment

はじめに

環境変数設定のチュートリアルをトレースする備忘.

Configuring environment — ROS 2 Documentation: Iron documentation

環境変数設定

ROS2 ではシェルの環境変数でワークスペースを分離する.ワークスペースを分離することで異なるバージョンのROS2やパッケージを各ワークスペースごとに切り替えられる.

Python を使う人であれば venv で仮想環境を作ったことがあると思うが,だいたいそれと同じイメージ.

ということで環境変数を設定する.bashrc にでも追記しておけば勝手に環境変数を設定できるようになる.

$ source ~/ros2_iron/install/local_setup.bash
$ env | grep ROS_
ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_AUTOMATIC_DISCOVERY_RANGE=SUBNET
ROS_DISTRO=iron

重要な環境変数

ROS_DOMAIN_ID

ROS2 では UDP 上で DDS(Data Distribution Service) という仕組みを使ってデータを授受する.この DDS では ROS_DOMAIN_ID を使って物理ネットワーク上に論理ネットワークを構成する.同一のドメインに属するノード感は通信可能だが,異なるドメインに属するノード間では通信できない.デフォルト値は 0.

The ROS_DOMAIN_ID — ROS 2 Documentation: Iron documentation

ROS_AUTOMATIC_DISCOVERY_RANGE

ROS2 は同じサブネット上のすべてのホスト上のノードを自動的に検出しようとする.この変数を設定することで検出範囲を制御することができる.

設定値説明
SUBNETマルチキャストで検出可能なすべてのノードを検出する.
デフォルト値.
LOCALHOST同じマシン上のノードのみを検出する.
OFF他のノードを検出しない.
SYSTEM_DEFAULT検出設定を変更しない.

特定のマシン上のノードのみを検出したい場合は ROS_STATIC_PEERS にセミコロン区切りのアドレスリストを設定する.

Improved Dynamic Discovery — ROS 2 Documentation: Iron documentation

おわりに

今回環境変数設定のチュートリアルを進めた.他にも重要な環境変数がいくつかありそうだけど,今回はここまで.

コメント

タイトルとURLをコピーしました