ROS2学习笔记18-velodyne 16雷达点云在ros2中可视化案例参考

环境:ubuntu20.04 ,ros-foxy,vscode,velodyne-16

背景:练习如何将velodyne-16雷达点云数据在ros2中读取并可视化.折腾了很久,并没有找到类似案例,所以自己总结一下.

1. 修改电脑ip

这里修改自己电脑ip,跟大多数网上关于ros1设置本地ip方法一样:
ifconfig获取自己电脑ip,修改了为手动,子掩码和网关参考图示即可.操作完成后,修改效果类似如图:

(这里的192.168.1.100是个人电脑ip,注意根据个人情况来实际填写)

2. 修改雷达ip

这里个重点关注的家伙.velodyne-16官方默认的ip是192.168.1.201,但是实际使用时,我们一般采用自定义的来搞.
网线连上电脑,网页输入雷达的ip地址192.168.1.201(注意,如果已经修改过雷达ip,那就输入雷达当前的ip),记得雷达要接上电源.这时候,我想更改雷达的ip为192.168.1.81,基本效果如图:

注意:Host处的ip填写的是自己电脑ip,也就是告诉雷达往哪个设备发送数据,记得端口data port的参数一定要记录下来,后面驱动文件里面要用到;Network处的ip也就是雷达ip,自己随意更改,不过一定要记下来,后面驱动参数填写要用到.两处ip填写完成后,记得点击依次set-save configuration.这时候,配置参数并没有生效,还得进入system界面,依次点击update-reset system

这时候,我们设置的雷达参数即可生效.

3. 修改驱动yaml参数文件

安装驱动前,先把依赖安装一下:

sudo apt install ros-foxy-diagnostic-updater
sudo apt install libpcap0.8-dev

根据我个人使用的的ros2-foxy版本,去g站(https://github.com/ros-drivers/velodyne/tree/ros2) 把源码下载下来,放到新建的工作空间,使用colcon build进行编译.这时候你认为万事大吉了,那就错了.这时候需要把驱动的参数文件配置一下,告诉驱动,我的雷达ip是啥这些.
好了,打开源文件,更改yaml文件参数,把之前记录的雷达ip以及端口port,都填写上去.
运行时,一定要记得 . install/setup.bash 一下(这里耽误我很长时间,之前ros1喜欢直接把工作空间路径写到.bashrc文件所带来的忽视,教训!!!!),再使用启动雷达驱动节点来读取雷达数据.这里要注意frame_id参数,后面在rviz2里面会用到.

4. 运行效果

终端进入当前工作空间,输入:

install/setup.bash
ros2 launch velodyne velodyne-all-nodes-VLP16-launch.py


注意看该截图上面部分,我们可以发现其,节点在监听那个ip信息,使用的端口号信息等等.
截图下半部分是使用ros2 topic echo /velodyne_points获取当前的雷达点云数据.

新开终端,输入:

ros2 run rviz2 rviz2

依次选择add-by topic-/velodyne_points/pointcloud2,这时候,我们发现rviz2上面还是啥都没有显示.回想起前面,在写驱动配置文件参数文件时候,有记录一个frame_id这么一个参数,好了,我们应该将fixed frame的map,手动改写成velodyne.这时候,显示效果类似:

如果想更改显示的样式,这就跟ros1版本的rviz一样的,这里不再赘述了.

4.小结

(1)运行指令前,一定要source一下环境变量;
(2)注意雷达网页端口正确设置方式,以及ip和端口port的参数的记录;
(3)驱动的yaml文件,雷达ip,端口port一定要对应上网页端设置的;
(4)rviz2显示时,一定要注意fix frame参数根据驱动配置文件yaml里面进行手动填写.

不积硅步,无以至千里
好记性不如烂笔头
感觉有点收获的话,麻烦大大们点赞收藏哈

原文链接:https://blog.csdn.net/qq_45701501/article/details/119275134