首页 > 其他分享 >基于软/硬约束的轨迹生成

基于软/硬约束的轨迹生成

时间:2023-02-18 01:11:39浏览次数:38  
标签:轨迹 frac mathrm 约束 mu right 生成 left

问题提出

存在的问题

基于minimum snap生成的轨迹,我们控制的是waypoint,但是在轨迹生成的时候可能出现“overshoot”的现象,产生碰撞。

解决思路

  • 在障碍物上加”推力“

  • 在可通行区域加约束

通常将第一种情况变成【软约束】的优化问题,将第二种情况变成【硬约束】的优化问题

硬/软约束的概念

  • 硬约束

在整个x的定义域内,都要【严格满足等式约束和不等式约束】

\[\begin{matrix}\min&\quad f\left(x\right)\\ s.f.&\quad g_i\left(x\right)=c_i,\quad i=1,\cdots,n\quad\text{Equality constants}\\ &\quad h_j\left(x\right)\ge d_j,\quad j=1,\cdots,n\quad\text{ bluequality constraints}\end{matrix} \]

  • 软约束

将等式约束和不等式约束融入了目标函数中

\[\text{min}\quad f(x)+\lambda_1\cdot g(x)+\lambda_2\cdot h(x) \]

使结果倾向于满足约束条件,而不是严格被满足,\(\lambda_1\cdot g(x)+\lambda_2\cdot h(x)\)被称为惩罚项/损失函数(loss function),有很多种常见的loss function,比如:

硬约束

Corridor based Trajectory Optimization

框架

  1. 将环境信息载入八叉树地图
  2. 用path-finding的方法,在地图上搜索出一条安全的路径(安全走廊)
  3. 将安全走廊在地图中进行膨胀
  4. 在膨胀后的安全走廊中进行轨迹生成

轨迹生成

  • 分段多项式轨迹函数与minimum snap和minimum jerk是一样的:

\[f_\mu(t)=\begin{cases} \sum_{j=0}^N p_{1J}(t-T_0)^J&T_0\leq t\leq T_1\\ \sum_{J=0}^N p_{2J}(t-T_1)^J&T_0\leq t\leq T_1\\ \vdots&\vdots&\vdots\\ \sum_{J=0}^N p_{MJ}(t-T_{M-1})^J&T_0\leq t\leq T_1\end{cases} \]

  • 优化的目标函数也是一样的

\[J=\sum_{\mu\in\{x,y,z\}}\int_{0}^{T}\left(\frac{d^{k}f_{\mu}(t)}{d t^{k}}\right)^{2}d t \]

  • 约束条件有所不同

由于我们是在安全走廊里进行优化的,并没有指定waypoint,因此waypoint的导数约束是没有的,取而代之的是安全性约束,具体的约束有:

  • Instant linear constraints::

起点和终点的状态约束(\(Ap=b\))

Transition point 的约束(\(Ap=b,Ap≤b\))

我们希望在每个凸包内生成的轨迹都是被bound在凸包内的,但是这是一件比较困难的事情,可以先这样做,将分段的轨迹的连接点(Transition point),bound在两个凸包的公共区域内。

但是这样做也是不够的,轨迹也可能落在凸包外面,安全性不完备

连续性约束(\(Ap_i=b_i\))

  • Interval linear constraints:

边界约束(\(\textbf{A}(t)\textbf{p}\leq\textbf{b},\forall t\in[t_l,t_r]\)),整条轨迹的边界约束是很难施加的,除非将T离散化非常细,然后进行约束,但是这样会大大增加凸优化问题的约束数量,导致求解非常困难,通常采取后验的方式

动力学约束(\(\textbf{A}(t)\textbf{p}\leq\textbf{b},\forall t\in[t_l,t_r]\)),和边界约束同样的问题,难以施加,通常采取后验的方式

  • 优点:效率非常高,质量非常高,由于没有了waypoint这种fixed的点,优化的自由度被大大增加了,能够自动找到最优的Transition point,而且可以隐式的调节时间分配的问题,在fixed的waypoint的时候如果T分配不好,得到的轨迹也不是很好,而现在point是可以在凸包交集里动的,因此可以隐式的调节时间分配带来的影响

  • 问题,全局边界和动力学的interval的约束是很难施加的
  • 解决方法:

在轨迹生成之后做检查,不需要将t离散化逐个检查,检查极值即可,如果超过边界,继续施加新的约束,将极值往下压,可以收紧一些约束,然后迭代检查,约束,求解,需要多次求解QP,对在线求解速度施加了压力,而且有没有解,都需要进行多次迭代才能看出。

