庞特里亚金最小值原理求解能耗最小化的时间最优OBVP问题
本文依据论文A computationally efficient motion primitive for quadrocopter trajectory generation中所述的方法,整理出其中对OBVP问题的求解方法。所谓的OBVP即为optimal boundary value problem。
OBVP是特殊的BVP问题,最简单的BVP问题就是state sampled lattice planning,这其实也是一种lattice planner方法。常见的例子比如:给定初始位置和终点位置,求解多阶曲线方程。
如果这条曲线是个五阶多项式:
给定初始位置和终点位置a,b,则系数求解为:
现在讨论OBVP方法,我们给定初始位置,和重点位置的,再给定一个objective function, 比如我们论文中描述的,objective function只考虑jerk的平方。那么问题的状态和位置速度加速度相关,系统的输入为jerk = u, 状态空间即为速度,加速度,jerk的函数,总结如下:
对于这个问题,我们用庞特里亚金最小值原理求解:
最小值原理的基本内容:
先写出hamiltonian,这个g就是objective function中的transition cost, f 就是状态方程(上面的system model):
那么在本问题中,对应的g就是 j^2, f就是三个系统状态 a, v, j.写出如下的表达式:
根据上面的最小值原理基本内容:
我们计算lamda梯度(H分别对 p,v,a求导数,因为s是关于这三个参数的函数):
然后积分获得lamda表达式(这里对系数稍作了处理,是为了后面计算结果好看):
继续看最小值原理:
我们的lamda已经求解出来了,而且其中s是打星号(optimal)的,所以在H里面:
v和a都是知道一定是最优解的,那么只要算一下j是多少就行了。求一下一阶导数就能算出j的值,再带入H的表达式,得到:
对u做一次积分得到a, 在积分得到V,在积分得到p:
整理一下:
这里算逆矩阵可以自己验算一下:
%%
clear all; close all;
syms delta_p delta_v delta_a
syms TVariants = [1/120*T^5 1/24*T^4 1/6*T^3;1/24*T^4 1/6*T^3 1/2*T^2;...1/6*T^3 1/2*T^2 T];inv_Variants = inv(Variants)
结果没问题:
inv_Variants =[ 720/T^5, -360/T^4, 60/T^3]
[ -360/T^4, 168/T^3, -24/T^2]
[ 60/T^3, -24/T^2, 3/T]
然后得到alpha, beta, gamma后,带入objective function,
具体推导如下:
对cost function求一阶导数就知道T在什么时候可以取到minimum cost了,这里很有趣,objective function只和T相关。这也就是我们所谓的最小时间问题。
最后,还有其他终点的情况也要讨论一下,比如刚才的问题限制了终点的p,v,a,那么如果放开a的限制该如何求解。这里用到边界条件:
另外两个条件依旧不变,具体推导如下:
验证一下结果:
clear all; close all;
syms delta_p delta_v delta_a
syms TVariants_2 = [1/120*T^5 1/24*T^4 1/6*T^3;1/24*T^4 1/6*T^3 1/2*T^2;...1/2*T^2 - T T-2 1 - 2/T];inv_Variants_2 = inv(Variants_2)
结果如下:
inv_Variants_2 =[ 320/T^5, -120/T^4, -20/(3*(- T^2 + 2*T))]
[ -200/T^4, 72/T^3, -8/(3*(T - 2))]
[ 40/T^3, -12/T^2, T/(3*(T - 2))]
最后一项是0就不要管它了,所以解出表达式为:
其他的情况就不一一证明了:
庞特里亚金最小值原理求解能耗最小化的时间最优OBVP问题相关推荐
- 【微服务架构】在微服务架构中最小化设计时间耦合
理查森:我是克里斯·理查森.欢迎来到我关于在微服务架构中最小化设计时耦合的演讲.在这次演讲中,我将回答三个问题.什么是设计时耦合?这会造成什么问题?我们如何设计松散耦合的服务?这些年来我做了一些事情. ...
- js最小化浏览器_「译」解析、抽象语法树(ast) +如何最小化解析时间的5个技巧...
前言 该系列课程会在本周陆续更新完毕,主要讲解的都是工作中可能会遇到的真实开发中比较重要的问题以及相应的解决方法.通过本系列的课程学习,希望能对你日常的工作带来些许变化.当然,欢迎大家关注我,我将持续 ...
- 批处理 窗口最小化 java_如何让批处理程序启动的时候最小化
如何让批处理程序启动的时候最小化 更新时间:2007年02月28日 00:00:00 作者: 让批处理程序启动的时候最小化的实现代码,其实大家可以通过vbs隐藏bat的运行更好. 批处理隐藏运行 ...
- 最小化重投影误差(BA法)求解PnP
1.引言 PnP算法是什么.用途以及部分求解方法我在PnP算法详解(超详细公式推导)中介绍过,但在那篇文章中基于基于优化的PnP求解方法我没有讲,因为我觉得这个方法比较重要,涉及一些李群李代数求导和非 ...
- l20范数最小化求解系数方程_贪婪组稀疏方法(Greedy group sparsity)
l20范数最小化求解系数方程_贪婪组稀疏方法(Greedy group sparsity) 本文章部分参考Fast group sparse classification l20范数最小化求解系数方程 ...
- 半监督学习笔记(四):熵最小化、代理变量
半监督学习笔记(四) 昨天的更新中,我们学习了几种基于对抗方法的一致性正则化的策略,接下来让我们做一个简单的复习: 1. Fast-SWA:采用了退火算法的思想,逼近多个最小值点后求平均. 2. Vi ...
- LeetCode 2035. 将数组分成两个数组并最小化数组和的差
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.算法详解 3.时间复杂度 4.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 给你一个 ...
- 近端算法:近端最小化(Proximal minimization)、近端梯度(PG)、加速近端梯度(APG)、ADMM
近端算法 基本介绍及定义 定义 工作原理 性质 近端算子解释 Moreau-Yosida正则化 次微分算子的预解 修正梯度步长 信任区域问题 近端算法(Proximal Algorithms) 近端最 ...
- 最小化局部边际的合并聚类算法(中篇)
作者:钱烽 三.合并聚类算法 基于定义2所提出的相似度定义,我们在图2中给出最小化局部边际的合并聚类算法详细执行过程.首先,针对数据集中可能存在的噪声数据,我们对所有样本点进行孤立点检测.然后,作为A ...
最新文章
- 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看
- Homework_4 四则运算 - C#版
- js return 后 运行 另_新手入门Nest.js(六) 控制器Resources、路由通配符
- 重大革新!Dubbo 3.0来了
- 【POJ】3268 Silver Cow Party
- php给别人写接口,php给客户端写接口记录
- 李彦宏:“最后一公里”的自动驾驶会提前实现
- K近邻算法的kd树实现
- Learn OpenGL(二)——顶点输入(Vertex Input)
- 【渝粤题库】陕西师范大学800005 人文地理学
- python诗歌文件格式处理_Python诗歌的依赖版本语法
- python暴力解压rar压缩包
- 【数据库】三级模式两级映射详解
- 服务器架设项目实训,计算机组网项目实训
- git commit message——git提交日志规范备忘
- python编辑器geany_另外一款编辑器 Geany
- 谷歌插件开发ajax请求,谷歌扩展程序设置ajax请求容许跨域(极少人知道的解决方案)...
- 栈顶指针和队尾指针指向当前位置和指向下一个位置的区别?——轻松搞懂栈和队列指针的指向问题
- 【和81】基于复杂价值链的合作价值界定(温微观察13-11)
- IMSI,TMSI,MSISDN, MSRN 和 IMEI
热门文章
- 计算机算法设计与分析读后感,算法设计与分析基础经典读后感有感
- rocketmq一个topic多个group_SpringBoot和RocketMQ的简单实例
- 神州数码笔试题C语言,神州数码程序类笔试题分享
- mysql5.7导出数据_mysql5.7导出数据时出现--secure-file-priv选项应对方法
- c语言中 flag.bit7,利用proteus学习ARM(LPC2103)之二:熟悉IAR C语言开发环境
- 邯郸计算机三加二专大专学校,双辽中专学校有保障,32学校排名
- spring boot: 支持jsp,支持freemarker
- 【leetcode 简单】 第三十五题 环形链表
- java九种数据类型以及封装类
- 蓝桥杯 基础练习 高精度加法