Cartographer源码阅读1

cartographer 代码分析 cartographer 代码分析 相关注释代码链接为:cartographer代码注释 代码主要分为两个部分,其一为cartographer的核心实现,另一个为cartographer的ros封装壳。首先介绍其ros封装,可以看到大概的调用流程,然后再深入源码去剖析其实现过程。但是其代码可以说十分的繁琐且复杂,在只能大致理清楚其逻辑。 Cartographer-ROS 根据运行的命令 roslaunch cartographer_ros offline_backpack_2d.launch bag_fi 阅读详情

在agv公司实习,需学习cartographer算法。

参照大佬帖子Cartographer源码阅读_预准备 - 知乎

本贴仅作为记录自己学习cartographer源码的过程,笔记,感想。

cartographer代码主要包括两部分 cartographer_ros,cartographer,以及一个进行非线性优化的库ceres-solver。cartographer_ros是基于ros的通信机制,获取传感器的数据并转换成cartographer内定义的格式传递给cartographer处理。可以理解为基于cartographer的上层应用,对cartographer进行了一层ROS接口的封装。

代码整体框架:

算法大致分为三个部分,local slam(前端),Global SLAM(后端),回环检测LoopClosure。

Local SLAM部分任务是建立子图Submaps,但前端建图会有部分建图误差,且随着时间累计。该部分的参数定义见/src/cartographer/configuration_files/trajectory_builder_2d.lua和/src/cartographer/configuration_files/trajectory_builder_3d.lua中。

Global SLAM部分主要任务是进行回环检测,采用BBA,Branch-and-Bound Approach (BBA)的方法来解决。具体方法见论文Real-Time Loop Closure in 2D LIDAR SLAM。在3Dladar中,该部分还根据IMU惯导的数据找到重力的方向。对BBA算法的理解:搜索窗口表达成一棵树的形式,树上每一个树枝就是这颗树干节点所有解可能性的划分,而树干对每个树枝都有一个上限得分,当有一个解比子节点(树枝)的得分高时,说明这个树枝不是最优解,就剪掉这个树枝,从而大大加快解题速度。并且在实际问题中,大部分分支的得分是非常低的,通过阈值就剪掉了很多分支。该种方法拿存储空间换时间效率,因为需要预先计算并存储子图每个pixel的得分值,当输入一个节点时,直接寻找即可,所以这个程序很吃内存。

总而言之,前端负责生成较好的子图,而后端将不同的子图以最匹配的位姿合在一起成为总图。

cartographer运行后系统ROS节点,topic,service等情况如下图:

cartographer_node订阅传感器数据,运行算法,生成submap_list, 而cartographer_occupancy_grid_node则订阅了submap_list,并发布栅格地图。

cartographer_node
   |===@订阅的Topic
   |---------scan (sensors_msgs/LaserScan):   解释:传感器数据
   |---------echoes (sensors_msgs/Mu
Cartographer源码理解 cartographer源码理解与仿真环境配置 阅读详情

相关推荐

Cartographer 代码阅读分析

cartographer 算法主要有三个文件夹 1、cartographer_ros (该文件件里的代码是cartographer 在 ros平台中的接口) 2、cartographer (核心slam算法) 3、ceres-solver (google 的开源 优化库)

这趋势是要成为IT男啊的博客 1万+

Cartographer源码阅读08 回环检测 计算约束

本篇文章,将就如何实现回环检测和计算约束来进行深一步的讨论。 代码位于cartographer\mapping\internal\2d\pose_graph_2d.cc

one_skr的博客 3780

激光SLAM之Cartographer源码解析视频课程

你是否正在看Cartographer的代码? 是否觉得用了很久Cartographer建图, 但是不清楚具体代码实现, 不清楚具体算法? 看了代码是否觉得Cartographer的代码晦涩难懂? 是否觉得Cartorgapher的代码里有太多的C++11的新标准语法从而感觉看不明白? 是否觉得Cartographer的代码里继承与类之间的跳转太过复杂, 又不明白设计这么复杂的继承关系与跳转关系的原因到底是什么? 那么, Cartographer逐行源码解析视频课程 -《Cartographer从入门到精通:

李想的博客 3578

【rt-thread实战解析】从零到一:基于STM32与LAN8720A的以太网驱动配置全流程

本文详细解析了在RT-Thread操作系统上为STM32F407配置LAN8720A以太网驱动的全流程。从硬件连接自查、CubeMX工程创建、PHY复位函数编写,到RT-Thread工程配置、LwIP协议栈集成,最后进行实际上电测试与网络调试,手把手指导开发者避开常见陷阱,实现稳定的以太网连接。

m2n3b4v5c6的博客 525

MIL-STD-1553B协议解析与工程实践指南

MIL-STD-1553B作为军用航空电子系统的核心通信协议,采用命令/响应式串行总线架构,通过双冗余设计实现高可靠性数据传输。该协议定义了三类终端设备(总线控制器、远程终端、总线监视器)和六种标准消息格式,典型应用包括飞行控制系统、导航设备等关键航电组件的实时数据交互。深入解析模式代码机制和状态字位域定义,其中传输向量字(10000)和同步命令(00001)等关键指令在分布式系统时间对齐、故障诊断等场景发挥重要作用。工程实践中需特别注意78Ω终端阻抗匹配、4-12μs响应时间窗口等硬性指标,结合变压器耦合

weixin_33431149的博客 435

vue3接入大华摄像头

┃ ┃ ┣ 📜PlaybackModal.vue 回放列表模态框。┃ ┃ ┗ 📜VideoGrid.vue 视频播放区域。┃ ┃ ┣ 📜ControlPanel.vue 控制面板。┃ ┃ ┣ 📜DeviceList.vue 设备列表。┃ ┣ 📂module //大华摄像头文件。

💻 专注 Vue 前端与 Java 后端技术 🌱 目前正在深入 Spring Boot、微服务与性能优化 📝 定期分享实战踩坑经验与学习笔记 🤝 欢迎交流,共同进步 914

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

qq_41510657的博客 2614

芯片详解——AD7606

AD7606详解

weixin_45661757的博客 5021

常规波束形成——时域波束形成、频域波束形成

本文介绍了波束成形,包括时域波束成形和频域波束成形,并解释了在实现过程可能存在疑惑的相位补偿。

Candy_Editor的博客 3660

FPGA原型验证(七):如何选择、搭建原型验证平台?

本篇概要::讨论了在项目初期选择目标FPGA平台的重要性,包括自制板卡与购买现成板卡之间的决策。主要是为那些希望建立基于FPGA的原型平台的工程师和设计师提供了深入的技术细节和决策指导,无论是选择自制还是购买现成的解决方案。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 943

2026从0到1!C#工控机开发实战指南:新手一周就能跑通的完整项目

这篇文章摘要如下: 工业自动化领域工控机开发入门指南,针对零基础开发者提供从环境搭建到项目实战的全流程指导。文章首先解答工控机开发的3个核心问题,比较工控机与普通PC的区别,推荐使用C#作为开发语言。随后详细讲解开发环境配置、四大核心技术栈(通信协议、数据库、UI框架、多线程),并重点演示Modbus TCP通信的实现。最后通过一个完整的温度监控系统项目实战,展示如何用WPF构建实时数据采集界面,包括Modbus通信类编写、数据采集服务实现等关键代码片段。全文采用图解+代码的方式,帮助开发者快速掌握工控系统

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 704

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

下一篇: Cartographer源码阅读2:0基础小白也能上手 跑自己的机器人
十点后下班
博客等级 码龄4年 27粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值