激光SLAM:cartographer

每日浅读SLAM论文——简析Cartographer 它的主要工作在后端,使用分支定界优化了CSM算法,然后构建了位姿和submap之间的约束图,使用SPA(一种利用图稀疏性来加速优化,这可以说是真正将图优化投入实际使用的算法,学习到一定深度了可以再去学习,总之是一种快速进行图优化的算法)进行优化。显然,这种算法复杂度很高。其实我们很容易想到一种简单的算法(我瞎想的,便于理解),假设一开始x搜索范围之[-10,10],步长为1,搜一百次,取分数最高的10次,这10次分数都在[-1,1]之间,那我改步长为0.1搜索新的区间。就是前端,核心就是优化这个函数, 阅读详情

cartographer简介

        cartographer是google开发的实时室内SLAM项目,cartographer采用基于google自家开发的ceres非线性优化的方法,cartographer的亮点在于代码规范与工程化,非常适合于商业应用和再开发。并且cartographer基于submap子图构建全局地图的思想,能有效的避免建图过程中环境中移动物体的干扰。并且cartographer支持多传感器数据(Odometry、IMU、LaserScan等)建图,支持2D_SLAM和3D_SLAM建图,成本较低的雷达也能跑出不错的效果。cartographer是google推出的一套基于图优化的SLAM算法,主要目标是实现低计算资源消耗,达到实时SLAM的目的,所以很适合嵌入式端的使用。

该算法主要分为两个部分,第一个部分称为Local SLAM, 该部分通过一帧帧的Laser Scan建立并维护一系列的Submap,而所谓的submap就是一系列的Grid Map。当再有新的Laser Scan中会通过Ceres Scan Matching的方法将其插入到子图中的最佳位置。但是submap会产生误差累积的问题。因此,算法的第二个部分,称为Global SLAM的部分,就是通过Loop Closure来进行闭环检测,来消除累积误差:当一个submap构建完成,也就是不会再有新的laser scan插入到该submap时,算法会将该submap加入到闭环检测中。闭环检测的本质也是一个优化问题,该优化问题被表达成了一个pixel-accurate match的形式,解决优化问题的方法是Branch-and-Bound Approach.

版本

cmake 3.10.2, gcc7.5, g++7.5,  python2.7.17, protoc3.0.0, eigen 3.3.4, lua5.2, cartogrpher1.0.0, cartographer_ros1.0.0, ceres-solver1.13.0

- git:
    local-name: cartographer
    uri: https://github.com/googlecartographer/cartographer.git
    version: 1.0.0
- git:
    local-name: cartographer_ros
    uri: https://github.com/googlecartographer/cartographer_ros.git
    version: 1.0.0
- git:
    local-name: ceres-solver
    uri: https://github.com/ceres-solver/ceres-solver.git
    version: 1.13.0
 

        cartographer的安装主要包括三个部分:cartographer、cartographer-ros、ceres-solver。

其中cartographer 是计算的部分,

git clone https://github.com/cartographer-project/cartographer

cartographer-ros是算法在ROS中通讯交互数据的部分,

git clone https://github.com/cartographer-project/cartographer_ros

ceres-solver开发的一款用于非线性优化的库。

git clone https://github.com/ceres-solver/ceres-solver

        安装的方法有两种,一种是官网的集成式下载配置,一种是把cartographer需要的依赖部分分别安装配置。推荐使用第二种安装配置方法。    

分包编译方式:

cartographer分成6个部分,分别是eigen3、protobuf、abseil、glog、gflags、cartographer、cartogpher_ros、ceres solver。版本匹配要求高。

1.eigen

        Eigen是高级 C ++ 模板标头库,用于线性代数,矩阵和矢量运算,几何变换,数值求解器和相关算法。自3.1.1版以来,Eigen是根据Mozilla Public License 2.0许可的开源软件。早期版本是根据GNU较宽松通用公共许可证授权的。

git clone https://gitlab.com/libeigen/eigen/-/archive/3.4-rc1/eigen-3.4-rc1.tar.gz

2.protobuf

        Protocol Buffers(简称Protobuf) ,是Google出品的序列化框架,与开发语言无关,和平台无关,具有良好的可扩展性。Protobuf和所有的序列化框架一样,都可以用于数据存储、通讯协议。

git clone https://github.com/protocolbuffers/protobuf

3.abseil

        abseil 是 google 开源的 C++通用库,其目标是作为标准库的补充。abseil 不但提供了标准库没有但很常用的功能,也对标准库的一些功能进行了增强设计,使用 abseil 库能使程序性能和开发效率都取得不错的提升。cartographer对abseil没有版本要求,但是一定要有。

