【轨迹生成】参数化最优控制 约束-控制-图形参数_轨迹 时间参数化_BRAND-NEO的博客-程序员秘密

技术标签: 运动规划  算法  

Reactive Nonholonomic Trajectory Generation via Parametric Optimal Control

Alonzo Kelly
Bryan Nagy



1. 车辆的运动模型

  • 车辆运动描述
    在这里插入图片描述

  • 车辆状态
    在这里插入图片描述

  • 控制输入–决定速度和曲率变化
    在这里插入图片描述

  • 换元得到距离s的函数
    在这里插入图片描述

2. 轨迹最优化问题

给定起点、目标点的状态(包括位姿、曲率,也可以包括速度)等,找到一个合适的控制输入,产生相应的轨迹,且轨迹需要满足动态模型的约束、且不触碰障碍物。这样的控制输入可能不存在,也可能存在,甚至存在多个,那么需要从多个合乎要求的控制输入中找到最优控制。


3. 最优化控制公式

  • 非线性系统运动方程
    在这里插入图片描述
  • 评估函数,可以看出它与末状态及整条路径的情况有关,我们的最优化问题实际上是使J函数最小化
    在这里插入图片描述
  • 起点和目标点需要满足的约束
    在这里插入图片描述
  • 控制输入有界,其变化速度也有界,约束如下
    在这里插入图片描述

4. 问题转化–服从约束条件的最优解

  • 引入参数p,p为和轨迹形状相关的一系列参数,那么它自然将决定各时刻的控制输入,即
    在这里插入图片描述

  • 由于控制u将决定状态x,且二者共同决定 x ˙ \dot x x˙,那么此时 x ˙ \dot x x˙将由参数p决定
    在这里插入图片描述

  • 将起点与目标点(甚至可以使轨迹上的一系列指定要到达的点)称为边界状态,由初始状态加上 x ˙ \dot x x˙的积分得到,其值需要与我们的要求(表示为 x b , x_b, xb向量)相等
    在这里插入图片描述

  • 将上式变形如下,得到边界条件约束的标准形式
    在这里插入图片描述

  • 那么轨迹最优化可以公式化描述如下,即服从g=0约束条件下的J函数最小化问题(且参数p有界)
    在这里插入图片描述
    在这里插入图片描述

  • 换元,q是包含p和s的向量,进一步地,上述最优化公式可以写为
    在这里插入图片描述
    在这里插入图片描述


5. 拉格朗日乘数法求解–有约束条件的多元函数极值

  • 用J和约束g构造构造拉格朗日函数
    在这里插入图片描述

  • 极值条件需要满足H对q和λ的偏导数之和=0
    在这里插入图片描述
    在这里插入图片描述

  • 上式变形(f(x)=0=>f(x)+f’(x)△x=0)
    在这里插入图片描述
    在这里插入图片描述

  • 矩阵形式
    在这里插入图片描述

  • 实际上相当于令J对q的偏导数和g对q的偏导数分别=0,前者体现无约束条件的最优化,后者体现约束条件。


6. 例:螺旋曲线Clothoids 和多项式曲线Polynomial Spirals

  • 螺旋曲线
    可以发现,当产生螺旋曲线式的轨迹时,有两个参数a、b,当s=0即起始点处,曲率为a,随着s的增大,曲率以b的速度增加。然而这样的曲线参数太少,当给定了起点的曲率和目标点位置时,无法保证目标点处的曲率满足要求,甚至连朝向都不一定能满足。
    在这里插入图片描述
    在这里插入图片描述

  • 多项式曲线
    多项式曲线的参数更多,可以满足更多的边界条件
    在这里插入图片描述
    在这里插入图片描述

给出控制的形式后,很容易通过积分运算得到朝向、x、y随s的变化(这里默认起点位置0,0,朝向0)
在这里插入图片描述
在这里插入图片描述
假设我们总共需要满足的边界条件有8个:
在这里插入图片描述
而在通过积分构造,默认 x 0 、 y 0 、 Θ 0 = 0 x_0、y_0、Θ_0=0 x0y0Θ0=0,故前三个约束是自然满足的,还剩五个约束需要去满足,即 k 0 、 x f 、 y f 、 Θ f 、 k f k_0、x_f、y_f、Θ_f、k_f k0xfyfΘfkf

在这里插入图片描述
而恰好有五个参数
在这里插入图片描述
首先考虑 k 0 k_0 k0,将s=0带入k(s),即可得到,要满足 k 0 k_0 k0的约束只需

在这里插入图片描述
对于剩下四个边界条件:
在这里插入图片描述

7. 评价函数J的设计

1) 边界条件可以不作为约束,而体现在J中

对于轨迹上某个点的要求,体现在 ϕ \phi ϕ函数的设计上
在这里插入图片描述
在这里插入图片描述

2) 希望轨迹更平滑

对于整条轨迹的要求,体现在L函数上
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Neo11111/article/details/105960645