Bezier Curve Optimization

从普通多项式曲线转到贝塞尔曲线

用Bernstein polynomial代替monomial polynomial,贝塞尔曲线

\[\begin{array}{c}{{B_{j}(t)=c_{j}^{0}b_{n}^{0}(t)+c_{j}^{1}b_{n}^{1}(t)+\cdots+c_{j}^{n}b_{n}^{n}(t)=\sum_{i=0}^{n}c_{j}^{i}b_{n}^{i}(t)}}\\ {{b_{n}^{i}(t)={\binom{n}{i}}\cdot t^{i}\cdot(1-t)^{n-i}}}\end{array} \]

monomial polynomial各阶的系数和Bernstein polynomial各阶系数是一一对应的,\(p = M c\)

\[For 6 order: \mathbf{M}=\left[\begin{array}{ccccccc}1 & 0 & 0 & 0 & 0 & 0 & 0 \\-6 & 6 & 0 & 0 & 0 & 0 & 0 \\15 & -30 & 15 & 0 & 0 & 0 & 0 \\-20 & 60 & -60 & 20 & 0 & 0 & 0 \\15 & -60 & 90 & -60 & 15 & 0 & 0 \\-6 & 30 & -60 & 60 & -30 & 6 & 0 \\1 & -6 & 15 & -20 & 15 & -6 & 1\end{array}\right] \]

贝塞尔曲线性质

  • Endpoint interpolation:贝塞尔曲线总是从第一个控制点开始,在最后一个控制点结束,永远不经过任何其他控制点。
  • Convex hull:贝塞尔曲线

    标签:轨迹,frac,mathrm,约束,mu,right,生成,left
    From: https://www.cnblogs.com/chenjq12/p/17131863.html

相关文章

  • 美团leaf生成Id
    美团lef有两种模式:​Leaf-segment:数据库一次下发一个号段的号,或者说每次下发指定步长的内的Id,然后又内存控制分配id的生成,并且发号程序会持有两个segment,当前......
  • Java代码生成PDF2.0(包括文字图片)+PDF加水印+PDF转图片
    1.开源框架支持iText,生成PDF文档,还支持将XML、Html文件转化为PDF文件;(简单但是得下载软件)ApachePDFBox,生成、合并PDF文档;(类似于itext)docx4j,生成docx、pptx、xlsx文档,支......
  • 【MybatisPlus】条件构造器Wrapper、分页查询、自定义SQL、Service层接口、代码生成器
    MybatisPlus基础篇(目录)1.条件构造器Wrapper1.1概述​ 我们在实际操作数据库的时候会涉及到很多的条件。所以MP为我们提供了一个功能强大的条件构造器Wrapper。使......
  • javascript 高级编程系列 - 迭代器/生成器
    1.迭代器(Iterator)特殊对象,具有迭代过程的接口next()方法每次调用next()方法,返回一个结果对象结果对象有两个属性value(任何类型)和done(布尔类型)当集合的值返回完时......
  • 图的最小生成树--小白进阶篇
    情景导入:      最近同学小i,我们姑且叫他小i同学,他最近不知道迷上了旅游,常常在夜深人静的时候,突然仰天大笑,”明天我要做个惊天地泣鬼神的决定,我要去旅行“,然后......
  • 类的静态成员函数调用该类的非静态成员函数(Qt使用Halcon生成的程序)
    在Qt使用Halcon生成的程序时遇到的问题。由于Halcon中的结果是要传到Qt中的,所以将生成的程序都放到了类QtOCR中(该类继承QObject)。而Halcon线程生成的线程函数是静态的,并且......
  • 【LeetCode】括号生成
    括号生成题目数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()((......
  • JavaDoc生成文档
    参数信息:@author 作者名@version版本号@sinse指明需要最早使用的jdk版本@param参数名@return返回值情况@throws异常抛出情况 ......
  • 使用 html2Canvas 与 JsPDF 生成海报和pdf文件下载等业务,解决pdf分页样式问题
    需求场景吧页面元素内容转成图片,生成一个海报保存或者上传服务器当前元素内容生成一个pdf文件完成下载到客户端,并且上传到服务器1.开发前的准备//元素转图片npm......
  • JWT(生成Token令牌)
    .NetCore配置使用什么是JWT(详情在面试.md中有)JWT是目前最流行的跨域身份验证解决方案,JWT的原则是在服务器身份验证之后,会返回一个Json数据,,之后,当用户与服务器通......