git clone https://github.com/abseil/abseil-cpp.git

4、glog

        Google Logging(glog)是一个实现应用程序级日志记录的C++98库。该库提供了基于C++风格流和各种辅助宏的日志API。

git clone https://github.com/google/glog

5、gflags

        google开源的gflags是一套命令行参数解析工具,比getopt功能更强大,使用起来更加方便,gflags还支持从环境变量、配置文件读取参数(可用gflags代替配置文件)。

git clone https://github.com/gflags/gflags

一起自学SLAM算法:8.2 Cartographer算法 连载文章,长期更新,欢迎关注:Gmapping代码实现相对简洁,非常适合初学者入门学习。但是Gmapping属于基于滤波方法的SLAM系统,明显的缺点是无法构建大规模的地图,这一点已经在第7章中讨论过了。而基于优化的方法则可以构建大规模的地图,基于优化的方法实现的激光SLAM算法也有很多,比如Hector、Karto、Cartographer等。 阅读详情

相关推荐

激光雷达SLAM对比测试:gmapping vs Cartographer在树莓派上的性能表现

本文在树莓派4B平台上对ROS生态中两款经典激光雷达SLAM算法——gmapping与Cartographer进行了深度对比评测。通过实测数据,从CPU/内存占用、建图精度与鲁棒性、实时性及参数调优等多个维度,详细分析了二者在资源受限嵌入式设备上的性能表现,为移动机器人项目选型提供了切实参考。

weixin_29090089的博客 278

机器人开发--Cartographer详细介绍

Cartographer是google推出的一套基于**图优化**的SLAM算法。

天道酬勤 3万+

3款主流2D激光SLAM算法对比:Gmapping vs Hector vs Cartographer,实测精度与资源消耗

本文深度对比了3款主流2D激光SLAM算法(Gmapping、Hector SLAM和Cartographer)在机器人导航中的性能表现。通过实测数据分析了各算法在建图精度、资源消耗和工程适用性方面的差异,为不同场景下的算法选型提供专业指导。重点关注二维激光SLAM技术的实际应用与优化策略。

dilv4062的博客 372

slam建图与定位_cartographer代码阅读(1)_框架理解和node_main

位姿图:向位姿图添加节点,计算节点的子图内约束和子图间约束(回环检测);基于分支定界算法的粗匹配,优化问题的构建与求解。cartographer是一个基于图优化的激光slam框架,激光为主,可以融合其它传感器;扫描匹配:ceres扫描匹配;雷达数据处理:时间同步,数据融合;2>初始化glog和gflags库 glog打日志使用,gflags读取配置文件参数使用。代码包含两个部分:cartopher_ros和cartographer。2>轨迹的开始,传感器数据的采集传递,话题处理。4>ros节点的初始化。

qq_51108184的博客 1282

激光SLAM开源算法实战选型指南:从Gmapping到Cartographer的5个避坑建议

本文为激光SLAM开源算法实战选型提供专业指南。针对室内服务机器人、仓储AGV、无人机巡检等不同场景,深入解析了从经典Gmapping到现代Cartographer、LOAM及LIO系列算法的核心原理、适用边界与工程考量。文章重点分享了五个关键避坑建议,帮助开发者根据传感器配置、计算资源和环境约束,做出高效、可靠的技术决策,避免项目延期与返工。

weixin_29044713的博客 359

3款主流激光SLAM算法在冰达机器人上的实测对比:Gmapping vs Karto vs Cartographer

本文对比评测了3款主流激光SLAM算法(Gmapping、Karto、Cartographer)在冰达机器人上的性能表现。通过结构化实验室、复杂办公区和长廊走廊三类典型场景的实测数据,详细分析了各算法在建图精度、实时性、鲁棒性和资源效率等方面的优劣,并给出场景化选型建议和参数调优技巧,为ROS开发者提供实用的SLAM算法选择参考。

weixin_32377497的博客 241

slam:cartographer 详解与案例编写

开发时采用 slam_toolbox,十分快捷高效,但对于slam 的学习 slam_toolbox 并不友,slam_toolbox 的核心依赖包括 Ceres Solver、Boost 等,手动编译需要处理多库版本兼容性问题,尤其是 Ceres 的安装和配置可能较为繁琐。slam_toolbox 的设计更偏向即用型工具,底层算法接口未完全暴露,自定义扩展需修改源码或继承内部类,对初学者不够友好。所以为了深入学习slam,采用 cartographer 进行研究。

m0_74013893的博客 2507

ROS2实战:从零部署Cartographer激光SLAM系统

