Mid-360S 使用教程
前言
Livox Mid-360S 是一款常用于移动机器人、无人机、SLAM、建图和避障的 3D 激光雷达。它通过以太网输出数据,在 ROS 2 中通常配合 Livox-SDK2 和 livox_ros_driver2 使用。
本文记录 Ubuntu 22.04 + ROS 2 Humble 下从硬件连接、网络配置、驱动安装到点云查看的完整流程。
一、硬件与网络准备
1. 连接设备
1 | Mid-360S |
注意事项:
- 电脑和雷达必须在同一个网段。
- 多网卡电脑要确认使用的是连接雷达的有线网卡。
- 初次调试建议关闭防火墙,避免 UDP 数据被拦截。
1 | sudo ufw disable |
查看网卡名称:
1 | ip addr |
常见网卡名有 enp108s0、eno1、eth0 等。注意:ip addr 输出中接口名后面的冒号只是显示格式,命令里一般不要带这个冒号。
2. 配置电脑 IP
电脑 IP 只需要满足两点:
- 和雷达 IP 在同一网段。
- 不与雷达或局域网中其他设备冲突。
例如雷达在 192.168.1.0/24 网段,可以把电脑网卡设置为 192.168.1.5:
1 | sudo ip addr add 192.168.1.5/24 dev enp108s0 |
其中 enp108s0 需要替换为自己的有线网卡名。
3. 确认雷达 IP
如果已经知道雷达 IP,直接跳到下一步。否则可以通过以下方式获取:
- 看设备标签、说明书或出厂配置文档。
- 用官方的 Livox 工具在同网段内发现设备。
- 使用 Mid-360 协议中的广播发现功能获取
lidar_ip和cmd_port。
确认网络连通:
1 | ping 192.168.1.100 |
如果 ping 不通,优先检查电源、网线、网卡名、电脑 IP 和雷达 IP 是否正确。
二、安装 SDK 与 ROS 驱动
1. 安装 Livox-SDK2
Livox-SDK2 是 Livox 雷达的底层通信 SDK,livox_ros_driver2 编译时需要依赖它。
1 | sudo apt update |
如果运行时报找不到动态库,将 /usr/local/lib 加入环境变量:
1 | echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc |
2. 安装 livox_ros_driver2
创建工作空间并编译:
1 | mkdir -p ~/livox_ws/src |
加载 ROS 2 工作空间:
1 | cd ~/livox_ws |
也可以写入 ~/.bashrc:
1 | echo 'source ~/livox_ws/install/setup.bash' >> ~/.bashrc |
三、修改 Mid-360S 配置
进入驱动配置目录:
1 | cd ~/livox_ws/src/livox_ros_driver2/config |
通常会看到 MID360_config.json、HAP_config.json、mixed_HAP_MID360_config.json 等文件。Mid-360S 可以按 Mid-360 系列流程配置;如果驱动版本提供了 MID360S_config.json 或 MID360s_config.json,优先使用对应文件。
1 | gedit MID360s_config.json |
重点检查:
| 字段 | 含义 |
|---|---|
host_ip |
电脑有线网卡 IP,例如 192.168.1.5 |
lidar_configs[].ip |
雷达 IP,例如 192.168.1.100 |
pcl_data_type |
点云数据类型,常用 1 |
pattern_mode |
扫描模式,常用 0,表示非重复扫描 |
extrinsic_parameter |
Livox 驱动层外参,不等同于 ROS TF |
示例配置片段:
1 | { |
extrinsic_parameter 的建议用法:
1 | 只验证通信:保持全 0 |
不要在 MID360s_config.json、TF 和 SLAM 配置里重复补偿同一个安装角度。
如果修改源码目录中的配置后没有生效,可能是运行时加载了 install 目录中的旧配置。建议重新编译并使用软链接安装:
1 | cd ~/livox_ws |
四、启动与验证
1 | cd ~/livox_ws |
1. 启动 RViz 查看点云
1 | ros2 launch livox_ros_driver2 rviz_MID360_launch.py |
如果有 Mid-360S 专用 launch 文件,则使用对应文件名:
1 | ros2 launch livox_ros_driver2 rviz_MID360s_launch.py |
只查看雷达原始坐标系下的点云时,RViz 的 Fixed Frame 通常设置为:
1 | livox_frame |
2. 只启动数据发布节点
如果不需要打开 RViz,可以启动消息发布 launch:
1 | ros2 launch livox_ros_driver2 msg_MID360s_launch.py |
具体文件名以 launch_ROS2 目录中的实际内容为准。
3. 查看 ROS 2 话题
1 | ros2 topic list |
常见话题:
1 | /livox/lidar |
1 | ros2 topic info /livox/lidar |
如果 /livox/lidar 是 sensor_msgs/msg/PointCloud2,通常可以直接给 RViz、SLAM、建图或避障算法使用。
4. 录制 rosbag
1 | mkdir -p ~/bags |
播放 rosbag:
1 | ros2 bag play <bag目录> |
如需录制所有话题:
1 | ros2 bag record -a |
五、接入算法时需要确认什么
Mid-360S 常用于 FAST-LIO、LIO-SAM、VINS、YOPO 等感知或定位模块。接入算法时重点检查三件事。
1. 话题名称
1 | pointCloudTopic: "/livox/lidar" |
2. 坐标系
驱动默认 frame 常见为:
1 | livox_frame |
如果算法使用 base_link、body、camera_init 等坐标系,需要让 TF、算法配置和消息中的 frame_id 保持一致。
3. 外参位置
三类外参作用不同,不要混用:
1 | MID360s_config.json / extrinsic_parameter |
如果雷达前倾 30 度、安装在机体上方 10 cm,可以选择下面两种方式之一。
方式一:在 json 中设置 extrinsic_parameter,让驱动直接输出补偿后的点云:
1 | "extrinsic_parameter": { |
方式二:保持 json 外参为 0,单独发布静态 TF:
1 | ros2 run tf2_ros static_transform_publisher \ |
然后将 RViz 的 Fixed Frame 设置为:
1 | base_link |
调试阶段可以先在算法中使用零外参:
1 | extrinsic_T: [0.0, 0.0, 0.0] |
实际运行 SLAM 或控制算法时,再根据安装位置修改。核心原则是:同一个角度或位移只补偿一次。
六、常见问题
1. ping 不通雷达
- 检查雷达电源和网线。
- 确认电脑 IP 和雷达 IP 在同一网段。
- 确认命令里使用的是正确网卡名。
1 | ip addr |
必要时重新配置电脑网卡:
1 | sudo ip addr flush dev enp108s0 |
2. 编译时报找不到 Livox-SDK2
1 | ls /usr/local/lib | grep livox |
如果没有结果,重新安装 SDK:
1 | cd ~/code/Livox-SDK2/build |
3. 运行时报找不到动态库
1 | error while loading shared libraries: liblivox_lidar_sdk_shared.so |
1 | echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc |
4. RViz 打开后没有点云
- 只看原始点云时,
Fixed Frame设为livox_frame。 - 通过 TF 看机体系点云时,
Fixed Frame设为base_link。 - 确认
/livox/lidar存在,并且有发布频率。 - 确认
host_ip是电脑网卡 IP,lidar_configs[].ip是雷达 IP。
1 | ros2 topic list |
5. 改了 json 外参后点云没有变化或还是歪
先确认修改的是实际加载的配置文件:
1 | grep -n "user_config_path" ~/livox_ws/src/livox_ros_driver2/launch_ROS2/*.py |
然后重新编译并加载环境:
1 | cd ~/livox_ws |
如果通过 TF 查看点云,检查 TF 是否存在:
1 | ros2 run tf2_ros tf2_echo base_link livox_frame |
6. 点云很卡
打开对应 launch 文件,适当降低 publish_freq:
1 | {"publish_freq": 5.0} |
7. 多雷达时无法区分话题
可以启用 multi_topic,让不同雷达发布到独立话题。配置思路:
1 | multi_topic = 1 |
参考资料
- Livox-SDK2:https://github.com/Livox-SDK/Livox-SDK2
- livox_ros_driver2:https://github.com/Livox-SDK/livox_ros_driver2
- Mid-360(S) 通信协议:https://livox-wiki-en.readthedocs.io/en/latest/
总结
Mid-360S 的基本使用流程可以概括为:
1 | 连接电源和网线 |
接入 SLAM 或机器人系统时,重点关注点云话题、IMU 话题、frame_id 和雷达到机体外参。MID360s_config.json 中的 extrinsic_parameter 会影响驱动输出点云,但它不是 ROS TF。



