机器人开发--Cartographer

  • 1 介绍
  • 2 流程
  • 3 代码结构
  • 3 代码结构
  • 参考

1 介绍

artographer是一款可以跨多个平台和传感器配置提供2D和3D实时同步定位和绘图(SLAM)的系统。这个项目提供了Cartographer的ROS集成。

cartographer是google推出的一套基于图优化的SLAM算法。cartographer算法并没有给人惊艳的感觉,但该算法的主要目标是实现低计算资源消耗,达到实时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.

2 流程

3 代码结构

引heimazaifei

  • mapBuilder:实现整个地图构建,包括前端local slam和后端 global slam。
  • 轨迹(trajectory): 可以理解为一次SLAM 从起点到终点过程中的机器人行走轨迹,建图中可以通过startTrajectory和finishTrajectory控制。在轨迹生成的过程中,完成sensor到sumap的生成,以及pose_graph的构建。TrajectoryBuilder(globalTrajectory类)主要通过sensor_collator(localTrajecory类)和pose_graph构成 。sensor_collator实现局部地图构建,最终结果传递给pose_graph;
  • 节点图(poseGraph):具体参考图优化的知识。简单理解图优化(如果没接触过图优化,下面估计看不懂,后续会详细讲):每个插入的激光和生成sumap,以及landmark(后续讲)都可以理解为图优化的一个节点,建图过程中,生成这些点之间的关系,这些关系便是图中的线,最终优化,就是调整点的位置,得到最优值。可以理解为PoseGraph主要实现全局优化(global slam)功能。
  • 代码流程:最终代码运行通过ROS node 方式实现。node中对应topic和service订阅和发布等功能通过MapBuilderBridge类实现。MapBuilderBridge顾名思义,实现ROS节点代码和cartographer功能代码之间的桥接,也可以理解为对cartographer主体代码的接口封装。cartographer主体代码主要功能通过构建地图MapBuilder类实现。此外,MapBuilderBridge 还包含sensorBridge类,实现传感信息ros格式和cartographer自定义格式之间的转换,这些传感器主要包括scan,imu,odom,tf 等。

3 代码结构

引linyicheng1

参考

1、Cartographer ROS Integration
2、对比几种在ROS中常用的几种SLAM算法
3、从零开始搭二维激光SLAM(类似高翔博士出的视觉SLAM14讲)
4、Cartographer源码阅读_预准备
5、SLAM- cartographer 简介与使用
6、github–cartographer
7、ROS–Cartographer
8、Cartographer源码阅读1——整体框架介绍
9、W. Hess, D. Kohler, H. Rapp, and D. Andor, Real-Time Loop Closure in 2D LIDAR SLAM, in Robotics and Automation (ICRA), 2016 IEEE International Conference on. IEEE, 2016. pp. 1271–1278.
10、cartographer 代码解读
11、linyicheng1博士

机器人开发--Cartographer相关推荐

  1. 用自己的机器人实现cartographer建图测试与地图保存应该这样做

    用自己的机器人实现cartographer建图测试与地图保存应该这样做 1.安装 2.测试 3.保存地图 亲测可行.(该教程使用github的代码地址,速度相对慢了一点,极速安装,请看这里: 极速安装 ...

  2. 400 多行代码!超详细 Rasa 中文聊天机器人开发指南 | 原力计划

    作者 | 无名之辈FTER 责编 | 夕颜 出品 | 程序人生(ID:coder_life) 本文翻译自Rasa官方文档,并融合了自己的理解和项目实战,同时对文档中涉及到的技术点进行了一定程度的扩展, ...

  3. 微信机器人开发SDK使用教程--养号任务停止

    微信机器人开发SDK使用教程--养号任务停止 case "PostStopWeChatMaintenanceTask": {// 养号任务停止 log.debug("we ...

  4. 如何给定两个gps坐标 算出航向角_机器人开发如何配置ROS中的TF变换关系?

    当我们进行机器人开发时,常常需要面对TF坐标转换,本文以 Autolabor Pro1 与思岚激光雷达为例,介绍ROS TF的使用. Autolabor Pro1是什么? Autolabor Pro1 ...

  5. 微信机器人开发SDK使用教程--删除朋友圈

    微信机器人开发SDK使用教程--删除朋友圈 case "DeleteSNSNewsTask": {// 删除朋友圈 log.debug("websocket:msgtyp ...

  6. 宁德时代机器人编程开发_高通发布5G机器人开发平台,内置强大AI算力。各大厂商竞相发布机器人处理平台,万物互联的时代即将到来...

    高通发布了强大机器人平台Robotics RB5 Platform,内置工业级QRB5165机器人处理器,拥有15TOPS AI 算力,强大的AI算力可应用于机器学习,增强计算机视觉,多摄像头并发处理 ...

  7. 微信机器人开发SDK使用教程--群发消息任务

    微信机器人开发SDK使用教程--群发消息任务 case "WeChatGroupSendTask": {// 群发消息任务 log.debug("websocket:ms ...

  8. 《智能对话机器人开发实战20讲》--学习笔记--AIML基础功能拓展-与互联网的集成

    一.学习笔记 环境要求: aiml bs4 语料库: tuling.aiml search_web.aiml <that>WHICH SEARCH ENGINE WOULD YOU LIK ...

  9. 智能对话机器人开发实战案例剖析(2)

    一.前言 本文是<智能对话机器人开发实战案例剖析>系列的第2篇:智能对话机器人分类标准,旨在对智能对话系统的进行一个系统性的介绍.相关内容已同步录制成视频课程,发布在网易云课堂. 二.正文 ...

最新文章

  1. jQuery Unveil – 另一款非常轻量的延迟加载插件
  2. 一个程序员如何做到结构上胸有成竹
  3. C# Winform播放多媒体文件 [AudioVideoPlayback ]
  4. java路径Java开发中获得非Web项目的当前项目路径
  5. 關于dotNet開發中的框架思考
  6. 大数据面试3分钟自我介绍_大数据开发工程师面试主要面试内容
  7. npm启动报错——端口被占用
  8. 我的中兴五年:加班为何成了底层员工心中永远的痛
  9. CS5216|DP转HDMI方案详解|分辨率1080P
  10. 2015年360校招笔试题
  11. 反向代理神器 Nginx Proxy Manager 群晖Docker部署
  12. 电脑链接wifi显示无法连接服务器,电脑连接wifi出现感叹号_电脑连接wifi成功但上不了网怎么办?-192路由网...
  13. webstorm下载安装教程
  14. java应届生如何找工作?
  15. 如何处理设计的条码与打印出来的不一样的问题
  16. 越南造车IPO估值3800亿
  17. windows重装系统教程
  18. eclipse中没有SVN,安装SVN
  19. 韩国电商平台 smelchi 店铺开店 数据批量采集上传
  20. 基于arm9的mbus集中器采集器持续改进

热门文章

  1. Go语言的string(底层结构+常用方法)
  2. IE8 浏览器性能解密
  3. EML转PST转换器
  4. 中层管理培训课程都包括哪些内容?中层管理者如何提高管理能力?
  5. 直接快速下载NLTK数据
  6. 飞桨亮相GTLC技术领导力峰会,共话 AI 技术的落地实践
  7. 知识分享之Golang——go-i18n的使用
  8. vue3路由children页面不显示
  9. 盈亏比例 php,()是指某一行业内企业的固定成本和可变成本之间的比例。A.财务报表结构B.盈亏平衡点...
  10. 摄影国外摄影师的分享