前言

Livox Mid-360S 是一款常用于移动机器人、无人机、SLAM、建图和避障的 3D 激光雷达。它通过以太网输出数据,在 ROS 2 中通常配合 Livox-SDK2livox_ros_driver2 使用。

本文记录 Ubuntu 22.04 + ROS 2 Humble 下从硬件连接、网络配置、驱动安装到点云查看的完整流程。

一、硬件与网络准备

1. 连接设备

1
2
3
Mid-360S
├── 电源:DC 9~27 V
└── 网口:连接电脑网口或交换机

注意事项:

  • 电脑和雷达必须在同一个网段。
  • 多网卡电脑要确认使用的是连接雷达的有线网卡。
  • 初次调试建议关闭防火墙,避免 UDP 数据被拦截。
1
sudo ufw disable

查看网卡名称:

1
ip addr

常见网卡名有 enp108s0eno1eth0 等。注意:ip addr 输出中接口名后面的冒号只是显示格式,命令里一般不要带这个冒号。

2. 配置电脑 IP

电脑 IP 只需要满足两点:

  • 和雷达 IP 在同一网段。
  • 不与雷达或局域网中其他设备冲突。

例如雷达在 192.168.1.0/24 网段,可以把电脑网卡设置为 192.168.1.5

1
2
sudo ip addr add 192.168.1.5/24 dev enp108s0
sudo ip link set enp108s0 up

其中 enp108s0 需要替换为自己的有线网卡名。

3. 确认雷达 IP

如果已经知道雷达 IP,直接跳到下一步。否则可以通过以下方式获取:

  1. 看设备标签、说明书或出厂配置文档。
  2. 用官方的 Livox 工具在同网段内发现设备。
  3. 使用 Mid-360 协议中的广播发现功能获取 lidar_ipcmd_port

确认网络连通:

1
ping 192.168.1.100

如果 ping 不通,优先检查电源、网线、网卡名、电脑 IP 和雷达 IP 是否正确。

二、安装 SDK 与 ROS 驱动

1. 安装 Livox-SDK2

Livox-SDK2 是 Livox 雷达的底层通信 SDK,livox_ros_driver2 编译时需要依赖它。

1
2
3
4
5
6
7
8
9
10
sudo apt update
sudo apt install -y git cmake build-essential
mkdir -p ~/code
cd ~/code
git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd Livox-SDK2
mkdir -p build && cd build
cmake ..
make -j$(nproc)
sudo make install

如果运行时报找不到动态库,将 /usr/local/lib 加入环境变量:

1
2
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc
source ~/.bashrc

2. 安装 livox_ros_driver2

创建工作空间并编译:

1
2
3
4
5
6
mkdir -p ~/livox_ws/src
cd ~/livox_ws/src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git
cd ~/livox_ws/src/livox_ros_driver2
source /opt/ros/humble/setup.bash
./build.sh humble

加载 ROS 2 工作空间:

1
2
cd ~/livox_ws
source install/setup.bash

也可以写入 ~/.bashrc

1
2
echo 'source ~/livox_ws/install/setup.bash' >> ~/.bashrc
source ~/.bashrc

三、修改 Mid-360S 配置

进入驱动配置目录:

1
2
cd ~/livox_ws/src/livox_ros_driver2/config
ls

通常会看到 MID360_config.jsonHAP_config.jsonmixed_HAP_MID360_config.json 等文件。Mid-360S 可以按 Mid-360 系列流程配置;如果驱动版本提供了 MID360S_config.jsonMID360s_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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
"MID360s": {
"lidar_net_info": {
"cmd_data_port": 56100,
"push_msg_port": 56200,
"point_data_port": 56300,
"imu_data_port": 56400,
"log_data_port": 56500
},
"host_net_info": [
{
"host_ip": "192.168.1.5",
"cmd_data_port": 56101,
"push_msg_port": 56201,
"point_data_port": 56301,
"imu_data_port": 56401,
"log_data_port": 56501
}
]
},
"lidar_configs": [
{
"ip": "192.168.1.100",
"pcl_data_type": 1,
"pattern_mode": 0,
"extrinsic_parameter": {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
}
]
}

extrinsic_parameter 的建议用法:

1
2
3
只验证通信:保持全 0
让驱动直接输出补偿后的点云:在 json 中设置外参
让 ROS 系统知道雷达和机体的坐标关系:发布 TF 或在算法中设置外参

不要在 MID360s_config.json、TF 和 SLAM 配置里重复补偿同一个安装角度。

如果修改源码目录中的配置后没有生效,可能是运行时加载了 install 目录中的旧配置。建议重新编译并使用软链接安装:

1
2
3
cd ~/livox_ws
colcon build --symlink-install
source install/setup.bash

四、启动与验证

1
2
3
cd ~/livox_ws
source /opt/ros/humble/setup.bash
source install/setup.bash

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
2
/livox/lidar
/livox/imu
1
2
3
4
ros2 topic info /livox/lidar
ros2 topic info /livox/imu
ros2 topic hz /livox/lidar
ros2 topic hz /livox/imu

