获取与解析 IMU 数据
1 概述
目前禾赛科技的JT系列及Pandar系列激光雷达产品中集成了IMU,并支持获取和解析IMU数据。
本文档详细介绍了激光雷达内置IMU数据的获取及多种解析方法,以及在ROS RVIZ、plotjuggler等工具中实时或离线查看IMU数据的方法。
2 获取 IMU 数据
2.1 连接激光雷达获取数据包
激光雷达的IMU数据获取需要通过激 光雷达的以太网或串口连接进行获取(具体连接方式可参考网络数据获取或串口数据获取。),大致方法和步骤如下:
-
连接激光雷达: 激光雷达上电,并通过网线或串口转USB连接到电脑;
-
获取激光雷达数据包: 通过抓包软件wireshark获取当前UDP端口数据包或通过串口监控软件获取串口数据。
2.2 IMU 数据格式
以太网数据格式
IMU数据包含在UDP包数据尾部分,以JT128为例,从第31个字节起,共22个字节(包含4个保留字节),具体数据结构如下图所示:
注:其它型号激光雷达IMU数据结构可参考对应的用户手册。
串口数据格式(仅JT16支持)
IMU数据包格式如下:共34字节,其中包头6个字节,数据头10个字节,数据主体14个字节,数据尾4个字节。
包头结构(IMU 数据包,Data Type:0x01):
数据头结构(主要为时间戳):
数据主体结构(三轴加速度及三轴角速度):
数据尾为CRC校验字段。
2.3 示例
以JT128为例,IMU数据在pcap中具体结构如下图:
3 解析 IMU 数据
3.1 ROS 在线解析 IMU 数据
禾赛科技官方提供的ROS/SDK程序中提供了IMU数据解析功能,当连接激光雷达后运行launch/py文件,即可发布激光雷达IMU数据topic。具体步骤如下:
ROS1
- 运行launch文件:
roslaunch hesai_ros_driver start.launch
- 运行以下命令查看IMU数据topic,如下图所示:
rostopic list
- 运行以下命令查看IMU实时数据,返回结果如下图所示:
rostopic echo /lidar/imu
ROS2
- 运行py文件
ros2 launch hesai_ros_driver start.py
- 运行以下命令查看IMU数据topic,返回结果与ros1一致:
ros2 topic list
- 运行以下命令查看IMU实时数据,返回结果与ros1一致:
ros2 topic echo /lidar/imu
3.2 ROS 离线解析 IMU 数据
Pcap文件保存的原始IMU数据,可通过SDK解析得到,并可直接通过回放查看rosbag中保存的IMU数据。
- 以JT128为例,在ROS1中回放rosbag查看IMU数据,方法如下图所示:
- 以JT128为例,在ROS2中回放rosbag查看IMU数据,方法如下图所示:
3.3 使用 RVIZ / Plotjuggler 实时或离线查看 IMU 数据
- ROS提供了3D可视化工具RVIZ,用户可直接通过加 载IMU显示元件,实时或离线回放查看IMU的角度指向。
- Plotjuggler是基于Qt的数据可视化工具,对于速度、位姿等时间序列的数据显示更有优势,可实时或离线回放IMU三轴加速度及三轴角速度随时间变化的曲线图。
3.3.1 RVIZ 显示
- 点击Add按钮,按topic添加IMU显示元件,如下图所示:
- Fixed Frame设置为hesai_lidar,最终显示如下图:
3.3.2 Plotjuggler 显示
- 加载录制的数据文件,选择IMU相关topic,或从实时流中监听IMU相关topic。
- 将IMU数据拖动至右侧显示图表中,可清楚显示IMU数据随时间变化的曲线图。
- 显示结果如下图:
