来源丨古月居
点击进入—>3D视觉工坊学习交流群
自己只掌握了最优控制理论的皮毛,平时在进行无人车的规划、控制相关问题建模、求解时用的方法比较“野”,不是很规范、严谨。
前段时间在阅读李柏博士的博士论文《复杂约束下自动驾驶车辆运动规划的计算最优控制方法研究》时,看第一二遍时有着一种隔着一层窗户纸的“朦胧美”,看了多遍之后有点恍然大悟的感觉,哦 原来是这么回事!
文章中的第四章4.1节(45、46页)中提到,最优控制问题可以分为间接法、动态规划法和间接法:
以下几个例子均已MPC为例
动态规划求解方法:
之前在用MPC控制器进行无人车的横向控制时,想着可不可以把后续NP个时刻的前轮转角离散成N份(比如10份),简单点就直接在10的NP次方种情况中找出Cost最小的一个组合,要是嫌分辨率不够就在第一遍的求解基础上,用更小的分辨率再来一次搜索。
相当于一次粗调+一次精调,为了算法加速可以再用一些启发项减小搜索范围。
这些手段就和最短路径里的图搜索方法有些类似,归根到底他们都是最优化问题。
直接法的部分离散方法文中如是解释:
仅对控制变量U(t)进行离散化处理,在求解经离散化形成的NLP命题时,每一步优化迭代中均针对当前U(t)通过模拟((simulation)的方式生成对应的Y(t)、Z(t),在获得约束违背情况信息后执行下一步迭代。
由于在每步迭代中均需要通过模拟获得状态变量,部分离散方法对应的求解模式被称为序贯策略(sequential strategy)。
部分离散方法生成的NLP命题中的决策变量仅由描述U(t)的离散配置点构成,因此NLP问题的规模较小,但相应的序贯求解过程具有“模拟+优化”的双层嵌套计算结构,在处理复杂约束时将很大程度上影响总体求解效率。
先前在写MPC的代码时,开始就按照自己的理解将车辆的运动学状态方程约束放在了Cost里,这样需要优化的量就只有控制量 前轮转角delta,通过NP个时刻的delta就可以递推出无人车的状态量,以此构造出损失函数。
但是换了不同的求解方法,在迭代4、5步后就失败了,虽然带求解的量是少了,但是损失函数会很复杂求解效率低下、稳定差。
完全离散方法文章如是解释:
完全离散方法弥补了部分离散方法的缺陷,通过将U(t) , Z(t)以及Y(t))同时离散化,形成了包含原始命题中全部变量离散形式的NLP问题,基于完全离散方法进行求解的模式称为联立策略((simultaneous strategy)。
在使用完全离散方法建立的NLP问题中,U(t), Z(t)及Y(t)变量具有相等的地位,模拟与优化过程浑然一体,在每步迭代中同步进行、同时完成。
与序贯策略相比,联立策略在计算效率及求解稳定性方面具有显著的优势。
将状态方程这样的等式约束放在损失函数里这条路行不通,后来就将NP个时刻的状态量X(t)、U(t)都作为待优化量,这样Cost函数就全是平方项,约束项会多出由状态方程得来的等式约束,通过这样的改造后,最优求解就很稳定,车辆的控制效果也还不错。
续更:
三大类方法
1、HJB方程用于连续的情况,动态规划用于离散的情况。这一分支和强化学习有些相通之处
2、间接方法(先优化后离散):主要是变分法这一大分治,经典变分法局限性很大,庞特里亚金极小(大)值原理是对它的扩展
3、直接方法(先离散后优化):的shooting方法和collocation方法随着被控系统的复杂,被广泛应用。并且这类方法在完成离散形式的最优化问题后,可以直接使用state-of-the-art的非线性优化方法(如SQP、内点法)来完成高效的求解
参考文献
L. T. Biegler. An overview of simultaneous strategies for dynamic optimization. Chemical Engineering and Processing, 2007, 46(11): 1043-1053.
L. T. Biegler, A. M. Cervantes, and A. Wachter. Advances in simultaneous strategies for dynamic process optimization. Chemical Engineering Science, 2002, 57(4): 575-593.
本文仅做学术分享,如有侵权,请联系删文。
点击进入—>3D视觉工坊学习交流群
干货下载与学习
后台回复:巴塞罗那自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件
后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf
后台回复:3D视觉课程,即可学习3D视觉领域精品课程
3D视觉工坊精品课程官网:3dcver.com
1.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
2.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
3.国内首个面向工业级实战的点云处理课程
4.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
5.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
6.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
7.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
16.透彻理解视觉ORB-SLAM3:理论基础+代码解析+算法改进
重磅!粉丝学习交流群已成立
交流群主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、ORB-SLAM系列源码交流、深度估计、TOF、求职交流等方向。
扫描以下二维码,添加小助理微信(dddvisiona),一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿,微信号:dddvisiona
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看,3天内无条件退款
高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~