前言
览沃科技有限公司(Livox)成立于2016年。为了革新激光雷达行业,Livox致力于提供高性能、低成本的激光雷达传感器。通过降低使用门槛和生产成本,Livox将激光雷达技术集成到更多产品和应用之中,从而为自动驾驶、智慧城市、测绘、移动机器人等行业带来创新性改变。Livox产品已销往包括美国、加拿大、中国、日本和欧盟在内的 26 个国家和地区。
面向智能移动机器人市场,Livox 推出最新一代 3D 激光雷达 Mid-360,开启混合固态激光雷达 360° 立体感知新篇章。凭借小巧体积,Mid-360 的安装布置更加灵活。同时,Mid-360 充分考虑了移动机器人对导航、避障等升维感知的需求,兼容室内外场景,赋能移动机器人进入空间智能感知新时代。 但是这款产品官网一直购买不到, 本篇博客 在 gazebo 中 可实现对该激光雷达的仿真 。
传统激光雷达普遍采用机械扫描方式,扫描路径随时间重复。而Livox 激光雷达采用了独特的扫描⽅式,扫描路径不会重复。在非重复扫描方式中,视场中被激光照射到的区域面积会随时间增大,这意味着视场覆盖率随时间推移而显著提高,可减小视场内物体被漏检的概率,有助于探测视场中的更多细节。
下图中给出了一个直观的例子。(a)图由于采用了非重复扫描方式,随着时间的积累,视场覆盖率逐渐升高。而(b)图,由于扫描每次都是重复的,视场覆盖率几乎没有提升。
gazebo中自带的laser插件是上图中b的方式,并不能代表livox的这种雷达。
livox 的仿真功能包(livox_laser_simulation)中 提供了 多种半固体的雷达仿真模型,可以在gazebo中进行该雷达的仿真与其扫描方式(非重复式扫描)点云发布。
但是经过测试发现 livox_laser_simulation 雷达仿真功能包发布的是 ros PointCloud2 点云格式数据。
而现在针对livox雷达的激光slam算法用的是 livox CustomMsg 点云格式数据,例如 Fast-Lio2 、Faster-Lio 、Lio-livox等。所以想在gazebo中仿真这些算法,需要将 ros PointCloud2格式数据转为livox CustomMsg格式 。
点云格式
PointCloud2 点云格式
PointCloud2 是ros的一种点云格式
具体官方数据 sensor_msgs/PointCloud2 Documentation
std_msgs/Header header uint32 seq time stamp string frame_iduint32 heightuint32 widthsensor_msgs/PointField[] fields uint8 INT8=1 uint8 UINT8=2 uint8 INT16=3 uint8 UINT16=4 uint8 INT32=5 uint8 UINT32=6 uint8 FLOAT32=7 uint8 FLOAT64=8 string name uint32 offset uint8 datatype uint32 countbool is_bigendianuint32 point_stepuint32 row_stepuint8[] databool is_dense
一个仿真的点云消息长这样
header: // 点云的头信息 seq: 963 // stamp: // 时间戳 secs: 1541143772 nsecs: 912011000 frame_id: "/camera_init"height: 1 // If the cloud is unordered, height is 1 如果cloud 是无序的 height 是 1width: 852578 //点云的长度fields: // sensor_msgs/PointField[] fields - name: "x" offset: 0 datatype: 7 // uint8 INT8 = 1 // uint8 UINT8 = 2 // uint8 INT16 = 3 // uint8 UINT16 = 4 // uint8 INT32 = 5 // uint8 UINT32 = 6 // uint8 FLOAT32 = 7 // uint8 FLOAT64 = 8 count: 1 - name: "y" offset: 4 datatype: 7 count: 1 - name: "z" offset: 8 datatype: 7 count: 1 - name: "intensity" offset: 16 datatype: 7 count: 1is_bigendian: Falsepoint_step: 32 // Length of a point in bytes 一个点占的比特数 row_step: 27282496 // Length of a row in bytes 一行的长度占用的比特数data: [ .......................................................... ] // Actual point data, size is (row_step*height)is_dense: True // 没有非法数据点
livox CustomMsg 点云格式
CustomMsg 是 livox雷达的 专有的点云格式,其格式如下:
点击点云格式转化:将 ros PointCloud2格式数据转为livox CustomMsg格式 - 古月居可查看全文