Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[jsk_tools] add rossetclient #1746

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

sktometometo
Copy link
Contributor

add rossetclient command to set ROS_IP and ROS_HOSTNAME.

Currently we have rossetip commands to set ROS_IP. But this command does not support to set ROS_HOSTNAME to hostname or FQDN like rossetip fetch1075.jsk.imi.i.u-tokyo.ac.jp.

rossetclient command has almost the same behavior but it set ROS_HOSTNAME to argument when argument is not ip address, nor network device.

@k-okada
Copy link
Member

k-okada commented Jun 29, 2022

what is your assumption? 1) the robot run with DHCP address? or 2) robot changes network configuration from local netwrork to LTE/5G or wired connection to wireless connection during operation?

  1. robot should have static IP address
  2. please consider PR2 network settings, (with why we stop using this..)
    https://www.clearpathrobotics.com/assets/downloads/pr2/pr2_manual_r321.pdf

The reason we only rely on ROS_IP is we had MANY trouble on ROS_HOSTNAME, and rely on FQDN is always cause trouble and very hard to find the problem.

@sktometometo
Copy link
Contributor Author

knorth55/jsk_robot#273 での使用のために追加しました。

現在、Fetchはネットワーク監視スクリプトの挙動によりたまにNetworkManagerの再起動が行われ、このときにIPアドレスを一時的に持たない状態になり、ROS_IPの設定ではROSノードが通信できない状態になるらしいです。(この問題の詳細については @iory @708yamaguchi @tkmtnt7000 が詳しいようです。)
これに対処するために、自動起動のROSノードはROS_HOSTNAMEをfetch1075などホスト名に設定して起動されています。これで通常時は133に接続されているロボットはfetchへ名前解決ができ、fetchのNetworkManager再起動時もFetch体内のノードは自分自身へ名前解決できるというコンセプトのようです。

一方、この方法だと、fetch上のアクセスポイントへ接続している際にfetch1075では名前解決出来ないので、ROSの通信を行うことができません。そのためにこの使い方をしているときにはFetch体内のROSノード立ち上げの際にROS_IPを10.42.0.1に設定するか、ROS_HOSTNAMEをfetch1075.localに設定したいです。

この設定を簡単に切り替えるために、一つの変数を受け取って、ROS_IPだけでなくROS_HOSTNAMEを設定したいときも適切に設定するためのコマンドとしてこのPRを用意しました。

@k-okada
Copy link
Member

k-okada commented Oct 11, 2022 via email

@sktometometo
Copy link
Contributor Author

ネットワークの設定を固定するならNetworkManager要らないのですが、73B2内で使うのと73B2外で使うので設定を変えていて、簡単に設定を切り替えるのにNetworkManagerを使用しています。

@k-okada
Copy link
Member

k-okada commented Oct 13, 2022

これは,本当に長い戦いの歴史があるんだけど,外部PCから使っている人がhostnameを使う場面で,結局DNSが引けていない,間違えている,,,,等の問題が頻出して,結局rossetipが生まれた,という経緯かと思います。
体内で,状況を管理できる自動起動ノードがhostnameを使うのはアリだとおもいますが,一般ユーザがこれをつかってトラブルになることを考えると,自動起動時にROS_HOSTNAMEをセットするのが良いと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants