在Ubuntu 22.04上配置Livox Mid-360激光雷达与ROS2的集成,首先需要理解几个关键组件的关系。Livox Mid-360是一款高性能固态激光雷达,采用非重复扫描模式,能够提供高密度点云数据。ROS2(Robot Operating System 2)是机器人开发的主流框架,而Humble则是其长期支持版本(LTS)。
提示:建议使用全新安装的Ubuntu 22.04系统进行操作,避免已有环境造成的依赖冲突。本文所有操作均基于AMD64架构。
开始前需要确保系统已安装基础开发工具:
bash复制sudo apt update && sudo apt install -y \
build-essential \
cmake \
git \
wget \
curl \
python3-colcon-common-extensions \
python3-rosdep \
python3-vcstool
如果尚未安装ROS2 Humble,可通过以下步骤完成:
bash复制# 设置软件源
sudo apt install -y software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install -y curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 安装核心组件
sudo apt update && sudo apt install -y \
ros-humble-desktop \
ros-dev-tools
安装完成后,务必初始化rosdep:
bash复制sudo rosdep init
rosdep update
Livox SDK2是与Livox雷达硬件通信的基础库,必须首先正确安装。
执行以下命令从GitHub克隆并编译SDK:
bash复制git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd Livox-SDK2/
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
编译参数说明:
-DCMAKE_BUILD_TYPE=Release:启用优化编译,提升性能-j$(nproc):使用所有CPU核心并行编译,加快速度安装完成后,检查关键文件是否就位:
bash复制ls /usr/local/lib/liblivox_lidar_sdk_*
ls /usr/local/include/livox_lidar_sdk.h
若需卸载旧版本SDK(如遇到冲突时):
bash复制sudo rm -rf /usr/local/lib/liblivox_lidar_sdk_*
sudo rm -rf /usr/local/include/livox_lidar_*
注意:SDK安装后会自动注册到系统库路径,通常不需要手动设置LD_LIBRARY_PATH。如果运行时提示找不到库,可尝试执行
sudo ldconfig刷新库缓存。
建议为Livox驱动创建独立的工作空间:
bash复制mkdir -p ~/ws_livox/src
cd ~/ws_livox/src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git
在编译前需要安装相关依赖:
bash复制cd ~/ws_livox
rosdep install --from-paths src --ignore-src -r -y
使用提供的脚本编译ROS2驱动:
bash复制cd ~/ws_livox/src/livox_ros_driver2
./build.sh humble
编译完成后,需要手动复制关键库文件:
bash复制cp /usr/local/lib/liblivox_lidar_sdk_shared.so ~/ws_livox/install/livox_ros_driver2/lib/
重要:缺少此步骤会导致运行时出现"liblivox_lidar_sdk_shared.so: cannot open shared object file"错误。这是Livox驱动安装中最常见的坑。
Mid-360的配置文件位于~/ws_livox/src/livox_ros_driver2/config/mid360_config.json。典型配置如下:
json复制{
"lidar_summary_info": {
"lidar_type": 8
},
"MID360": {
"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": {
"cmd_data_ip": "192.168.1.50",
"cmd_data_port": 56101,
"push_msg_ip": "192.168.1.50",
"push_msg_port": 56201,
"point_data_ip": "192.168.1.50",
"point_data_port": 56301,
"imu_data_ip": "192.168.1.50",
"imu_data_port": 56401,
"log_data_ip": "",
"log_data_port": 56501
}
},
"lidar_configs": [
{
"ip": "192.168.1.163",
"pcl_data_type": 1,
"pattern_mode": 0,
"extrinsic_parameter": {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
}
]
}
关键参数说明:
lidar_type: 8对应Mid-360型号host_net_info.ip: 主机IP,固定为192.168.1.50lidar_configs.ip: 雷达IP,默认为192.168.1.1XX(XX为SN后两位)首先确认有线网卡名称:
bash复制ip addr show
通常为enp0s31f6或eth0。
执行以下命令配置网络(以enp0s31f6为例):
bash复制sudo ip addr add 192.168.1.50/24 dev enp0s31f6
sudo ip link set enp0s31f6 up
sudo ip link set enp0s31f6 promisc on
如需永久生效,修改Netplan配置:
bash复制sudo nano /etc/netplan/01-network-manager-all.yaml
添加以下内容(根据实际网卡修改):
yaml复制network:
version: 2
renderer: networkd
ethernets:
enp0s31f6:
addresses: [192.168.1.50/24]
dhcp4: no
optional: true
应用配置:
bash复制sudo netplan apply
使用指定网卡ping雷达:
bash复制ping -I enp0s31f6 192.168.1.163
成功时应看到持续返回的64字节响应。
完成配置后重新编译:
bash复制cd ~/ws_livox
colcon build --symlink-install
首先source环境变量:
bash复制source ~/ws_livox/install/setup.bash
然后启动驱动和RViz:
bash复制ros2 launch livox_ros_driver2 rviz_MID360_launch.py
成功启动后应看到:
bash复制ros2 topic list
正常应包含/livox/lidar等话题。
现象:提示"Init lds lidar failed!"
解决方案:
~/ws_livox/install/livox_ros_driver2/lib/bash复制ros2 run livox_ros_driver2 livox_ros_driver2_node --ros-args --log-level debug
排查步骤:
bash复制ros2 topic echo /livox/lidar --no-arr
/livox/lidarlivox_frame优化建议:
bash复制sudo ip link set wlp2s0 down
bash复制sudo ip link set enp0s31f6 mtu 1500
如需连接多个Mid-360,在配置文件中添加多个lidar_configs条目,并确保每个雷达有独立IP:
json复制"lidar_configs": [
{
"ip": "192.168.1.163",
...
},
{
"ip": "192.168.1.164",
...
}
]
关键参数说明:
pcl_data_type:
pattern_mode:
修改extrinsic_parameter可调整雷达坐标系:
json复制"extrinsic_parameter": {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
其中x,y,z单位为米,roll,pitch,yaw为弧度。
bash复制sudo apt install -y linuxptp
sudo ptp4l -i enp0s31f6 -m -S
launch文件中可调整点云发布频率:xml复制<param name="publish_freq" value="10.0"/> <!-- 10Hz -->
bash复制ros2 bag record /livox/lidar -o mid360_data
tf2将livox_frame与其他传感器坐标系关联。我在实际部署中发现,使用高品质的屏蔽网线能显著降低点云丢包率。另外,将雷达安装在减震支架上可以有效减少运动带来的点云畸变。对于室外应用,建议调整雷达安装角度避免阳光直射接收器。