如果 /livox/lidarsensor_msgs/msg/PointCloud2,通常可以直接给 RViz、SLAM、建图或避障算法使用。

4. 录制 rosbag

1
2
3
mkdir -p ~/bags
cd ~/bags
ros2 bag record /livox/lidar /livox/imu

播放 rosbag:

1
ros2 bag play <bag目录>

如需录制所有话题:

1
ros2 bag record -a

五、接入算法时需要确认什么

Mid-360S 常用于 FAST-LIO、LIO-SAM、VINS、YOPO 等感知或定位模块。接入算法时重点检查三件事。

1. 话题名称

1
2
pointCloudTopic: "/livox/lidar"
imuTopic: "/livox/imu"

2. 坐标系

驱动默认 frame 常见为:

1
livox_frame

如果算法使用 base_linkbodycamera_init 等坐标系,需要让 TF、算法配置和消息中的 frame_id 保持一致。

3. 外参位置

三类外参作用不同,不要混用:

1
2
3
4
5
6
7
8
9
10
MID360s_config.json / extrinsic_parameter
-> 影响驱动发布出来的点云坐标
-> 不会发布 ROS TF

ROS TF / static_transform_publisher / robot_state_publisher
-> 描述 ROS 坐标系之间的关系
-> RViz 和部分算法会按 TF 做坐标变换

SLAM / 控制算法中的 extrinsic_T、extrinsic_R
-> 算法内部使用的雷达到机体或雷达到 IMU 外参

如果雷达前倾 30 度、安装在机体上方 10 cm,可以选择下面两种方式之一。

方式一:在 json 中设置 extrinsic_parameter,让驱动直接输出补偿后的点云:

1
2
3
4
5
6
7
8
"extrinsic_parameter": {
"roll": 0.0,
"pitch": -30.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 100
}

方式二:保持 json 外参为 0,单独发布静态 TF:

1
2
3
4
5
ros2 run tf2_ros static_transform_publisher \
--x 0 --y 0 --z 0.10 \
--roll 0 --pitch -0.5236 --yaw 0 \
--frame-id base_link \
--child-frame-id livox_frame

然后将 RViz 的 Fixed Frame 设置为:

1
base_link

调试阶段可以先在算法中使用零外参:

1
2
3
4
extrinsic_T: [0.0, 0.0, 0.0]
extrinsic_R: [1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0]

实际运行 SLAM 或控制算法时,再根据安装位置修改。核心原则是:同一个角度或位移只补偿一次。

六、常见问题

1. ping 不通雷达

  • 检查雷达电源和网线。
  • 确认电脑 IP 和雷达 IP 在同一网段。
  • 确认命令里使用的是正确网卡名。
1
ip addr

必要时重新配置电脑网卡:

1
2
3
sudo ip addr flush dev enp108s0
sudo ip addr add 192.168.1.5/24 dev enp108s0
sudo ip link set enp108s0 up

2. 编译时报找不到 Livox-SDK2

1
2
ls /usr/local/lib | grep livox
ls /usr/local/include | grep livox

如果没有结果,重新安装 SDK:

1
2
3
4
cd ~/code/Livox-SDK2/build
cmake ..
make -j$(nproc)
sudo make install

3. 运行时报找不到动态库

1
error while loading shared libraries: liblivox_lidar_sdk_shared.so
1
2
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc
source ~/.bashrc

4. RViz 打开后没有点云

  • 只看原始点云时,Fixed Frame 设为 livox_frame
  • 通过 TF 看机体系点云时,Fixed Frame 设为 base_link
  • 确认 /livox/lidar 存在,并且有发布频率。
  • 确认 host_ip 是电脑网卡 IP,lidar_configs[].ip 是雷达 IP。
1
2
ros2 topic list
ros2 topic hz /livox/lidar

5. 改了 json 外参后点云没有变化或还是歪

先确认修改的是实际加载的配置文件:

1
grep -n "user_config_path" ~/livox_ws/src/livox_ros_driver2/launch_ROS2/*.py

然后重新编译并加载环境:

1
2
3
cd ~/livox_ws
colcon build --symlink-install
source install/setup.bash

如果通过 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
2
3
multi_topic = 1
每个雷达配置不同的 lidar_ip
必要时给每个雷达配置不同网段或不同网卡

参考资料

总结

Mid-360S 的基本使用流程可以概括为:

1
2
3
4
5
6
7
连接电源和网线
-> 配置电脑网卡 IP
-> 安装 Livox-SDK2
-> 编译 livox_ros_driver2
-> 修改 json 中的 host_ip 和 lidar_configs[].ip
-> ros2 launch 启动
-> RViz 查看点云或录制 rosbag

接入 SLAM 或机器人系统时,重点关注点云话题、IMU 话题、frame_id 和雷达到机体外参。MID360s_config.json 中的 extrinsic_parameter 会影响驱动输出点云,但它不是 ROS TF。