智能推荐

html5给微信用户推送消息,微信小程序之发送模板消息(经过openid推送消息给用户)..._YHhhh18的博客-程序员秘密

1、获取access_tokenaccess_token是接口调用的凭证,目前有效期为两个小时,须要定时刷新,重复获取将致使上次获取的access_token失效。(注:不建议每次调用须要access_token的接口,都去从新获取access_token,会致使失败)获取access_token的接口地址:htmlhttps://api.weixin.qq.com/cgi-bin/token?g...

一行代码搞定使用LinearLayoutManager一键返回顶部_wapchief的博客-程序员秘密

之前在学习RecyclerView的时候,建立了一个可以滑动的View列表,但是当滑动距离过长的时候,需要手动返回到顶部,于是加了一个一键返回顶部的按钮。要实现这种效果,有两点需要实现: 1、控制LanyoutManager滑动距离,根据滑动状态(距离)改变去设置隐藏或者显示。 2、设置top的点击事件,点击回到顶部。很遗憾LayoutManager只提供给了我们获取第一个可见item的

moni题mainActivity--httpCilent+异步_ch5211314的博客-程序员秘密

package com.example.com.moni;import android.content.Intent;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import a

vue向后端发送数据并得到返回值_俊人呀的博客-程序员秘密

window.onload = function(){ var vm = new Vue({ el:'#box', data:{ msg:'Hello World!', }, methods:{ get:function(){ //发送get请求...

Masonry 源码学习整理_ducode的博客-程序员秘密

@(第三方库源码学习)[TOC]Masonry框架的类结构学习一、Masonry采用了经典的组合设计模式(Composite Pattern)。1、定义将对象组合成树状结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象(Leaf)和组合对象(Composite)的使用具有一致性。注意:这个组合模式不是“组合优于继承”的那种组合,是狭义的指代一种特定的场景(树状结构)...

西南民俗文化进高铁 春运旅客感受喜庆氛围_weixin_34122810的博客-程序员秘密

图为铁警正在列车车厢里为旅客进行弹唱表演。 包亮 摄图为铁警正在列车车厢里为旅客进行弹唱表演。 包亮 摄图为苗族阿妹为旅客进献苗家米酒。 包亮 摄图为苗族阿妹为旅客进献苗家米酒。 包亮 摄1月25日,春节临近,为了让旅客出行体验更美好,重庆客运段联合重庆铁路公安处,在渝贵高铁上开展了极具特色的西南民俗文化活动,营造出了浓厚的节日气氛,让乘车旅客提前感受到节日的喜庆。车厢里,几位身着民族服饰的苗族阿...

随便推点

perl 5.26安装步骤_perl下载安装csdn_韩半仙的博客-程序员秘密

1、下载安装包https://www.cpan.org/src/5.0/ 网站有所有的版本的安装包。这里下载perl-5.26.1.tar.gz$wget https://www.cpan.org/src/5.0/perl-5.26.1.tar.gz2、解压tar -zxvf perl-5.26.1.tar.gz3、创建安装路径mkdir perl4、config./Configure -des -Dprefix=/fwork1/hanm/work/test/perl -Du

php iconv linux,linux下为php添加iconv模块的方法,linuxiconv_PHP教程_weixin_39676034的博客-程序员秘密

linux下为php添加iconv模块的方法,linuxiconv./configure --with-mysql=/backup/mysql --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-curl --with-gd --enable-gd-native-ttf --with-apxs2=/usr/lo...

QT-数字格式化成字符串_qt格式化字符串_lvye1221的博客-程序员秘密

QT-字符串格式化常见问题数字格式化int=6;//格式化为:006QString("%1").arg(6, 3, 10, QChar('0'));// 多个参数的格式化str = QString("%1 %2 %L3") .arg(12345) .arg(12345) .arg(12345, 0, 16);// 必须加上 数制 符号,不然 第一个参数数字 将变成 字符形式了。str = QString("%1%2%

iOS中方法和函数的区别_ios 方法和函数的区别_皆为序幕的博客-程序员秘密

成员变量@interface Person:NSObject{ int age;} @end写在类声明的大括号中的变量,我们称之为成员变量(属性、实例变量)成员变量只能通过对象访问注意: 成员变量不能离开类,离开类之后就不是成员变量成员变量不能在定义的同时进行初始化存储:堆(当前对象对应的堆的存储空间中)。存储在堆中的数据,不会被系统释放,只能程序员自己释放局部变量-(v

全国软考中级软件设计师 学习笔记-数据库部分_麦片加奶不加糖的博客-程序员秘密

想要电子版本的同学可以留言或者私信我获取,辛苦整理资料,欢迎点赞、收藏和评论!数据库系统1.数据库三级模式-二级映射1.1用户级-->外模式(反映了数据库系统的用户观)外模式又称子模式或用户模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。1.2概念级-->概念模式(反映了数据库系统的整体观)概念模式又称模式或逻辑模式,对应...