pose_graph的优化变量和优化函数
1.优化变量
优化变量就是vertex,也就是pose,pose-graph的优化目标就是,调整所有vertex的位置来尽量满足所有边的约束。
上述的还是表层的理解,深一步理解:
pose-graph的边就是残差函数(哎,刚哥说的对呀),vertex就是优化变量,G2O封装残差函数比较好,直接封装成了边的形式,但是用ceres,残差函数就得自己构建,所以pose-graph的优化目标也就是一般优化问题的目标——残差函数尽可能小。
2.优化函数
可以参考白巧克力的介绍,假如有n个vertex,根据edge的约束,如果建立了n个残差方程(每个方程都是代表着不同vertex之间的关系),那么vertex就只有唯一解。但是通常情况下,一个pose-graph中构建的边都是 > n的,所以就构成了一个超定方程组(沁睿告诉过我的),此时就不存在唯一解了,问题就转化成了一个优化问题——求解所有残差方程的最优解,利用最小二乘就可以求解出尽量满足所有方程的最优vertex,或者用数值解法。
白巧克力的case跟我实际的pose-graph,还是有点区别:
白巧克力说的是通过多传感器,分别构建残差函数,每一个残差方程只有一种传感器/算法的信息,然后求解超定方程组;而我实习所构建的pose-graph的残差方程,每一个方程都是结合了多传感器/算法的结果,比如hobot的pose-graph的每一个残差方程都结合了loam/icp的信息,l3的pose-graph的每一个残差方程都结合了gps/点云feature match的信息。当然hobot和l3的本质一样,区别在于,初始位置一个由loam获得,一个由gps获得;修正信息一个由点云icp配准获得,一个由点云feature match获得。
白巧克力的case跟我实际的pose-graph,当然本质是一样的:
我们的每个方程都是代表着不同vertex(pose)之间的关系。
pose_graph的优化变量和优化函数的更多相关文章
- (四)ORBSLAM运动估计
ORBSLAM2的运动估计简介 ORBSLAM2中的运动估计核心方法就是3D-2D的PNP,而在跟踪过程主要分为三种类型: 无运动模型的跟踪,即基于参考帧的跟踪: 基于匀速运动模型的跟踪: 重定位: ...
- 深入理解图优化与g2o:图优化篇
前言 本节我们将深入介绍视觉slam中的主流优化方法——图优化(graph-based optimization).下一节中,介绍一下非常流行的图优化库:g2o. 关于g2o,我13年写过一个文档,然 ...
- 算法的优化(C语言描述)
算法的优化 算法的优化分为全局优化和局部优化两个层次.全局优化也称为结构优化,主要是从基本控制结构优化.算法.数据结构的选择上考虑:局部优化即为代码优化,包括使用尽量小的数据类型.优化表达式.优化赋值 ...
- Sequential Minimal Optimization(SMO,序列最小优化算法)初探
什么是SVM SVM是Support Vector Machine(支持向量机)的英文缩写,是上世纪九十年代兴起的一种机器学习算法,在目前神经网络大行其道的情况下依然保持着生命力.有人说现在是神经网络 ...
- ORB-SLAM(十二)优化
ORB-SLAM中优化使用g2o库,先复习一下g2o的用法,上类图 其中SparseOptimizer就是我们需要维护的优化求解器,他是一个优化图,也是一个超图(包含若干顶点和一元二元多元边),怎样定 ...
- BA优化PnP的思路
由之前的PnP,可以求出一个R,t,K又是已知的.而且空间点的世界坐标知道,第二个相机位姿的像素坐标也是知道的.就可以利用它们进行优化.首先确定变量为const vector<Point3f&g ...
- 姿态角(RPY)的优化目标函数
在Pose-Graph的过程中,如果使用G2O优化函数库,那么似乎是不用自己编写代价函数(也就是优化目标函数)的,因为G2O有封装好的SE3等格式,使得Pose-Graph的过程变得简单了,即只需要设 ...
- JavaScript性能优化
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍J ...
- 浅谈C51内存优化
对 51 单片机内存的认识,很多人有误解,最常见的是以下两种 超过变量128后必须使用compact模式编译,实际的情况是只要内存占用量不超过 256.0 就可以用 small 模式编译 128以上的 ...
随机推荐
- FastDFS与hadoop的HDFS区别
主要是定位和应用场合不一样 HDFS: 要解决并行计算中分布式存储数据的问题.其单个数据文件通常很大,采用了分块(切分)存储的方式. FastDFS: 主要用于大中网站,为文件上传和下载提供在线服务. ...
- docker系列之二:构建docker容器
1.创建在FlaskApp/app中创建Flask项目: 2.生成web项目所需的运行环境:pip3 freeze > ../requirements.txt 3.编辑Dockerfile: # ...
- 一、hexo+github搭建个人博客的过程记录
前提: 1.新建一个github仓库 2.安装配置Node.js 3.安装配置Git 前提 步骤1.新建一个github仓库 打开github网站,(注册)登录账号,新建一个仓库; 注:==仓库名称要 ...
- THUSC2019去不了记
因为泥萌都去SC了,就我在学校里考水考模拟,所以这就变成了水考模拟游记了 Day1 早上本来要到教室早读,发现教室被由年级前\(100\)的非竞赛生的dalao给占据了,发现聪聪在里面,于是进去愉快的 ...
- 递归---Day29
递归的概述 递归:指在当前方法内自己调用自己的方式叫做递归 递归的分类: 1.直接递归称为方法自身调用自己. 2.间接递归可以用A方法调用B方法,用B方法调用C方法,用C方法调用A方法. 递归的注意事 ...
- 自回归(auto-regression)机制
在每个新单词产生后,该单词就被添加在之前生成的单词序列后面,这个序列会成为模型下一步的新输入.这种机制叫做自回归(auto-regression),同时也是令 RNN 模型效果拔群的重要思想. GPT ...
- loadrunner安装和应用
问题:1.负载测试流程 2.为什么实现性能测试自动化 3.设置场景 (场景定义) 4.事物响应时间,吞吐量和吞吐率,正在运行vuser,windows资源,每秒点击次数,每秒http响应数. 5.i ...
- Maven项目配置Logback输出JSON格式日志
最近,项目提出需求,日志需要固定输出为JSON格式,以便后端Flink程序解析. 项目背景 项目为简单的Maven项目,日志由Filebeat采集,因此不需要配置输出至Logstash. 下面为pom ...
- 8皇后问题SQL求解(回溯算法)
问题 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题.该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一 ...
- python-job