(警告)Velodyne poll() 超时。 (错误)DriverNodelet::devicePoll- 轮询设备失败。如何在Docker(Ubuntu-18.04)环境下连接VLP-16

(Warning) Velodyne poll() timeout. (ERROR) DriverNodelet::devicePoll-Failed to poll device. How to connect VLP-16 in Docker(Ubuntu-18.04) environment

我想将 Velodyne Lidar(VLP-16) 连接到 docker 环境。但是我有一个问题。

我无法在 docker 环境中获取激光雷达数据。激光雷达工作正常,因为我可以在 Ubuntu-18.04(不是 docker 环境)中成功获取激光雷达数据。

我电脑的IP是192.168.10.250,激光雷达的IP是192.168.10.201(我把激光雷达的IP改成连接我电脑的)

但是,vEthernet(WSL) 的 IP 是 172.19.208.1(我的电脑重启后可能会改变,现在是 172.19.xx.xx)。 而我的 docker 的 IP 是 172.17.0.xx (docker0 IP).

  1. 我想知道为什么在docker环境下可以ping通激光雷达,即使电脑的ip(192.168.10.xx)和docker的ip (172.17.0.xx) 不同。

  2. 虽然Lidar和Docker连上了(我可以从docker环境ping到Lidar),但我无法获取Lidar的数据。输入这些命令时出现以下问题。

  1. catkin_make(成功)

  2. 来源setup.bash(成功)

  3. roslaunch velodyne_pointcloud VLP16_points.launch(错误!)

我想我在 https://github.com/ros-drivers/velodyne/issues/232 中也有类似的问题。 但是我解决不了。

My Lidar information

谢谢。

这个问题是因为您的 docker 容器使用的子网与您的 LIDAR 的子网不同。 Velodyne 在 255.255.0.0 子网上运行,其中前两个八位字节与容器不同。解决此问题的最简单方法是更改​​这些 LIDAR 设置以匹配您的容器使用的设置。

这看起来像是将 Host 字段作为您的容器 IP:172.17.xx.xx 并确保 velodyne 在同一子网上:172.17.10.201