Ubuntu16.04运行velodyne雷达驱动
一、实验环境:
系统版本:Ubuntu16.04 ros-kinetic
激光雷达:Velodyne-16
二、实验操作:
- 安装ROS驱动:
sudo apt-get install ros-kinetic-velodyne
- 创建ROS工程:
mkdir -p velodyne_ws/src
cd velodyne_ws/src
git clone https://github.com/ros-drivers/velodyne.git
cd ..
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y
catkin_make
source devel/setup.bash
!!!注意:编译过程中可能出现以下错误:/usr/include/yaml-cpp/node/detail/iterator.h:48:47: error: ‘next’ is not a member of ‘boost
实际上如果你安装了boost库的话,是有next的。在/usr/include/boost 下面,我的电脑上有next_prior.hpp的文件,这个实际上就是实现了boost::next 的功能,解决办法很简单: sudo vim /usr/include/yaml-cpp/node/detail/iterator.h
,引入next_prior.hpp头文件就行了:#include <boost/next_prior.hpp>
,也可参考:https://blog.csdn.net/xinwenfei/article/details/81232658
(这是我遇到的问题,所以说一下自己的解决办法,你们如果没遇到可以忽略)
- 把Velodyne XML文件转成ROS节点的YAML文件,安装U盘里有,转换后生成VLP-16.yaml文件:
rosrun velodyne_pointcloud gen_calibration.py ~/filepath/VLP-16.xml
- 连接设备:
连接激光雷达,并在网络中添加雷达ip,具体操作为:将有线网络里面的ipv4改为手动, IP地址192.168.1.200(和雷达在同一网段即可),子网掩码255.255.255.0,连接此网络,打开浏览器输入:192.168.1.201即可看到激光雷达的配置文件:
- 加载:
roslaunch velodyne_pointcloud VLP16_points.launch calibration:=~/filepath/VLP-16.yaml
!!!注意:运行launch文件前,需先修改接收数据的端口号。由上图配置文件可知端口为2369,或通过WireShark软件查看也可以:
launch文件修改结果如下图所示:
(若没有校准文件可以省略,直接运行:roslaunch velodyne_pointcloud VLP16_points.launch
加载默认文件)
- 显示点云:
新开一个终端,输入:
rosrun rviz rviz -f velodyne
或:
rosrun rviz rviz
#之后在手动设置Fixed Frame= velodyne
点击左下角Add,选择PointCloud2,Topic一栏填写/velodyne_points,出现点云图:
- 保存数据:
rosbag record -o saved_filename /velodyne_points
只保存/velodyne_points这个topic的数据(可以用rostopic list -v开看当前可用的topic),保存在当前目录的saved_filename.bag中。