本文详细介绍了在ROS2 Humble环境下,从零开始部署Cartographer激光SLAM系统的完整实战流程。内容涵盖环境准备、Cartographer安装(APT与源码编译两种方式对比)、工作空间与功能包创建、核心启动文件与Lua配置文件编写、系统构建与可视化启动,以及地图保存与实战调参技巧,帮助开发者快速构建稳定可靠的机器人SLAM应用。

weixin_29213655的博客 248

激光SLAM算法改进:增强重定位的Cartographer算法实战

激光slam算法改进提出了一种增强重定位的cartographer算法,在五千平方车库中进行实验验证,实验结果表明:重定位耗时时间降低为3.35秒!提供改进后算法源码!在SLAM(Simultaneous Localization and Mapping,即时定位与地图构建)领域,激光SLAM一直是研究的热点。今天就来聊聊我最近做的关于激光SLAM算法改进的工作,提出了一种增强重定位的Cartographer算法,并且在实际场景中进行了验证,效果还挺不错的。

BBNbQKHXygfU的博客 359

Gmapping/Hector/Karto/Cartographer 4种2D激光SLAM算法实测:ROS小车建图效果与CPU占用对比

本文对比评测了Gmapping、Hector、Karto和Cartographer四种主流2D激光SLAM算法在ROS平台下的建图效果与CPU占用表现。通过统一测试环境下的量化数据,分析了各算法在建图精度、鲁棒性、资源占用等维度的优劣,为不同场景下的SLAM算法选型提供实用指南。

weixin_29065791的博客 343

Cartographer:开源激光SLAM的瑰宝

Cartographer是Google开源的一个2D和3D同时定位与地图构建(SLAM)的库。它被设计为使用现代多CPU架构的算法,可以提供高效和鲁棒的实时定位解决方案。Cartographer不仅支持2D激光雷达(LIDAR)SLAM,也支持3D视觉SLAM,并且可以与多种传感器进行融合。Cartographer的出现,为SLAM领域带来了巨大的变革。它在室内导航、移动机器人、自动化驾驶等多个领域被广泛应用。

weixin_42376614的博客 1565

Cartographer ROS2实战:从零搭建激光SLAM系统(附常见崩溃问题解决方案)

本文详细介绍了在ROS2环境下从零部署Cartographer激光SLAM系统的完整实战流程。内容包括稳定的源码版本选择、工作空间配置、核心Lua参数详解,并重点提供了针对‘collect_metrics重复定义’等常见崩溃问题的解决方案,帮助开发者快速搭建并调试稳定的SLAM系统。

grape的博客 909

candence layout快捷键

摁住鼠标左键再框选:选中 摁住鼠标右键再框选:放大 选中之后,滚动鼠标滚轮进行放大缩小。 F:回到全局 shift+V:缩小 键盘的箭头:移动视图 F1:显示帮助文档Candence help F2:保存 点击r,画出矩形时不双击鼠标,点击F3,可以设置尺寸。 Creat-Shape-Path Creat-Wiring-Bus:画多根线。F3设置线宽、间距等。 选中金属后,Shift+G画保护环guard ring。F3可以设置距离金属的间距、保护环的形状。 Path和Rectang

weixin_45861827的博客 2655

ROS2实战:从零部署Cartographer激光SLAM

本文详细介绍了如何在ROS2环境中从零部署Cartographer激光SLAM系统,包括环境准备、安装方法对比、工作空间配置、参数调优及实战测试等关键步骤。通过具体命令和配置示例,帮助开发者快速掌握ROS2与Cartographer的集成技巧,实现高效的激光SLAM部署与优化。

weixin_42520025的博客 217

从MCU到MPU:瑞萨RZN2L上手初体验,给Cortex-M工程师的Cortex-R52入门避坑指南

本文详细介绍了从MCU到MPU的过渡经验,特别是瑞萨RZN2L开发板的实战避坑指南。针对Cortex-M工程师转向Cortex-R52内核的挑战,文章深入解析了启动流程、内存管理、中断响应等九大本质差异,并提供了硬件设计陷阱和软件迁移的实用技巧,帮助开发者快速适应MPU开发环境。

weixin_29158413的博客 257

基于车牌识别的停车收费系统的设计与实现(源码+开题)

