はじめに
環境変数設定のチュートリアルをトレースする備忘.
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
おわりに
今回環境変数設定のチュートリアルを進めた.他にも重要な環境変数がいくつかありそうだけど,今回はここまで.
コメント