源码阅读:使用Cartographer进行毫米波SLAM(番外篇):最后整体过一下代码

老版本的滤波器用卡尔曼滤波 ,也就是做位姿预估的时候用卡尔曼


新版本改成位姿差值器   


有些新特性 


common  普通常用文件 不用看


transform和sensor 常用数据结构

mapping  一些基类   


主要看mapping2d和3d


mapping2d   :

scan match和sparse pose graph部分


最主要关注的文件 global_trajectory_builder    local_trajectory_builder    sparse_pose_graph   constraint_builder

另外还有 scanmatch里的  ceres_scan_matcher    csm: correlative scan matcher    fast_csm   real_time_csm


从 global_trajectory_builder开始:
主要函数:里程计数据的加入  IMU数据的加入  以及激光雷达数据的加入  或者是range传感器  前两个数据的加入都只是为了更新位姿跟踪器


增加水平激光雷达:分为两部分  一、local trajectory builder  :前端匹配

               二、s pose graph  :全局


进入前端匹配:

首先:进行位姿估计          有一个投影矩阵 把三维的位姿投影到2D  但一般不需要 因为是平面车辆

接下来,进行scan match    扫描匹配 也就是帧间匹配

计算完之后 得到一个位姿的方差 更新滤波器

后面都是 返回数据和数据处理


进入scanmatch   

首先 位姿预估器给你一个初始位姿 然后调用real time correlative scan match 进行扫描匹配

这个位姿又作为初始位姿来调用 ceres scan match得到最终位姿   原理在于: 第一个匹配对初值不敏感 但精度低  第二个优化对初始敏感 但精度高

具体流程:

得到拿来做匹配的地图   

得到预测的位姿

进行csm匹配   (correlative scan match)

调用优化  ceres scan match   

结束

然后用位姿更新一下位姿预估器


只讲csm

根据搜索参数  生成所有的解  给所有的解打分  打分就是占用概率的和

帧间匹配过程 没有加速策略  因为运动比较小  


简单说一下优化:

构造残差: 栅格得分  平移惩罚  旋转惩罚 三个

求解器

结束



local部分结束


进入global   addscan   


addworkItem   关键函数   可以认为是个队列  存储的是待执行的函数   在另一个线程里 从队列里取出来函数 来执行

存的是:  computeConstrainsForScan    

此计算为:  1、计算和insertion_submaps之间的约束   这里枚举执行了插入操作的submap  实际上没有计算 因为数据已经有了 求个逆就行了

2、计算和每个已经完成的submap的约束  实际上就是回环检测   枚举每一个完成了的submap     每个submap都调用MaybeAddConstrainsForScan函数来计算约束

此函数:最终实际上调用的是   ComputeConstraint  来计算一个submap和一个scan之间的约束关系

而这个函数调用的是fast Csm  也就是分支定界   做完之后再优化一次  


看来fast csm

多尺度的金字塔方法   在不同分辨率进行搜索  每个分辨率都对应一个栅格地图

最终搜索函数都是matchWithsearchParameters

    把scan数据进行旋转  离散化  然后生成最低分辨率的候选解  也就是最粗糙 然后进行打分和排序

    进行分支定界搜索

                BranchAndBound

                                        定界: 枚举每个解  如果候选解的得分比最小的得分还小     min_score相当于当前搜索过的所有解中最优解的得分  如果当前的解得分比这个分小 那这颗子树就全删掉 不再搜这个树

                                        分支:把一个节点分成四个节点 放入队列进行打分

                                        继续迭代


然后判断约束是否达成回环   进行优化

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容