SLAM十四讲第六讲——优化问题

目录

优化问题

组成

形式

优化对象(位姿x)

目标函数/损失函数

约束条件(分为了无条件约束和有条件约束)

分类

        凸优化

        非凸优化

数据来源

批量式betch

增量式incremental

将上述问题用到第九章的滤波和优化

在本讲中,只考虑批量数据,在有现成数据和明晰的优化目标情况下,如何求解优化问题

优化对象

合理选择

目标函数

约束条件

问题求解

常见优化库

ceres

g2o

gtsam

osqp

CVX

MOSEK

ooQP

GLPK

建议

学习资料

最优化-建模、算法与理论

Numerical implementation

Lectures on convex optimization

Lectures on modern convex optimization


优化问题

组成

  • 形式

  • 优化对象(位姿x)

  • 目标函数/损失函数

  • 约束条件(分为了无条件约束和有条件约束)

分类

        凸优化

                条件:

                        1、目标函数是凸的

                        2、不等式约束是凸的

                        3、所在的空间是凸的

                        4、等式约束是仿射形式(affine)(AX=b) 

                常见形式:

                        1、

                                        

                        2、最常见——一般构造这种形式

                                        

                        3、

                                        

                        4、Second-order Conic Programming

                        5、Semi-Definite Programming                                                                                                                      

        非凸优化

                1、

                        

                 2、判断问题是凸的还是非凸的,同样也是一门学问

                 3、常见的处理思路,是借助松弛的思想,将非凸问题转化为近似凸问题

此时需要清楚原非凸问题中的哪个或哪些函数导致了非凸性,之后考虑的是如何利用凸优化模型来逼近原问题

说白了,就是保留原问题部分性质的条件下,使用简单的项替代目标函数中难以处理的项,进而使得问题更易求解。

数据来源

  • 批量式betch

一次性给定一批观测数据

如何根据这些数据估计出最准确的结果

  • 增量式incremental

数据是随着时间逐渐采集的

如何根据后面的数据调整之前的估计结果

  • 将上述问题用到第九章的滤波和优化

  • 在本讲中,只考虑批量数据,在有现成数据和明晰的优化目标情况下,如何求解优化问题

优化对象

合理选择

SLAM——位置、姿态、传感器参数

目标函数

目标函数的选择与要处理的问题密切相关

约束条件

注意:无约束优化往往比有约束优化更容易求解,我们很想把有约束优化化成无约束优化问题

将约束加在目标函数中

        1、拉格朗日函数

        2、罚函数

转换对象空间

        1、三角换元

        2、流行空间              

 问题求解

  • 解析解——求导,找极值点
  • 数值解——求梯度,找增量

常见优化库

  • ceres

代码开源,可用于求解具有边界约束的非线性最小二乘问题和一般无约束优化问题,google开发Ceres Solver — A Large Scale Non-linear Optimization Library

  • g2o

代码开源,用于解决非线性最小二乘问题,特定是将优化中涉及的对象用图(graph)的形式来表示OpenSLAM.org

  • gtsam

使用因子图和贝叶斯网络作为底层计算范式而不是稀疏矩阵来优化最可能的配置,Lio-sam

GTSAM | GTSAM is a BSD-licensed C++ library that implements sensor fusion for robotics and computer vision using factor graphs.​​​​​​

  • osqp

多位大牛联合开发,用来求解QP问题的求解器,用的人很多,很容易上手OSQP

  • CVX

MATLAB封装包,内嵌多种优化库CVX: Matlab Software for Disciplined Convex Programming | CVX Research, Inc.

  • MOSEK

适用的问题多,学生能免费用,无源代码,库仅支持x86Mosek ApS

  • ooQP

快速鲁棒的QP求解器,代码开源OOQP: Object-Oriented Software for Quadratic Programming

  • GLPK

快速鲁棒LP求解器,代码开源GLPK - GNU Project - Free Software Foundation (FSF)


建议

  • 优化只是一种解决问题的手段
  • 核心在于如何将问题构造成优化问题
  • 不要拘泥于某种优化工具,去尝试各种优化工具,不同的优化库特点不同,擅长的领域也各不相同

学习资料

最优化-建模、算法与理论

中文教材,介绍近年来经典算法流程和理论,可以用来入门

Numerical implementation

理论方面很全,还关注了优化模型在计算机有限精度下优化结果的稳定性和鲁棒性,具有很好的工程实践指导

Lectures on convex optimization

思路清晰,讲凸优化理论问题、光滑、非光滑、结构优化。。。

Lectures on modern convex optimization

关注锥优化、多项式求解复杂度问题

Casadi

用于数值优化和最优控制(即涉及微分方程的优化)的开源软件工具;使用算法微分有效地生成导数信息,建立、求解和执行常微分方程(ODE)或微分代数方程(DAE)系统地正向和伴随灵敏度分析,以及制定和解决非线性程序(NLP)问题和最优控制问题(ocp);可用于c++,Python和MATLAB,在性能上几乎没有差异;c++文档有限,python文档很全,最好从python入手CasADi

Acado

用于自动控制和动态优化的软件环境和算法集;它为使用各种算法进行直接最优控制提供了一个通用框架,包括模型预测控制、状态和参数估计以及鲁棒优化。ACADO工具包实现为自包含的c++代码,并附带用户友好的MATLAB界面。ACADO Toolkit

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值