SLAM之激光雷达Velodyne vlp-16使用
简介:
VLP-16激光雷达是Velodyne公司出品的最小型的3维激光雷达,保留了电机转速可调节的功能。实时上传周围距离和反射率的测量值。VLP-16具有100米的远量程测量距离。精巧的外观设计使得安装非常方便。重量轻,只有830g,非常适合安装在小型无人机和小型移动机器人上。
每秒高达30万个点数据输出。±15°的垂直视场,360°水平视场扫描。IP67的防护等级。支持两次回波接收,可以测量第一次回波和最后一次回波的距离值和反射强度值。
技术参数:
激光线数:16线
测量范围:高达100m
测量精度:±3cm
支持两次回波
垂直测量角度范围:30°(﹢15°到﹣15°)
垂直方向角度分辨率:2°
水平方向测量角度范围:360°
水平方向角度分辨率:0.1°到0.4°
测量频率:5到20Hz
可以通过网络浏览器监测和改变电机的转速
激光安全等级:1级(人眼安全)
激光波长:905nm
传感器功率:8W(典型值)
工作电压:9-32V
重量:830g
外形尺寸:103mmX72mm
振动测试:500m/sec² 振幅,持续时间11msec
振动:5 Hz to 2000 Hz, 3G rms
防护等级:IP67
工作温度:﹣10℃到﹢60℃
储存温度:-40℃到﹢105℃
输出:
每秒高达30万个测量点输出
100M快速以太网连接
数据包包含:距离值、物体反射率、旋转角度、同步时间
支持外接GPS
实验机器是ubuntu 18.04 x64, ROS版本Melodic,目前ROS支持的Velodyne型号是:HDL-64E,HDL-32E,VLP-16。官方tutorial是以32E为例,但我们手头是VLP-16,下面以VLP-16为例介绍驱动过程:
- 安装驱动:
sudo apt-get install ros-melodic-velodyne
- 连接激光雷达并配置网络:
进入设置-有线连接-新建连接(命名velodyne)-设置IP4(IP4方式设置为手动,地址为192.168.1.77,子网掩码设置为25.255.255.0,网关设置为192.168.1.1)-然后打开浏览器输入192.168.1.201查看velodyne激光雷达的基本配置
这边有博主说每次接入雷达后要输入下面两条指令:(但是我没有好像也是可以的)
sudo ifconfig enp2s0 192.168.1.123
sudo route add 192.168.1.201 enp2s0
3.创建新的ROS工程
mkdir -p catkin_velodyne/src
cd catkin_velodyne/src
git clone https://github.com/ros-drivers/velodyne.git
cd …
rosdep install --from-paths src --ignore-src --rosdistro melodic -y
catkin_make
source devel/setup.bash
- 把Velodyne XML文件转成ROS节点的YAML文件,VLP-16.xml据说赠送的U盘里面有,反正我是没有找到, 就从网上下载了一 个。记得把下面的地址更改为自己的VLP-16.xml文件的地址。 rosrun velodyne_pointcloud gen_calibration.py ~/VLP-16.xml (更改为自己保存的目录)
5.加载roslaunch velodyne_pointcloud VLP16_points.launch calibration:=~/VLP-16.yaml (更改为自己保存的目录)
注意:4、5步没有找到VLP-16.xml文件,不执行这两步,后面依然可以显示结果。
6.实时显示点云图:
(1)在terminal中输入 roscore
(2)打开另一个 terminal,分别输入
roslaunch velodyne_pointcloud VLP16_points.launch
rosrun rviz rviz -f velodyne
打开rviz后 左下角Add,选择PointCloud2,Topic一栏填写/velodyne_points
7.数据保存(格式为.bag数据)
rosbag record -O out /velodyne_points
只保存/velodyne_points这个topic的数据(可以用rostopic list -v开看当前可用的topic),保存在当前目录的out.bag 可尝试按ctrl+c退出,不是ctrl+z 。
8.bag转.pcd
rosrun pcl_ros bag_to_pcd <input_file.bag> <output_directory>
创建文件夹,将文件保存在文件夹内
example:
rosrun pcl_ros bag_to_pcd data.bag /velodyne_points ./pcd
- pcl_viewer显示.pcd点云