本系统(程序源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景: 随着城市化进程的加速和汽车保有量的增加,停车难成为了一个普遍存在的问题。传统的停车收费方式存在着效率低下、管理混乱等问题。因此,开发一款基于车牌识别的停车收费系统具有重要的现实意义。研究意义: 基于车牌识别的停车收费系统可以有效地解决传统停车收费方式在效率和准确性方面的问题,提高停车服务的效率和质量。

迟限程序设计 1392

2D激光SLAM巅峰:Cartographer完整系统拆解(Submap+分支定界回环)

本文将前三个模块(传感器模型、扫描匹配、位姿图优化)集成为一个完整的2D激光SLAM系统,并引入Cartographer的两大核心设计:Submap管理和分支定界回环检测。你将理解端到端SLAM流水线中每一帧激光数据如何处理,以及Submap如何平衡局部精度与全局一致性。文章附带完整的Python仿真验证。核心要点1:完整SLAM系统 = 传感器模型 + 扫描匹配 + Submap管理 + 位姿图优化 + 回环检测核心要点2:Submap将连续帧聚合成局部一致地图,完成后冻结,实现前端与后端的解耦。

weixin_43753382的博客 54

深入YOLOv8内部核心:用RepNCSPELAN4深度重构主干网络,即插即用的高效涨点方案

本文提出了一种改进YOLOv8目标检测模型的方法,通过在YOLOv8中引入RepNCSPELAN模块来提高检测性能。该模块融合了RepVGG重参数化思想与CSP-ELAN结构,在保持推理速度的同时增强特征表达能力。实验结果表明,改进后的RepNCSPELAN-YOLOv8相比原模型在多项指标上均有提升:准确率从0.84提高到0.86,召回率从0.72提升至0.81,mAP50和mAP50-95也分别提高了0.06和0.04。文章详细介绍了模块设计原理和移植步骤,包括配置文件创建、代码修改等关键环节,为YOL

FJN110的博客 186

Cartographer激光雷达SLAM终极指南:从点云滤波到特征提取

Cartographer是一个强大的开源**激光雷达SLAM**系统,专门用于处理大规模环境中的实时定位与建图。这个项目由Google开发,能够高效处理**点云数据**,通过**滤波算法**和**特征提取**技术,为机器人、自动驾驶等应用提供精准的环境感知能力。🚀 ## 🔍 什么是Cartographer激光雷达SLAM? Cartographer的核心功能是**激光雷达SLAM**(同时

gitblog_00175的博客 1056

YoloV8改进策略:轻量级的CloFormer助力Yolov8在速度和精度上实现双双提升

CloFormer是清华大学在今年发表的轻量级主干网络,引入了AttnConv,一种attention风格的卷积算子。所提出的AttnConv使用共享权重来聚合局部信息,并配置精心设计的上下文感知权重来增强局部特征。AttnConv和普通attention的结合使用池化来减少CloFormer中的FLOPs,使模型能够感知高频和低频信息。这篇文章主要向大家讲解如何将CloFormer加入到YoloV8中。论文链接:https://arxiv.org/abs/2303.17803v5。

m0_47867638的博客 4311

基于Simulink的电机热阻模型建立与仿真

本文详细介绍了基于Simulink的电机热阻模型建立方法。通过将电机传热路径分解为5段关键热阻(绕组内部、槽绝缘、铁芯、机壳、冷却系统),采用Simscape Thermal模块构建热阻网络模型。重点阐述了参数化热阻计算、实验数据校准、不同设计方案对比等关键步骤,并以15kW车用PMSM为例演示建模过程。文章还分享了非线性热阻处理、多维网络构建等高级技巧,指出该模型在热设计迭代、散热匹配、故障诊断等方面的重要工程价值,为电机热安全设计提供了有效的数字化解决方案。

xiaoheshang_123的博客 335

ROS自学实践(8):ROS进行激光SLAM建图——cartographer

本节主要记录运行谷歌cartographer方法,为后续理解这些代码,建立自己的SLAM算法打下基础。 图优化方法 2D/3D地图 精度高 1.安装ceres-solver包 (1)安装所需依赖 sudo apt-get install libgoogle-glog-dev libeigen3-dev libatlas-base-dev libsuitesparse-dev libmetis-...

qq_43066145的博客 2454

网络变更:APIC 节点替换

Fabric Name,Controller ID,TEP Address Pool 等信息必须相同;如果故障设备是 APIC1 还需要重新配置管理密码。此过程可能需要 10 分钟左右,在此期间目标 APIC 可能在 Available/Unavailable 状态翻滚。APIC 获取 TEP 地址后,进入 fully-fit。通过 CLI 以及配置的密码登录目标 APIC。

m0_54931486的博客 320
上一篇: 虚拟机(Ubuntu)与主机之间无法复制粘贴/拖拽问题
下一篇: Ubuntu下多个gcc、g++版本设置优先级
superbuffegg
博客等级 码龄6年 7粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superbuffegg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值