☰
GLIM:一套配置驱动 LiDAR-IMU 融合 3D 定位建图,Jetson 上也能实时跑的开源框架
2026/10/23 2:37:03 网站建设 项目流程

GLIM:一套配置驱动 LiDAR-IMU 融合 3D 定位建图,Jetson 上也能实时跑的开源框架

【免费下载链接】glimGLIM: versatile and extensible point cloud-based 3D localization and mapping framework项目地址: https://gitcode.com/GitHub_Trending/glim/glim

GLIM 是一个通用的 3D 定位建图(SLAM,即设备一边移动一边"搞清楚自己在哪、周围长什么样")框架。它统一处理 LiDAR 点云与 IMU(惯性测量单元,负责记录加速度和角速度)数据,帮你实时估计位姿、生成全局一致的地图。

三类场景,一套管线

  • 机器人导航:机器人在未知环境边走边建图,GLIM 同时输出轨迹与地图。
  • 自动驾驶测试:官方 demo 用 Livox MID360 完成了户外驾驶建图测试。
  • AR/VR 与室内定位:固态 LiDAR(如 Realsense L515)和 RGB-D 相机(如 Azure Kinect)可直接接入。

对工程同学的直接价值是:换传感器时主要改配置,不用重写算法管线。

项目定位:一个能覆盖 GPU 到 Jetson 的点云 SLAM 框架

核心亮点(特性 + 效果):

  • 传感器无关:旋转式、非重复扫描、固态 LiDAR 与 RGB-D 共用一条管线,同一套参数直接跑。
  • GPU 加速 + 轻量模式:默认 GPU 加速保精度,CPU 轻量模式可下放到树莓派级别设备实时运行。
  • 内置地图纠错界面:建图出错的区段可以离线手动修正,不必整段重跑。

数据是怎么流动的

下面这张流程图对应 GLIM 的四段式数据流(各节说明取自 官方文档目录 与源码模块划分):

  • 预处理:先滤掉近处噪点,再随机降采样,控制后续计算量。
  • 里程计估计:用 IMU 预积分加 VGICP(一种按体素索引加速的广义 ICP 点云配准)滚动优化,输出短时位姿。
  • 子地图构建:把关键帧打包成子地图,先做局部优化,相当于"分块打草稿"。
  • 全局优化:可以理解为多路证据一起拼拼图——IMU 预积分因子、相邻位姿约束、子地图间的配准误差因子各提供一条证据,拼出全局一致的位姿。子地图重叠度超过阈值时自动建立约束,隐式闭环由此完成。

最短路径跑起来(PPA 二进制安装)

官方推荐用 PPA 二进制包,省去逐个编译 GTSAM、gtsam_points 等依赖。以 Ubuntu 22.04 / 24.04 + ROS2 为例:

# 1. 添加 PPA 源 curl -s https://koide3.github.io/ppa/setup_ppa.sh | sudo bash # 2. 安装 GLIM 的 ROS2 包(按需选择 CUDA 版本) sudo apt update sudo apt install -y ros-humble-glim-ros # 无 GPU:CPU 版 sudo apt install -y ros-humble-glim-ros-cuda12.2 # 有 NVIDIA GPU:CUDA 版 # 3. 修改 config/config_sensors.json 中的外参与 config_ros.json 中的话题名 # 4. 回放演示数据: ros2 run glim_ros glim_rosbag os1_128_01

没有 PPA 的发行版可走源码编译,步骤见 安装文档;不想装 ROS 环境也可以直接用预构建 Docker 镜像,见 Docker 文档。跑完后地图与轨迹会存到/tmp/dump,用offline_viewer打开即可查看、修图。

关键参数调节对照表

参数位置在config/目录的 JSON 文件里,改完 ROS2 环境需要重新colcon build(或启动时用--ros-args -p config_path:=...指向自定义目录)。下表只列最常用的 6 个,含义见 参数说明文档:

参数默认值往哪个方向调
random_downsample_target10000调小(如 5000)→ 速度明显变快,精度略降
voxel_resolution0.25室内调小(0.1~0.25)→ 配准更精细
voxelmap_levels2调大 → 对大幅位移更鲁棒,计算略增
max_num_keyframes15调大 → 里程计漂移减小,内存占用上升
keyframe_update_strategyOVERLAP重叠率策略自适应性强;DISPLACEMENT 更直观好调
min_implicit_loop_overlap0.2调小 → 建更多隐式闭环约束,全局更紧

一个典型的 GPU 里程计配置片段(config/config_odometry_gpu.json):

"voxel_resolution": 0.25, "voxelmap_levels": 2, "max_num_keyframes": 15, "keyframe_update_strategy": "OVERLAP"

实测与部署情况

先说结论:同一套参数可以横跨多种 LiDAR 直接复用,轻量模式在嵌入式平台上能实时跑。

  • 多传感器通用:官方 demo 中 Livox、Velodyne、Azure Kinect、Realsense L515 使用同一组参数完成建图,无需逐传感器调参(见 demo 文档)。
  • 嵌入式实时:Jetson Nano 上可实时运行纯里程计估计(无全局优化),配合 Jetson Orin(JetPack 6.1)也在官方测试范围内。
  • 平台覆盖:官方在 Ubuntu 22.04 / 24.04、CUDA 12.2 / 12.6 / 13.1 上验证过。

常见问题 FAQ

Q:IMU 数据没对准、初始化就翻车?静止放置设备,IMU 静止时 z 轴朝上,线性加速度应约为 [0, 0, +9.81]。若你的 IMU 单位是 g(如 Livox),把config_ros.json里的acc_scale设为 9.80665。时间戳问题则靠 ROS 话题时间检查,配合config_sensors.json里的T_lidar_imu外参一起排查。

Q:点云配准失败、位姿乱跳?先检查 LiDAR-IMU 外参,再按顺序调:voxelmap_levels调到 3、关键帧策略改成DISPLACEMENT并加大位移阈值。

Q:内存占用大、跑长 bag 吃力?把random_downsample_target降到 5000、max_num_keyframes调小,或直接用 CPU 轻量组合(config_odometry_cpu.json+ 透传子地图),官方明确支持这种低配跑法。

Q:设备上没有 IMU 怎么办?切到纯 LiDAR 里程计:config.json里config_odometry指向config_odometry_ct.json,并在子地图与全局优化配置中把enable_imu设为false。

选型建议:它适合谁

适合用 GLIM 的情况:

  • 项目里有多种测距传感器,想避免为每种传感器维护一套 SLAM 代码。
  • 需要 GPU 加速的实时建图,同时希望保留低配设备的轻量降级方案。
  • 建图结果允许事后人工介入:用离线查看器手动补闭环、清理动态物体点。
  • 技术栈是 ROS / ROS2,尤其是 ROS2(humble / jazzy 均有现成包)。

暂不适合的情况:

  • 只有双目立体相机而没有深度/点云输出——官方明确建议这类传感器改用视觉 SLAM。
  • 必须用 CUDA 11 或更老版本——当前版本不支持。
  • 只需要纯视觉或语义建图,点云不是你的主数据源。

收尾

GLIM 把传感器差异、计算档位、优化环节都收敛成了配置文件里的一行字符串。先按最短路径跑通演示数据,再对照参数表接入自己的传感器,是最省事的路线。

【免费下载链接】glimGLIM: versatile and extensible point cloud-based 3D localization and mapping framework项目地址: https://gitcode.com/GitHub_Trending/glim/glim

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询