2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ROS2でPC間通信できないときはIPv6が原因かも

Last updated at Posted at 2024-09-10

ROS2でPC間通信ができなくて困ったので、その解決方法を残しておきます。

環境

OS:Ubuntu 22.04.4 LTS
ROS2:Humble

IPアドレスの設定

IPv4アドレスを固定し、IPv6は無効にします。
ここではGUIで設定する方法を紹介します。

IPv4アドレスを固定する

スクリーンショット 2024-09-11 2.43.31.png

IPv6アドレスを無効にする

スクリーンショット 2024-09-11 2.46.10.png

環境変数の設定

環境変数を確認する(設定前)

環境変数の確認
printenv | grep ROS

次のような表示を確認できます。

(表示例)
ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_LOCALHOST_ONLY=1
ROS_DISTRO=humble

環境変数を設定する

  • ROS_DOMAIN_IDはノードを共有したいPCで同じ値を指定します
  • ROS_DOMAIN_IDのデフォルト値は0です
  • ROS_DOMAIN_IDとして安全に使用できる値の範囲は0 ~ 101です
  • ROS_LOCALHOST_ONLY0にすると、ネットワークにノードが公開されます
  • ROS_LOCALHOST_ONLY1にすると、ローカルホストのみにノードが公開されます
環境変数の設定
export ROS_DOMAIN_ID=1
export ROS_LOCALHOST_ONLY=0

.bashrcに書き込むと、次回以降はターミナルを開いた際に自動で実行されます。

環境変数の設定(.bashrc)
echo "export ROS_DOMAIN_ID=1" >> ~/.bashrc
echo "export ROS_LOCALHOST_ONLY=0" >> ~/.bashrc

ROS2 Jazzy以降はROS_LOCALHOST_ONLYが非推奨になりました。
代わりにROS_AUTOMATIC_DISCOVERY_RANGEを使用します。

  • ROS_AUTOMATIC_DISCOVERY_RANGESUBNETにすると、ネットワークにノードが公開されます
  • ROS_AUTOMATIC_DISCOVERY_RANGELOCALHOSTにすると、ローカルホストのみにノードが公開されます
環境変数の設定
# export ROS_LOCALHOST_ONLY=0 に相当
export ROS_AUTOMATIC_DISCOVERY_RANGE=SUBNET
環境変数の設定(.bashrc)
# echo "export ROS_LOCALHOST_ONLY=0" >> ~/.bashrc に相当
echo "export ROS_AUTOMATIC_DISCOVERY_RANGE=SUBNET" >> ~/.bashrc

環境変数を確認する(設定後)

環境変数の確認
printenv | grep ROS

次のような表示を確認できます。

(表示例)
ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DOMAIN_ID=1
ROS_LOCALHOST_ONLY=0
ROS_DISTRO=humble

まとめ

とりあえずIPv6は無効にしておきましょう。
ROSを活用されるみなさんの助けになれば幸いです。

参考記事

更新履歴

  • 2024/09/11
    ・投稿
    ・微修正
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?