保姆级教程:用Livox Viewer搞定多台Mid-70雷达的外参标定与ROS驱动配置
多Livox Mid-70雷达系统集成与ROS驱动配置全流程指南
当我们需要为自动驾驶或机器人系统构建更全面的环境感知能力时,单台Livox Mid-70雷达的视野往往无法满足需求。这款雷达虽然盲区小、性价比高,但水平视场角有限,通过多雷达组合可以显著扩大感知范围。本文将详细介绍如何从零开始配置多台Mid-70雷达系统,包括硬件连接、软件设置、外参标定和ROS驱动配置等完整流程。
1. 系统准备与环境搭建
在开始配置前,我们需要确保所有硬件和软件环境准备就绪。Livox Mid-70雷达通过网线与工控机连接,每台雷达需要独立的IP地址。建议使用千兆交换机来保证数据传输的稳定性,特别是当同时使用多台雷达时。
首先从Livox官网下载最新版的Livox Viewer软件。虽然官方可能标注支持Ubuntu 16.04,但在18.04和20.04上通常也能正常运行。下载完成后解压文件,根据README中的说明运行安装脚本:
tar -xzf Livox_Viewer_0.10.0_Ubuntu16.04.tar.gz cd Livox_Viewer_0.10.0_Ubuntu16.04 chmod +x livox_viewer.sh ./livox_viewer.sh安装过程中可能会提示缺少依赖库,常见的有:
- libicu55
- libxcb-xinerama0
- libgl1-mesa-glx
可以使用apt命令安装这些依赖:
sudo apt-get update sudo apt-get install libicu55 libxcb-xinerama0 libgl1-mesa-glx2. 雷达网络配置与连接
每台Livox雷达出厂时都有默认IP地址,当使用多台设备时,需要为每台设备分配不同的静态IP。Livox雷达的IP配置可以通过两种方式实现:
使用Livox Viewer图形界面:
- 打开Livox Viewer
- 连接雷达后,在设备列表中选择目标设备
- 右键点击选择"修改IP"
- 输入新的IP地址、子网掩码和网关
通过命令行工具: Livox提供了命令行工具livox_lidar_config可以进行批量配置:
./livox_lidar_config -i 192.168.1.100 -m 255.255.255.0 -g 192.168.1.1 -s 192.168.1.50参数说明:
-i: 新IP地址-m: 子网掩码-g: 网关地址-s: 雷达当前IP地址(用于识别特定设备)
建议的IP分配方案:
| 雷达编号 | IP地址 | 用途说明 |
|---|---|---|
| 雷达1 | 192.168.1.101 | 前向主雷达 |
| 雷达2 | 192.168.1.102 | 左侧补盲雷达 |
| 雷达3 | 192.168.1.103 | 右侧补盲雷达 |
| 工控机 | 192.168.1.100 | 数据处理主机 |
注意:所有设备必须位于同一子网内,且IP地址不能冲突。配置完成后,建议使用ping命令测试连通性。
3. 多雷达外参标定
外参标定是确定各雷达之间相对位置和姿态关系的过程,对于后续的点云融合至关重要。Livox Viewer提供了直观的图形化标定工具,以下是详细步骤:
- 启动Livox Viewer并连接所有雷达
- 在左上角设备列表中勾选需要标定的雷达
- 点击工具栏中的"标定"按钮(三角形图标)
- 在右侧参数面板中输入标定参数:
- 平移参数:以米为单位,表示雷达间的相对位置
- 旋转参数:以度为单位,表示雷达间的相对姿态
假设我们有两台雷达,雷达2相对于雷达1的位置是X方向0.5米,Y方向0.3米,Z方向-0.1米,旋转角度为绕Z轴旋转30度,则参数填写如下:
| 参数 | 值 | 说明 |
|---|---|---|
| X平移 | 0.5 | 水平方向位移(米) |
| Y平移 | 0.3 | 侧向位移(米) |
| Z平移 | -0.1 | 高度方向位移(米) |
| X旋转 | 0 | 横滚角(度) |
| Y旋转 | 0 | 俯仰角(度) |
| Z旋转 | 30 | 偏航角(度) |
- 点击"应用"按钮保存标定结果
- 可以在3D视图中观察标定效果,检查点云是否对齐正确
标定完成后,外参矩阵会自动保存到雷达的配置文件中。对于更复杂的多雷达系统(如4-6台雷达),建议采用分步标定策略:
- 先标定雷达1和雷达2
- 然后以雷达1为基准,标定雷达3
- 依此类推,确保整个系统有统一的参考坐标系
4. ROS驱动配置与参数详解
Livox提供了ROS驱动包livox_ros_driver,支持多雷达同时工作。我们需要重点配置两个文件:launch文件和JSON配置文件。
4.1 launch文件配置
典型的launch文件包含以下关键参数:
<launch> <arg name="multi_topic" default="1"/> <arg name="msg_frame_id" default="livox_frame"/> <node name="livox_lidar_publisher" pkg="livox_ros_driver" type="livox_ros_driver_node" output="screen"> <param name="multi_topic" value="$(arg multi_topic)"/> <param name="frame_id" value="$(arg msg_frame_id)"/> <param name="user_config_path" value="$(find livox_ros_driver)/config/livox_lidar_config.json"/> <!-- 重映射topic示例 --> <remap from="/livox/lidar_3GGDJ3C00100011" to="/livox/lidar_front"/> <remap from="/livox/lidar_3GGDJ3C00100411" to="/livox/lidar_back"/> </node> </launch>关键参数说明:
multi_topic:设置为1时,每个雷达发布独立topic;0则合并为一个topicframe_id:点云数据的参考坐标系名称user_config_path:指向雷达配置文件路径
4.2 JSON配置文件详解
JSON配置文件包含了每个雷达的具体参数:
{ "lidar_config": [ { "broadcast_code": "3GGDJ3C00100011", "enable_connect": true, "return_mode": 0, "coordinate": 0, "extrinsic_parameter_source": 1, "enable_high_sensitivity": 0 }, { "broadcast_code": "3GGDJ3C00100411", "enable_connect": true, "return_mode": 0, "coordinate": 0, "extrinsic_parameter_source": 1, "enable_high_sensitivity": 0 } ], "timesync_config": { "enable_timesync": false, "device_name": "/dev/pts/2", "comm_device_type": 0, "baudrate_index": 7, "parity_index": 0 } }重要字段解释:
broadcast_code:雷达的唯一标识码extrinsic_parameter_source:- 0:不使用外参
- 1:使用Livox Viewer标定的外参
- 2:使用自定义外参矩阵
enable_high_sensitivity:高灵敏度模式,适用于低反射率物体
5. 时间同步与TF树配置
多雷达系统的时间同步至关重要,时间不同步会导致点云融合时出现错位。Livox支持PTP(精确时间协议)同步,配置步骤如下:
- 确保工控机和所有雷达连接到支持PTP的交换机
- 在工控机上安装ptpd服务:
sudo apt-get install ptpd- 配置ptpd以主时钟模式运行:
sudo ptpd -M -i eth0 -C- 在JSON配置文件中启用时间同步:
"timesync_config": { "enable_timesync": true, "device_name": "/dev/pts/2", "comm_device_type": 1, "baudrate_index": 7, "parity_index": 0 }对于TF树的配置,需要在launch文件中添加静态变换发布器:
<node pkg="tf" type="static_transform_publisher" name="base_to_livox" args="0 0 0 0 0 0 /base_link /livox_frame 100"/>这个变换将雷达坐标系连接到机器人基础坐标系。如果标定时使用了其他参考系,需要相应调整这些参数。
6. 验证与调试
完成所有配置后,按以下步骤验证系统是否正常工作:
- 启动ROS驱动:
roslaunch livox_ros_driver livox_lidar.launch- 检查topic列表,确认每个雷达的点云数据正常发布:
rostopic list- 使用rviz可视化点云:
rosrun rviz rviz -d $(rospack find livox_ros_driver)/config/display_lidar_points.rviz- 检查TF树是否正确:
rosrun tf view_frames evince frames.pdf常见问题及解决方案:
- 点云不显示:检查雷达IP配置、网络连接和ROS驱动参数
- 点云错位:重新检查外参标定结果,确认TF变换正确
- 时间同步警告:确保PTP服务正常运行,检查时间同步配置
在实际项目中,我发现将multi_topic设置为1(每个雷达独立topic)更便于调试,因为可以单独检查每个雷达的数据。而在最终应用中,根据处理需求可以选择合并topic以减少数据传输开销。
