問題
北陽電機の3DLiDAR「YVT-35LX」をROSノードで動かそうとしたら、「connection failed」になって接続できない。
やったこと
環境:(多分ROSが動くLinux環境なら共通)
Ubuntu 16.04
ROS kinetic
まず最初にYVT-35LXに電源12VとLANケーブルを接続。ノートパソコンとLANケーブルでつなぐ。
UbuntuのWiFiマーク->接続を編集する…->Ethernet->IPv4
の項目を設定して、固定IPアドレスにした。←これがまずかった


一度WiFiマークをクリックして切断→接続で設定を反映させる。
hokuyo3dパッケージをインストール
ノードを起動させると…
sudo apt-get install ros-kinetic-hokuyo3d
rosrun hokuyo3d hokuyo3d
[ INFO] [1544185161.008533462]: Connecting to 192.168.0.10
[ERROR] [1544185161.010972849]: Connection failed
[ INFO] [1544185161.111372013]: Connection closed
[ INFO] [1544185161.111556411]: Communication stoped
接続できない…。
正しい方法
いろいろ試行錯誤して最終的には接続できるようになった。原因を検証してみた結果次のポイントがあった。
まず、Ubuntu側の設定でLANケーブル接続時の固定IPアドレスの設定は、192.168.0.10以外の192.168.0.xxにしなければならない。
ここが192.168.1.20とかだと接続できない。
(2020/08/12 追記)
当時は理解が不十分でしたが、「192.168.0.xxにしなければならない」は間違いで、固定IPとセンサIPが同一サブネットに属すということなので、ネットマスクの値によります。上記はネットマスクが24のときです。

また、hokuyo3dノードのパラメータ[~/ip]と
[~/port]はセンサ自体の設定を専用ソフトでいじったりしない限りはデフォルトで良い。
# IPアドレスを192.168.0.20に変更
rosrun hokuyo3d hokuyo3d _ip:=192.168.0.20
これは接続できない。
なお、ノードのパラメータは一度設定すると、明示的に変更されるかroscoreが一度終了するまで残る。ノードを止めただけではパラメータはリセットされないので心配な人はroscoreやroslaunchを一度すべて止めよう。
解決するまでに一日使った…
成功するとちゃんとデータ出てる
ppdr@Ubuntu:~$ rosrun hokuyo3d hokuyo3d
[ INFO] [1544185571.860202705]: Connecting to 192.168.0.10
[ INFO] [1544185571.863357229]: Connection established
[ INFO] [1544185571.863433355]: Communication started