【9】lightning_lm项目-阶段4-定位系统
文章目录阶段四定位系统Localization一、定位系统的整体架构二、核心模块 1LocSystemROS 接口层三、核心模块 2LidarLoc核心定位层阶段四定位系统定位动态地图一、定位系统的核心亮点二、核心模块 1TiledMap分区动态地图三、核心模块 2LidarLoc激光定位四、核心模块 3LocSystemROS 接口层五、建图和定位主要区别六、定位系统的完整流程图阶段四总结阶段四定位系统Localization现在学习定位系统这是实际部署时最常用的功能——在建好的地图上实时定位一、定位系统的整体架构定位系统有三层结构┌─────────────────────────────────────┐ │ LocSystem (ROS接口层) │ │ - 订阅IMU/LiDAR │ │ - 发布TF │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ Localization (协调层) │ │ - 协调LIO/LidarLoc/PGO │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ LidarLoc (核心定位层) │ │ - NDT匹配 │ │ - 动态地图更新 │ │ - 位姿图优化 │ └─────────────────────────────────────┘二、核心模块 1LocSystemROS 接口层看 loc_system.h 和 loc_system.cc 这个很简单主要功能 创建 ROS node订阅 IMU、LiDAR标准点云和 Livox 点云调用 loc::Localization 处理数据设置 TF 回调发布定位结果三、核心模块 2LidarLoc核心定位层看 lidar_loc.h 这个是核心3.1 主要成员变量先看有什么structOptions{boolupdate_dynamic_cloud_true;// 是否更新动态图层boolforce_2d_true;// 强制在2D空间};std::shared_ptrTiledMapmap_nullptr;// 分区地图NDTType::Ptr pcl_ndt_nullptr;// NDT配准std::dequeTimedPoselidar_loc_pose_queue_;// 位姿队列SE3 current_abs_pose_;// 当前绝对定位位姿阶段四定位系统定位动态地图这是 Lightning-LM 的一大特色—— 动静态图层分离的定位系统 一、定位系统的核心亮点二、核心模块 1TiledMap分区动态地图看 tiled_map.h 这个是核心2.1 地图结构TiledMap ├── static_chunks_ (静态地图块) │ ├── chunk (100m x 100m) │ ├── chunk (100m x 100m) │ └── ... └── dynamic_chunks_ (动态地图块) ├── chunk ├── chunk └── ...2.2 动态地图策略看 DynamicCloudPolicy 枚举2.3 动态地图更新看 UpdateDynamicCloud() 接口用定位后的点云更新动态图层只在一定范围内更新 update_kf_dis_ 5米三、核心模块 2LidarLoc激光定位看 lidar_loc.h3.1 定位流程输入IMU LiDAR ↓ LIO 预测相对运动激光里程计 ↓ LidarLocNDT 匹配到地图上绝对定位 ↓ PGO位姿图优化融合LO和绝对定位 ↓ 输出高精度定位位姿 ↓ 可选更新动态地图3.2 关键参数看 Options 结构体force_2d_ 强制在2D空间定位大多数场景适用update_dynamic_cloud_ 是否更新动态地图update_kf_dis_ 每隔多少米更新一次动态地图5米四、核心模块 3LocSystemROS 接口层看 loc_system.h这个很简单就是封装 ROS 接口订阅 IMU 话题订阅 LiDAR 话题标准点云和 Livox调用定位模块发布 TF世界坐标系 - 机器人坐标系五、建图和定位主要区别建图阶段需要 回环、关键帧保存定位阶段只需 加载地图、高频匹配模式主体节点功能建图 (run_slam_online)LIO LoopClosing G2P5实时构建地图、优化位姿、输出全局 PCD定位 (run_loc_online)LIO Localization在已有地图上做 scan-to-map 匹配输出位姿两者在参数上存在差异放在一个文件里会互相干扰模块建图模式定位模式地图加载初始化空地图读取 map_path 下保存地图回环检测开启关闭栅格生成g2p5在线生成通常关闭动态层策略新建仅更新/加载关键帧存储每隔一段时间保存只用作定位参考优化线程全量图优化局部匹配修正六、定位系统的完整流程图┌─────────────────────────────────────────────────────────────┐ │ 输入IMU LiDAR │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 1. LIO 处理 (激光里程计) → 相对运动预测 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 2. TiledMap 加载 → 只加载车辆附近的地图块 │ │ (load_nearby_chunks_ 8) │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 3. LidarLoc::Localize() → NDT 配准 │ │ - 粗分辨率匹配 (10.0) │ │ - 精分辨率匹配 (2.0 / 1.0) │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 4. PGO 优化 → 融合 LIO 和绝对定位 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 5. 更新动态地图 (可选) │ │ - 用定位后的点云更新动态图层 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 6. 输出 → 发布 TF / 定位结果 │ └─────────────────────────────────────────────────────────────┘阶段四总结定位系统学完了主要特色是分区动态地图 大场景下高效加载动静态图层分离 静态存环境动态存变化的物体NDTLIOPGO 融合定位高精度鲁棒

相关新闻

Web Audio API实现浏览器端音频录制与处理

Web Audio API实现浏览器端音频录制与处理

1. 初识浏览器音频录制能力现代浏览器提供的Web Audio API让我们能够直接在网页中处理音频数据,其中getUserMedia和MediaRecorder这两个API的组合使用尤为强大。作为一名前端开发者,我最近在项目中需要实现一个网页端的录音功能,经过一番探索…

2026/10/16 7:55:16 阅读更多 →
固定长度、递归字符、语义分块和结构分块怎么选?RAG Chunk策略对比

固定长度、递归字符、语义分块和结构分块怎么选?RAG Chunk策略对比

文章摘要 Chunk策略决定了RAG系统能够检索到什么、丢失什么,以及大模型最终看到多少完整上下文。固定长度分块实现简单但容易切断条款;递归字符分块通用性强;语义分块边界自然但成本较高;结构分块最适合制度、合同和技术文档,却依赖可靠的文档解析。本文从边界质量、实现…

2026/10/18 14:42:57 阅读更多 →
能科科技AI+工业场景化应用【第二期】:PLM AI智能助手

能科科技AI+工业场景化应用【第二期】:PLM AI智能助手

当前,PLM(例如Teamcenter)作为一款专业的产品生命周期管理系统,广泛应用于制造企业,帮助企业实现产品数据的统一管理与协同共享。但是在实际应用中存在两大难题:一是隐性人力成本高,新员工培训耗…

2026/10/15 15:11:52 阅读更多 →

最新新闻

HTTP/3与QUIC深度解析:从队头阻塞到部署实战

HTTP/3与QUIC深度解析:从队头阻塞到部署实战

浏览器原理这个系列写到现在,HTTP/3是我最想写又最不敢写的一篇。说不敢,是因为HTTP/3表面看只是HTTP协议的第三个大版本,内核里却把传输层的底座整个换了——它不像HTTP/1.1到HTTP/2那样只在应用层做文章,而是直接把协议栈从TCP搬…

2026/10/19 4:09:35 阅读更多 →
开放式代码审查实战:从流程搭建到协作效率提升

开放式代码审查实战:从流程搭建到协作效率提升

我接手过好几个中型仓库,里面有大量“高危但能跑到上线”的代码:吞掉的异常、裸奔的权限校验、藏在注释里的临时逻辑。很多都能在上线前被拦下来,前提是有人在Review时真的盯住了。这也是我为什么想写这篇关于open-code-review文章的原因。这…

2026/10/19 4:09:35 阅读更多 →
开源代码评审工具 open-code-review:把 Code Review 变成可量化的工程习惯

开源代码评审工具 open-code-review:把 Code Review 变成可量化的工程习惯

提到 code review,不少团队的回答都是“我们在做”,但真去翻一遍仓库的合并记录,会发现大量 PR 都是一个人开发、另一个人在合并前点了通过。评审更像走流程,而不是讨论问题。我维护了一个叫 open-code-review 的开源项目&#xf…

2026/10/19 4:09:35 阅读更多 →
STM32F103ZET6循迹小车竞速方案:灰度传感器与PID控制实战

STM32F103ZET6循迹小车竞速方案:灰度传感器与PID控制实战

简介:面向智能车竞速与STM32嵌入式学习的循迹小车完整工程,以72MHz主频的STM32F103ZET6作为核心控制器,机械结构采用舵机加双编码电机,通过一字排列的灰度传感器阵列识别黑线,从而检测车身在直道、环岛、S弯和连续直角…

2026/10/19 4:09:35 阅读更多 →
开放式代码评审的完整实践指南:从机制到落地

开放式代码评审的完整实践指南:从机制到落地

代码评审这件事,我干了快十年,到现在还是会劝刚带团队的朋友一句:先把评审机制立起来,再谈什么敏捷流程、DevOps 文化。open-code-review 这个名字,听起来像某个开源库,本质上却代表了我这些年一直在推的做…

2026/10/19 4:09:35 阅读更多 →
LSTM原理详解与工程加速:从梯度消失到推理优化

LSTM原理详解与工程加速:从梯度消失到推理优化

最近在某个工业设备的时序预测项目里,我把LSTM重新捡起来用了一遍。说实话,这两年Transformer在序列任务上的声量确实大,很多新入行的同学一上来就研究注意力机制,反而把LSTM这个经典的循环结构给忽略了。但手头这个项目跑下来&am…

2026/10/19 4:08:35 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →