【激光SLAM】基于图优化的激光SLAM 方法(Grid-based)

文章目录

  • Graph-based SLAM
    • 数学概念
  • 非线性最小二乘(Non-Linear Least Square)
    • 解决的问题
    • 误差函数
    • 线性化
    • 流程
  • 非线性最小二乘在SLAM中的应用
    • 图的构建(SLAM前端)
    • 误差函数
    • 误差函数的线性化
    • 固定坐标系
    • 构建线性系统
    • 求解
  • Cartographer介绍

Graph-based SLAM

数学概念

非线性最小二乘(Non-Linear Least Square)

解决的问题

  • 给定一个系统,其状态方程由f(x) = z描述。其中:
    • x为该系统的状态向量——即需要估计的值(在激光SLAM中就是机器人的位姿)
    • f(x)是一个非线性的映射函数
    • 状态向量x,可以通过非线性函数f(x)映射得到z,此时的z为预测得到
    • z表示系统的可观值,可以通过传感器进行直接观测
  • 给定该系统的n个混有噪声的观测值(z1,…,zn),估计状态向量x,使得其经过f(x)映射之后的预测值和观测值的误差最小
  • 跟非线性最小二乘基本相同,不同之处在于f(x)是一个非线性函数

误差函数

目标为最小化预测和观测的差,因此误差即为预测和观测的差:

假设误差服从高斯分布,因此其对应的信息矩阵为Σi,即观测值的可靠性。如果越信任该观测值,Σ就越大,则E就越大,越优先最小化这个误差。则因此该观测值误差的平方定义为:

每一个观测值都有不同的可靠性,因此我们实际上采用加权最小二乘,对每一个误差项我们都有一个权重矩阵(即信息矩阵)来进行加权。所以非线性最小二乘的目标函数为:


直接想法: 求F(x)关于变量x的导数,令其等于0,求解方程即可。
对于线性问题,该方法可以正确,但是对于非线性问题不正确。因此,对于F(x)这样关于x的非线性方程。我们使用泰勒展开对其线性化

线性化

F(x)是关于x的非线性函数的原因是,误差函数ei(x)是一个非线性函数。因此直接对误差函数ei(x)进行线性化即可:

其中J为映射函数对状态向量x的导数,称之为Jacobian矩阵:

因此函数F(x)的可化解为:

F(x+Δx)为关于变量∆x的二次函数,其极值可通过令其关于∆x的导数等于0求解得到:

令x = x + ∆x,然后不断迭代,直至收敛即可。

流程

  1. 线性化误差函数:

  2. 构建线性系统:

  3. 求解线性系统:

  4. 更新解,并不断迭代直至收敛:

非线性最小二乘在SLAM中的应用

图的构建(SLAM前端)

误差函数


误差函数的线性化



固定坐标系

观测值观测到的值两个位姿之间的相对位姿。但是满足相对位姿约束的解有无穷多组。为了让解唯一,必须加入一个约束条件让某一个位姿固定,一般选择第一个位姿,即:

等价于加入的约束为:

求解的线性系统为:

因此等价于:

构建线性系统

求解

Cartographer介绍

  • 基于图优化的SLAM算法
  • 比较完善的匹配系统,包含建图和定位
  • 目前效果最好的开源激光SLAM系统
  • 有人在专门的维护,不断增加新的特性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab 凸轮轮廓设计

1、内容简介 略 46-可以交流、咨询、答疑 2、内容说明 略 4 取标段的分析 取标装置是贴标机的核心部件之一,是影响贴标质量和贴标精度的重要因素,取标段是通过取标板与标签的相切运动使得涂有胶水的取标板从标签盒中粘取标签纸[4],理论…

程序员的护城河是什么?最终走向……?

程序员未来会大量失业,就是因为社会需求少,导致开发者岗位减少,人力资源过剩所导致。Android刚开始的零几年非常火热,是个人都要。到如今的内卷,高级开发都拿着中低程序员的薪资。这是因为头部大厂形成标准化&#xff…

【总结】Maxwell学习笔记

1.Maxwell简介 Maxwell 是一款用Java编写的MySQL变更数据抓取软件,它会实时监控Mysql数据库的数据变更操作(包括insert、update、delete),并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台 官网地址:M…

利用HubSpot出海营销CRM扩大企业在东南亚市场的影响力

东南亚市场作为全球最具活力和潜力的市场之一,吸引着越来越多的企业前来拓展业务。在这个竞争激烈的市场中,如何高效地管理营销和客户关系成为了企业成功的关键。今天运营坛将介绍如何利用HubSpot这一出海营销CRM工具,实现在东南亚市场的影响…

本地部署ChatGPT

发布一下我之前做的一个本地大模型部署,不需要API key,但要有自己的账号 利用Docker 的Pandora做本地ChatGPT模型部署 先下载安装Docker,设置好运行如下 会要求升级核心,cmd运行如下命令就OK 安装Pandora 再管理员cmd中输入如下命令拉取Pandora镜像 docker pull pengzhi…

js之事件代理/事件委托

事件代理也叫事件委托,原理:利用DOM元素的事件冒泡,指定一个事件的处理程序就可以管理某一类型的所有事件。 事件冒泡和事件捕获 如上图所示,事件传播分成三个阶段: 捕获阶段:从window对象传导到目标节点&…

【MySQL面试复习】详细说下事务的特性

系列文章目录 在MySQL中,如何定位慢查询? 发现了某个SQL语句执行很慢,如何进行分析? 了解过索引吗?(索引的底层原理)/B 树和B树的区别是什么? 什么是聚簇索引(聚集索引)和非聚簇索引…

猫毛过敏却想养猫时?如何缓解猫毛过敏?宠物空气净化器推荐

作为一个新养猫的主人,一开始并没有发现对猫咪过敏。直到养了半年才意识到这个问题,而此时我已经和猫咪有了深厚的感情。我不想放弃我的猫咪,但是留着它的话,我经常会因为流眼泪、打喷嚏、眼睛发红等过敏症状而影响日常生活&#…

Unity编辑器扩展之Text组件中字体替换工具

想要批量化替换项目预制体资源中Text组件引用的Font字体文件,可以采用以下步骤。 1、在项目的Editor文件中,新建一个名为FontToolEditor的C#脚本文件,然后把以下代码复制粘贴到新建的FontToolEditor的C#脚本文件中。 using System.Collect…

【深度学习笔记】3_14 正向传播、反向传播和计算图

3.14 正向传播、反向传播和计算图 前面几节里我们使用了小批量随机梯度下降的优化算法来训练模型。在实现中,我们只提供了模型的正向传播(forward propagation)的计算,即对输入计算模型输出,然后通过autograd模块来调…

哪只基金更值得买入?学会这套BI基金分析逻辑,稳赚不赔

投资基金是一种出色的理财方式,对于初次涉足基金领域的投资者而言,首先需要解决两个关键问题:一是基金是否值得投资?二是如何选择适合自己的基金? 以往盲目跟随成功的基金经理,或者仅仅依赖历史涨跌经验的…

消息中间件之RocketMQ源码分析(十七)

Broker CommitLog索引机制的数据结构 ConsumerQueue消费队列 主要用于消费拉取消息、更新消费位点等所用的索引。源代码参考org.apache.rocketmq.store.ConsumerQueue.该文件内保存了消息的物理位点、消息体大小、消息Tag的Hash值 物理位点:消息在CommitLog中的位点值消息体…

Android 水波纹扩散效果实现

人生只是一种体验,不必用来演绎完美。 效果图 View源码 package com.android.circlescalebar.view;import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.animation.…

el-tab-pane标签页如何加图标

效果如下 主要修改 <el-tab-pane name"tab6" v-if"subOrderType 10 && urlname ! wgSalesTerminationOrder"><span slot"label"> 售后判责<span class"el-icon-warning" style"color:#F66B6C;"&…

TensorFlow训练大模型做AI绘图,需要多少的GPU算力支撑

TensorFlow训练大模型做AI绘图&#xff0c;需要多少的GPU算力支撑&#xff01;这个问题就涉及到了资金投资的额度了。众所周知&#xff0c;现在京东里面一个英伟达的显卡&#xff0c;按照RTX3090(24G显存-涡轮风扇&#xff09;版本报价是7000-7500之间。如果你买一张这样的单卡…

【MySQL面试复习】谈一谈你对SQL的优化经验

系列文章目录 在MySQL中&#xff0c;如何定位慢查询&#xff1f; 发现了某个SQL语句执行很慢&#xff0c;如何进行分析&#xff1f; 了解过索引吗&#xff1f;(索引的底层原理)/B 树和B树的区别是什么&#xff1f; 什么是聚簇索引&#xff08;聚集索引&#xff09;和非聚簇索引…

原型设计工具Axure RP

Axure RP是一款专业的快速原型设计工具。Axure&#xff08;发音&#xff1a;Ack-sure&#xff09;&#xff0c;代表美国Axure公司&#xff1b;RP则是Rapid Prototyping&#xff08;快速原型&#xff09;的缩写。 下载链接&#xff1a;https://www.axure.com/ 下载 可以免费试用…

一个Post请求入门NestJS的路由与控制器

​ NestJS的控制器 控制器负责处理传入请求并向客户端返回响应。 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。 通常&#xff0c;每个控制器都有不止一条路由&#xff0c;不同的路由可以执行不同的操作。 在使用了脚手架的项目中&#xff0c;我…

【Java程序员面试专栏 算法思维】四 高频面试算法题:回溯算法

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊回溯算法,主要就是排列组合问题,所以放到一篇Blog中集中练习 题目关键字解题思路时间空间岛屿数量网格搜索分别向上下左右四个方向探索,遇到海洋…

生成式 AI - Diffusion 模型的数学原理(5)

来自 论文《 Denoising Diffusion Probabilistic Model》&#xff08;DDPM&#xff09; 论文链接&#xff1a; https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 讲到这里还没有解决的问题是&#xff0c;为什么这里还要多加一个噪声。Denoise模型算出来的是高斯分布的均…