Velodyne VLP-16激光雷达在ROS中的使用

Velodyne VLP-16激光雷达在ROS中的使用_第1张图片
VLP-16激光雷达

主要参数:

  • 测量距离:100m
  • 垂直视场角:30度(-15度至+15度)
  • 垂直角分辨率:2度
  • 水平视场角:360度
  • 水平角分辨率:0.1度至0.4度
  • 旋转速率:5至20Hz
  • 点数:30万/s

测试环境:
Ubuntu16.04+Kinetic

参数配置

  1. 配置主机IP
    点击主机网络设置,编辑以太网有线连接;

    Velodyne VLP-16激光雷达在ROS中的使用_第2张图片
    主机IP设置

    将IP地址改为与激光雷达同一网段(192.168.1.x),子网掩码为255.255.255.0,注意不要与激光雷达IP冲突,激光雷达的IP为192.168.1.201;

  2. 配置VLP-16

    Velodyne VLP-16激光雷达在ROS中的使用_第3张图片
    VLP-16参数配置

使用方法

参考Ros Wiki:http://wiki.ros.org/velodyne

  1. 安装驱动
    sudo apt-get install ros-kinetic-velodyne
    
  2. 新建ROS工程
    mkdir -p data_velodyne/src
    cd data_velodyne/src
    git clone https://github.com/ros-drivers/velodyne.git
    rosdep install --from-paths src --ignore-src --rosdistro kinetic -y #安装工作空间src路径下所有功能包的依赖项
    cd ..
    catkin_make_isolated --install
    source ~/data_velodyne/devel_isolated/setup.bash
    
  3. 启动采集程序
    roscore
    roslaunch velodyne_pointcloud VLP16_points.launch
    
  4. 记录数据包
    rosbag record -o /data_velodyne/bags/data_velodyne /velodyne_points
    
  5. 可视化(rviz)
    rosrun rviz rviz -f velodyne
    
    在rviz中Add PointCloud2,输入topic /velodyne_points订阅话题信息;
Velodyne VLP-16激光雷达在ROS中的使用_第4张图片
3D点云可视化
最后,自己借助shell脚本封装程序,实现一键采集并录制数据,源码如下:

data_velodyne

数据格式

  • .pcap(原始数据格式)
    Velodyne VLP-16激光雷达在ROS中的使用_第5张图片
    激光雷达数据帧
    pcap文件是常用的数据包存储格式,总体结构是文件头-数据包头1-数据包1-数据包头2-数据包2...,作为velodyne专用的数据格式,解析较为麻烦,一般在程序设计中都会采用其他格式。如上图所示,每一帧的数据长度固定为1248字节,包括前42字节的数据包标识、12组数据包、4字节时间戳和最后两字节雷达型号参数;12组数据包中前两字节为数据包的开始标识(0xFFEE)、接下去两字节为当前旋转角度值和连续32x(2字节的距离值+1字节的激光反射强度值)字节的距离信息,其中32x3 字节分别为雷达两次获取探测信息,每个数据包开头所携带的旋转角度是指当前数据包前16x3字节对应的角度,而后16x3字节对应的旋转角度激光雷达没有直接给出,需要通过计算前后两次旋转角度然后求取平均值获得。
  • .txt/.xyz/.pts/.csv(ASCII)
    读写方便,但是数据读取较慢且占用大量空间,对海量点云数据的存储和处理较困难。
    X Y Z R G B
    ...
    
  • .las
    由美国摄影测量与遥感协会提出,目前通用的点云数据格式,开放的二进制数据格式,只能用存储空间相对较小,但读写需要专业软件。
  • .pcd
    Point Cloud Library定义格式,包含文件头及点云数据。
    # .PCD v.7 - Point Cloud Data file format
    VERSION .7 #指定pcd文件版本
    FIELDS x y z rgb #维度与字段
    SIZE 4 4 4 4 #各字段字节大小
    TYPE F F F F #字段类型
    COUNT 1 1 1 1 #各维度包含元素数目
    WIDTH 213 #点云数据集宽度
    HEIGHT 1 #点云数据集高度
    VIEWPOINT 0 0 0 1 0 0 0 #点云的获取视点
    POINTS 213 #点云总数
    DATA ascii #数据类型
    0.93773 0.33763 0 4.2108e+06 #点数据
    0.90805 0.35641 0 4.2108e+06
    
  • ROS中的消息格式
    • ROS消息头
      #Standard metadata for higher-level flow data types
      #sequence ID: consecutively increasing ID
      uint32 seq
      #Two-integer timestamp that is expressed as:
      # * stamp.secs: seconds (stamp_secs) since epoch
      # * stamp.nsecs: nanoseconds since stamp_secs
      # time-handling sugar is provided by the client library
      time stamp
      #Frame this data is associated with
      # 0: no frame
      # 1: global frame
      string frame_id
      
    • sensor_msgs/LaserScan
      # 测量的激光扫描角度,逆时针为正
      # 设备坐标帧的0度面向前(沿着X轴方向)
      
      Header header
      float32 angle_min        # scan的开始角度 [弧度]
      float32 angle_max        # scan的结束角度 [弧度]
      float32 angle_increment  # 测量的角度间的距离 [弧度]
      float32 time_increment   # 测量间的时间 [秒]
      float32 scan_time        # 扫描间的时间 [秒]
      float32 range_min        # 最小的测量距离 [米]
      float32 range_max        # 最大的测量距离 [米]
      float32[] ranges         # 测量的距离数据 [米] (注意: 值 < range_min 或 > range_max 应当被丢弃)
      float32[] intensities    # 强度数据 [device-specific units]
      
    • sensor_msgs/PointCloud
      #This message holds a collection of 3d points, plus optional additional information about each point.
      #Each Point32 should be interpreted as a 3d point in the frame given in the header
      Header header
      geometry_msgs/Point32[] points  #Array of 3d points
      ChannelFloat32[] channels       #Each channel should have the same number of elements as points array, and the data in each channel should correspond 1:1 with each point
      
    在结合ROS使用的时候,我们常常将数据记录到.bag文件中,若需要其他格式的点云,我们可以进行对应的转换,例如需要.pcd格式的点云文件,则运行以下命令即可:
    rosrun pcl_ros bag_to_pcd data_velodyne.bag /velodyne_points pcds
    
    这样,转换出来的pcd文件就会存到指定的目录下。
Velodyne VLP-16激光雷达在ROS中的使用_第6张图片
pcd格式点云

参考资料

  1. Velodyne VLP-16激光雷达数据格式解析
  2. velodyne:激光雷达pcap文件格式及写入、数据解析

你可能感兴趣的:(ROS机器人操作系统)