1. 背景与核心概念
在机器人、自动驾驶和无人机领域,实时、高精度的定位与建图(SLAM)是实现自主导航的基石。然而,将前沿的SLAM算法从论文和仿真环境迁移到真实的物理机器人上,往往会遇到传感器驱动、数据同步、环境适配等一系列棘手问题。近期,我们在华南理工大学五山校区3号楼前,成功将 LIO-SAM 算法部署到搭载 Livox Mid-360 激光雷达的实车平台,并同步在 Gazebo 仿真环境中完成了全流程的搭建与测试。本文将完整复盘这一过程,为你提供一份从零到一、覆盖仿真与实机部署的详尽指南。
LIO-SAM 是一种紧耦合的激光惯性里程计与建图框架。它巧妙地将激光雷达点云与IMU(惯性测量单元)数据进行融合,通过因子图优化,实现了在复杂环境中鲁棒且高精度的位姿估计与地图构建。相较于纯激光或纯视觉方案,其引入的IMU数据能有效应对剧烈运动或特征缺失场景下的跟踪丢失问题。
Livox Mid-360 是一款非重复扫描模式的固态激光雷达。其独特的扫描图案带来了更高的点云密度和更远的有效测距,但同时也意味着其点云数据格式与传统的旋转式雷达(如Velodyne)不同,需要特定的驱动和预处理才能被ROS和SLAM算法使用。
Gazebo 是机器人领域广泛使用的物理仿真环境。在实机部署前,于Gazebo中搭建仿真世界、模拟传感器数据并进行算法测试,是验证系统可行性和排查潜在问题的低成本、高效率手段。
本文将解决的核心问题包括:
- Mid-360驱动配置与点云话题发布 :如何让ROS系统正确识别并处理Mid-360的数据。
- LIO-SAM算法适配与参数调优 :针对Mid-360的点云特性,调整LIO-SAM的参数以获得最佳性能。
- 仿真环境搭建 :在Gazebo中构建测试场景,模拟Mid-360雷达和IMU,为算法提供虚拟测试数据。
- 实机部署全流程 :从硬件连接、系统启动到实地跑图的数据记录与分析。
无论你是正在研究SLAM算法的学生,还是从事机器人开发的工程师,本文提供的代码、配置和避坑经验都能帮助你快速搭建起一套可运行、可验证的LIO-SAM系统。
2. 环境准备与版本说明
一个稳定且版本匹配的软件环境是成功的第一步。以下是我们实测可用的环境配置,请务必注意版本兼容性。
操作系统 :Ubuntu 20.04 LTS 或 Ubuntu 22.04 LTS。ROS Noetic(对应20.04)和ROS2 Humble(对应22.04)生态均支持,但本文主要基于 ROS Noetic (Ubuntu 20.04) 进行,因其在LIO-SAM相关生态中更为成熟稳定。部分步骤在ROS2下可能有所不同。
ROS :ROS Noetic Desktop-Full 版本。建议通过官方脚本安装。
关键依赖与工具 :
- CMake : >= 3.10.2
- PCL (Point Cloud Library) : >= 1.10 (通常随ROS桌面版安装)
- GTSAM (Georgia Tech Smoothing and Mapping) : >= 4.0.0。这是LIO-SAM依赖的后端优化库。
- Livox SDK & ROS Driver : 用于驱动Mid-360雷达。
- Gazebo : Gazebo 11 (与ROS Noetic配套)。用于仿真测试。
硬件准备 (实机部署) :
- Livox Mid-360 激光雷达
-
兼容的IMU模块(如机器人自带IMU或独立IMU,需提供
/imu/data话题) - 计算平台(如NVIDIA Jetson AGX Orin, Intel NUC等)
- 机器人移动平台(小车、无人机等)
项目结构预览
:
在开始前,建议在你的ROS工作空间(例如
~/catkin_ws
)中规划如下包结构:
~/catkin_ws/src/
├── livox_ros_driver/ # Livox官方ROS驱动
├── lio_sam/ # LIO-SAM算法主体
└── (可选) your_simulation_pkg/ # 自定义的Gazebo仿真包
3. 核心组件安装与配置
3.1 安装Livox Mid-360 ROS驱动
Mid-360需要通过Livox官方的ROS驱动包来发布点云数据。
-
创建工作空间与下载驱动 :
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/Livox-SDK/livox_ros_driver.git -
编译驱动 :
cd ~/catkin_ws catkin_make编译成功后,记得
source一下环境:source ~/catkin_ws/devel/setup.bash。可以将此命令加入~/.bashrc。 -
配置Mid-360参数 : Livox驱动通过一个JSON配置文件来定义雷达参数和网络设置。关键步骤是配置雷达的IP地址。
-
首先,将Mid-360通过网线连接到你的主机,并为其配置一个静态IP(例如
192.168.1.50)。你的主机网卡IP需设置为同一网段(如192.168.1.100)。 -
修改驱动包中的配置文件。通常示例配置文件在
livox_ros_driver/config/目录下。复制一份MID360_config.json进行修改。
// ~/catkin_ws/src/livox_ros_driver/config/MID360_config.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.100", // 主机IP "cmd_data_port": 56101, "push_msg_ip": "192.168.1.100", "push_msg_port": 56201, "point_data_ip": "192.168.1.100", "point_data_port": 56301, "imu_data_ip": "192.168.1.100", "imu_data_port": 56401, "log_data_ip": "192.168.1.100", "log_data_port": 56501 } }, "lidar_configs" : [ { "ip" : "192.168.1.50", // Mid-360雷达的IP "pcl_data_type" : 1, "pattern_mode" : 0, "extrinsic_parameter" : { "roll": 0.0, "pitch": 0.0, "yaw": 0.0, "x": 0.0, "y": 0.0, "z": 0.0 } } ] }-
关键参数
:
lidar_configs下的ip必须设置为你的Mid-360的实际IP。host_net_info中的各个IP需设置为主机IP。
-
首先,将Mid-360通过网线连接到你的主机,并为其配置一个静态IP(例如
3.2 安装与编译LIO-SAM
LIO-SAM是本文的核心算法。
-
下载LIO-SAM :
cd ~/catkin_ws/src git clone https://github.com/TixiaoShan/LIO-SAM.git -
安装依赖GTSAM :
# 方法一:通过apt安装(推荐,简单) sudo apt-get install -y libgtsam-dev libgtsam-unstable-dev # 方法二:从源码安装(如需特定版本) # git clone https://github.com/borglab/gtsam.git # cd gtsam && mkdir build && cd build # cmake .. && make -j$(nproc) # sudo make install -
编译LIO-SAM :
cd ~/catkin_ws catkin_make -j$(nproc)编译过程可能会遇到一些依赖问题,常见的是PCL或OpenCV版本冲突。请根据终端报错信息,使用
apt安装缺失的包,例如sudo apt install ros-noetic-pcl-ros ros-noetic-ndt-omp等。
3.3 配置LIO-SAM参数以适配Mid-360
LIO-SAM的原始配置是针对Velodyne雷达的,直接用于Mid-360会导致效果不佳甚至失败。需要修改其参数配置文件。
主要修改文件:
~/catkin_ws/src/LIO-SAM/config/params.yaml
。
# 部分关键参数修改示例
common:
# Mid-360的点云话题名,由livox_ros_driver发布
pointCloudTopic: "/livox/lidar"
imuTopic: "/imu/data" # 你的IMU话题,根据实际情况修改
# 由于Mid-360是非重复扫描,点云时间戳间隔不均匀,此参数可能需要调整
timeScanPeriod: 0.1 # 点云消息周期,单位秒
featureExtraction:
# Mid-360点云密度高,可以适当增加用于特征提取的点数
numberOfScans: 1 # 每次处理1帧(Livox驱动通常一帧包含多scan)
# 边缘和平面特征提取的阈值可能需要根据点云质量调整
edgeThreshold: 1.0
surfThreshold: 0.1
mapOptimization:
# 因子图优化频率
updateMapFrequency: 3.0 # Hz
# Mid-360的FOV很广,但建图范围可根据需要设置
maxLocalMapFrameNum: 80 # 局部地图帧数
# IMU参数至关重要!必须根据你实际使用的IMU型号进行标定和填写。
# 错误的IMU参数会导致轨迹严重漂移。
imu:
# 以下为示例参数,必须替换为你的IMU标定结果!
acc_n: 0.01 # 加速度计噪声密度
gyr_n: 0.001 # 陀螺仪噪声密度
acc_w: 0.0002 # 加速度计随机游走
gyr_w: 4.0e-06 # 陀螺仪随机游走
为什么需要调整?
- 点云话题 :必须与驱动发布的话题一致。
-
timeScanPeriod:Velodyne雷达是机械旋转,周期固定。Mid-360是固态扫描,数据推送模式不同,此参数影响算法对运动畸变的处理。 -
IMU参数
:这是紧耦合算法的核心。
acc_n,gyr_n等噪声参数必须通过IMU标定工具(如imu_utils)实际测量得到,使用默认值或随意填写几乎必然导致建图失败。
4. 实机部署与运行(华南理工大学五山校区)
4.1 硬件连接与启动
-
连接设备
:将Livox Mid-360通过网线连接到工控机,IMU通过USB或串口连接。确保网络IP配置正确(如前述
192.168.1.50/100)。 -
启动驱动
:首先启动Livox ROS驱动,发布点云数据。
使用source ~/catkin_ws/devel/setup.bash roslaunch livox_ros_driver livox_lidar.launch config_path:=/home/your_user/catkin_ws/src/livox_ros_driver/config/MID360_config.jsonrostopic list命令,应该能看到/livox/lidar话题。 -
启动IMU驱动
:根据你的IMU型号启动对应的ROS驱动节点,确保发布
/imu/data话题(类型为sensor_msgs/Imu)。 -
启动LIO-SAM
:在参数文件
params.yaml正确配置后,启动LIO-SAM。roslaunch lio_sam run.launch -
启动可视化
:使用RVIZ查看实时建图效果。
在RVIZ中,添加roslaunch lio_sam rviz.launchPointCloud2类型,话题选择/lio_sam/mapping/cloud_registered,即可看到实时构建的全局地图。
4.2 数据录制与回放分析
在实机测试时,建议先录制数据包(rosbag),便于反复分析和调试参数。
-
录制数据包 :
rosbag record -O campus_test.bag /livox/lidar /imu/data此命令将点云和IMU数据录制到
campus_test.bag文件中。操控机器人在3号楼前区域(如广场、道路)进行“8”字形或闭环路径运动,以充分激发传感器数据。 -
回放与离线测试 : 关闭所有节点,使用录制的bag包进行回放,可以反复调整LIO-SAM参数而不需重复实地跑车。
# 终端1:启动LIO-SAM roslaunch lio_sam run.launch # 终端2:回放数据包,--clock参数发布模拟时间很重要 rosbag play --clock campus_test.bag # 终端3:启动RVIZ roslaunch lio_sam rviz.launch
4.3 实机运行结果与调优
在华南理工大学五山校区3号楼前的实测中,我们遇到了以下典型问题及解决方案:
-
问题1:点云地图严重扭曲或拉伸
-
原因
:IMU噪声参数 (
acc_n,gyr_n) 严重不准确。这是最常见的问题。 -
解决
:必须对IMU进行
精确标定
。使用
imu_utils工具包,将IMU静止放置数小时,采集数据计算其噪声特性。将标定结果填入params.yaml。
-
原因
:IMU噪声参数 (
-
问题2:建图时出现大量“鬼影”或重影
-
原因
:
timeScanPeriod参数设置不当,导致运动畸变校正错误;或者特征提取阈值 (edgeThreshold,surfThreshold) 不适合当前环境(如玻璃幕墙较多的3号楼)。 -
解决
:微调
timeScanPeriod(尝试0.05, 0.1, 0.15)。调整特征提取阈值,在结构化环境(楼宇)中可以尝试提高平面特征权重。
-
原因
:
-
问题3:算法频繁丢失跟踪(控制台出现很多“退化”警告)
- 原因 :环境特征过于单一(如长直走廊),或剧烈运动导致点云匹配失败。
-
解决
:LIO-SAM融合了IMU,对纯特征缺失有一定鲁棒性。确保IMU数据质量。可以尝试在
mapOptimization部分调低maxLocalMapFrameNum,让优化更依赖于近期帧。
成功的标志 :在RVIZ中,可以看到清晰、无重影的建筑物轮廓点云,并且当机器人完成闭环运动时,轨迹能够正确闭合,地图无明显错位。
5. Gazebo仿真环境搭建与测试
在实机部署前,利用Gazebo进行仿真测试是验证算法流程和参数有效性的绝佳方式。
5.1 创建仿真世界与机器人模型
-
安装必要工具 :
sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control -
创建仿真功能包 :
cd ~/catkin_ws/src catkin_create_pkg lio_sam_gazebo roscpp gazebo_ros cd lio_sam_gazebo mkdir launch worlds models urdf -
编写机器人URDF模型 :在
urdf/目录下创建mid360_robot.urdf.xacro文件,定义一个简单的差分驱动机器人,并添加Gazebo插件来模拟Mid-360和IMU。<?xml version="1.0"?> <robot name="mid360_robot" xmlns:xacro="http://www.ros.org/wiki/xacro"> <material name="blue"> <color rgba="0 0 0.8 1"/> </material> <link name="base_link"> <visual> <geometry> <box size="0.5 0.3 0.2"/> </geometry> <material name="blue"/> </visual> <collision> <geometry> <box size="0.5 0.3 0.2"/> </geometry> </collision> <inertial> <mass value="5.0"/> <inertia ixx="0.1" ixy="0.0" ixz="0.0" iyy="0.1" iyz="0.0" izz="0.1"/> </inertial> </link> <!-- 模拟 Livox Mid-360 --> <gazebo reference="base_link"> <sensor type="ray" name="mid360_sensor"> <pose>0 0 0.1 0 0 0</pose> <visualize>false</visualize> <update_rate>10</update_rate> <ray> <scan> <horizontal> <samples>2000</samples> <!-- 模拟高密度点云 --> <resolution>1</resolution> <min_angle>-3.14159</min_angle> <max_angle>3.14159</max_angle> </horizontal> <vertical> <samples>16</samples> <resolution>1</resolution> <min_angle>-0.261799</min_angle> <!-- -15度 --> <max_angle>0.261799</max_angle> <!-- +15度 --> </vertical> </scan> <range> <min>0.1</min> <max>50.0</max> <resolution>0.01</resolution> </range> <noise> <type>gaussian</type> <mean>0.0</mean> <stddev>0.01</stddev> </noise> </ray> <plugin name="gazebo_ros_lidar_controller" filename="libgazebo_ros_ray_sensor.so"> <ros> <namespace>/</namespace> <argument>~/out:=/livox/lidar</argument> <!-- 发布到与实机相同的话题 --> </ros> <output_type>sensor_msgs/PointCloud2</output_type> <frame_name>base_link</frame_name> </plugin> </sensor> <!-- 模拟 IMU --> <sensor type="imu" name="imu_sensor"> <always_on>true</always_on> <update_rate>200</update_rate> <visualize>true</visualize> <topic>/imu/data</topic> <plugin name="imu_plugin" filename="libgazebo_ros_imu_sensor.so"> <topicName>/imu/data</topicName> <bodyName>base_link</bodyName> <updateRateHZ>200.0</updateRateHZ> <gaussianNoise>0.001</gaussianNoise> <xyzOffset>0 0 0</xyzOffset> <rpyOffset>0 0 0</rpyOffset> <frameName>base_link</frameName> <initialOrientationAsReference>false</initialOrientationAsReference> </plugin> <pose>0 0 0.05 0 0 0</pose> </sensor> </gazebo> <!-- 差分驱动插件 --> <gazebo> <plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so"> <legacyMode>false</legacyMode> <leftJoint>left_wheel_joint</leftJoint> <rightJoint>right_wheel_joint</rightJoint> <wheelSeparation>0.3</wheelSeparation> <wheelDiameter>0.1</wheelDiameter> <torque>10</torque> <commandTopic>cmd_vel</commandTopic> <odometryTopic>odom</odometryTopic> <odometryFrame>odom</odometryFrame> <robotBaseFrame>base_link</robotBaseFrame> <publishWheelTF>true</publishWheelTF> <publishWheelJointState>true</publishWheelJointState> </plugin> </gazebo> </robot>-
关键点
:Gazebo的激光插件发布的是
sensor_msgs/PointCloud2消息,而Livox真机驱动发布的也是此类型消息,因此LIO-SAM可以无缝接收。我们通过<argument>~/out:=/livox/lidar</argument>将其话题重映射到与实机一致。
-
关键点
:Gazebo的激光插件发布的是
-
创建仿真世界 :在
worlds/目录下创建campus.world,模拟一个简单的校园环境,包含楼房、道路和树木。 -
编写启动文件 :在
launch/目录下创建simulation.launch。<launch> <!-- 启动Gazebo仿真世界 --> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="world_name" value="$(find lio_sam_gazebo)/worlds/campus.world"/> <arg name="paused" value="false"/> <arg name="use_sim_time" value="true"/> <arg name="gui" value="true"/> <arg name="headless" value="false"/> <arg name="debug" value="false"/> </include> <!-- 将机器人URDF模型加载到参数服务器 --> <param name="robot_description" command="$(find xacro)/xacro '$(find lio_sam_gazebo)/urdf/mid360_robot.urdf.xacro'" /> <!-- 在Gazebo中生成机器人模型 --> <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-param robot_description -urdf -model mid360_robot -x 0 -y 0 -z 0.1" /> <!-- 启动机器人状态发布 --> <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen"/> </launch>
5.2 在仿真中运行LIO-SAM
-
启动仿真环境 :
roslaunch lio_sam_gazebo simulation.launch此时Gazebo GUI会打开,显示机器人和世界。
-
启动LIO-SAM :与实机部署完全一样。
roslaunch lio_sam run.launch -
发送控制指令 :打开一个新终端,使用键盘或脚本控制机器人运动。
rosrun teleop_twist_keyboard teleop_twist_keyboard.py控制机器人在仿真世界中运动,观察RVIZ中的建图效果。
仿真测试的价值 :
- 验证流程 :确保驱动、算法、可视化整个数据流是通的。
- 参数初调 :可以在仿真中安全地调整LIO-SAM的特征提取、匹配参数,观察其对建图效果的影响。
- 闭环测试 :可以轻松设计包含回环的路径,测试LIO-SAM的闭环检测与优化能力。
6. 常见问题与排查思路
在部署LIO-SAM与Mid-360的过程中,以下问题及其解决方案具有很高的参考价值。
| 问题现象 | 可能原因 | 排查与解决思路 |
|---|---|---|
启动
livox_ros_driver
后无点云数据 (
/livox/lidar
话题无数据)
|
1. 网络IP配置错误。
2. 雷达未上电或网线故障。 3. JSON配置文件路径错误或格式错误。 |
1. 使用
ifconfig
确认主机IP,使用Livox Viewer工具扫描雷达IP并确认。
2. 检查雷达电源和网线连接。 3. 使用绝对路径指定
config_path
,并用
cat
命令检查JSON文件语法。
|
| LIO-SAM启动后立即崩溃或报错 |
1. GTSAM库版本不兼容或未安装。
2. PCL等ROS依赖缺失。 3.
params.yaml
文件格式错误(如缩进问题)。
|
1. 确认GTSAM版本(
pkg-config --modversion gtsam
),建议使用4.0.3以上稳定版。
2. 根据编译错误信息,安装缺失的ROS包,如
ros-noetic-ndt-omp
。
3. 使用YAML语法检查器或仔细核对
params.yaml
。
|
| RVIZ中点云地图扭曲、发散或沿一个方向快速漂移 |
IMU参数错误!
这是最核心的原因。
acc_n
,
gyr_n
等噪声参数未标定或填写错误。
|
必须进行IMU标定
。使用
imu_utils
工具,按照其README采集静止数据数小时,计算噪声参数并更新到
params.yaml
。
|
| 建图出现重影(同一物体有两个影子) |
1.
timeScanPeriod
参数不匹配。
2. 运动畸变校正失效,可能由于IMU频率太低或数据不同步。 3. 外参不准确(雷达与IMU之间的变换矩阵)。 |
1. 尝试调整
timeScanPeriod
(0.05, 0.1, 0.2)。
2. 检查IMU数据频率(应≥100Hz)并使用
message_filters
确保时间同步。
3. 标定雷达-IMU外参。 |
| 算法运行卡顿,帧率很低 |
1. 点云数据量太大。
2. 计算机算力不足。 3. LIO-SAM参数中局部地图大小 (
maxLocalMapFrameNum
) 设置过大。
|
1. 在Livox驱动中可尝试降低点云发布频率或使用
pcl_data_type
进行降采样。
2. 考虑使用性能更强的硬件。 3. 适当减小
maxLocalMapFrameNum
。
|
| Gazebo仿真中雷达点云话题名称不对 | Gazebo插件话题重映射未生效或URDF中插件配置有误。 |
检查URDF中Gazebo插件
<argument>
标签,确保发布的话题是
/livox/lidar
。使用
rostopic list
和
rostopic echo
进行验证。
|
7. 最佳实践与工程建议
将LIO-SAM成功部署到Mid-360并稳定运行,只是第一步。要将其用于实际的机器人导航项目,还需要考虑以下工程化问题:
-
严格的传感器标定 :
-
IMU内参标定
:使用
imu_utils进行Allan方差分析,获取准确的噪声参数 (acc_n,gyr_n,acc_w,gyr_w)。这是保证精度的前提。 -
雷达-IMU外参标定
:使用
lidar_imu_calib等工具包,在线或离线标定出雷达坐标系到IMU坐标系的精确变换矩阵 (extrinsicRotation,extrinsicTranslation),并填入LIO-SAM配置。忽略外参会导致融合误差。
-
IMU内参标定
:使用
-
时间同步与传感器融合 :
-
确保雷达和IMU的时间戳来自于同一个时间源(如系统时钟或PTP)。使用
message_filters的ApproximateTime策略对/livox/lidar和/imu/data话题进行近似时间同步,可以提升状态估计的稳定性。
-
确保雷达和IMU的时间戳来自于同一个时间源(如系统时钟或PTP)。使用
-
参数调优策略 :
-
分步调优
:不要一次性修改所有参数。建议顺序:先调IMU参数保证轨迹不漂移 -> 再调
timeScanPeriod和运动畸变参数 -> 最后调特征提取和匹配参数。 - 利用仿真和Bag包 :在Gazebo仿真和录制的实机bag包上反复测试调参,效率远高于每次实机测试。
-
记录参数版本
:使用Git管理你的
params.yaml文件,每次修改做好注释和记录,便于回溯和对比。
-
分步调优
:不要一次性修改所有参数。建议顺序:先调IMU参数保证轨迹不漂移 -> 再调
-
系统集成与鲁棒性 :
- 启动脚本化 :编写一个launch文件,按顺序启动雷达驱动、IMU驱动、LIO-SAM和RVIZ,实现一键启动。
-
异常监控
:监听LIO-SAM发布的
/odometry/gps或/lio_sam/mapping/odometry话题,设计简单的健康检查节点,当位姿协方差突然增大或长时间不更新时,触发报警或系统重置。 -
地图保存与加载
:LIO-SAM在建图结束后可以保存全局点云地图。研究如何将这份地图用于后续的定位(如与Cartographer的
pbstream地图结合,或使用点云匹配算法)。
-
性能考量 :
- 资源占用 :LIO-SAM在大型场景中运行,点云地图会持续增长,占用大量内存。对于长期运行,需要考虑地图管理策略,如滑动窗口子图或删除远处点云。
-
实时性
:在资源受限的平台(如Jetson)上,可能需要降低LIO-SAM的
updateMapFrequency(优化频率),或对输入点云进行体素滤波降采样,以平衡精度和实时性。
从在Gazebo中搭建第一个仿真世界,到在华南理工大学的真实校园环境中看到LIO-SAM构建出清晰的3号楼点云地图,这个过程充满了挑战也极具成就感。它完整地串联了机器人感知算法的仿真验证、实机部署、参数调优和问题排查全链路。希望这份详细的指南能帮助你绕过我们踩过的坑,顺利地将先进的SLAM算法运行在你的机器人平台上。下一步,你可以尝试将LIO-SAM输出的高精度里程计与导航框架(如ROS的
move_base
或
nav2
)结合,实现真正的自主定位与导航。



161

被折叠的 条评论
为什么被折叠?



