结合生活中常见实际情况可知,无人车的运行空间一般为二维平面。因此,假设无人车的动力学模型如下:

p˙i=viv˙i=ui\begin{aligned} \dot{p}_i = v_i \\ \dot{v}_i = u_i \\ \end{aligned}p˙​i​=vi​v˙i​=ui​​

这里,pi∈R2p_i\in\mathbb{R}^2pi​∈R2 表示UGV的位置状态,vi∈R2v_i\in\mathbb{R}^2vi​∈R2 表示UGV的速度状态,ui∈R2u_i\in\mathbb{R}^2ui​∈R2 表示UGV的控制输入。

也可写成状态空间方程的形式:

x˙i=Axi+Bui\dot{x}_i = A x_i + B u_i x˙i​=Axi​+Bui​

其中,xi=[pi,vi]Tx_i = [p_i, v_i]^Txi​=[pi​,vi​]T,A=[0100]A=\left[\begin{matrix} 0 & 1 \\ 0 & 0 \\ \end{matrix}\right]A=[00​10​],B=[01]B=\left[\begin{matrix} 0 \\ 1 \\ \end{matrix}\right]B=[01​]。


性能指标为:
J=12∫0∞[xTQx+uTRu]dtJ = \frac{1}{2} \int_{0}^{\infty} [x^T Q x + u^T R u] ~dtJ=21​∫0∞​[xTQx+uTRu] dt

假设 Q=[0100],R=[1]Q = \left[\begin{matrix}0 & 1 \\ 0 & 0 \\ \end{matrix}\right], R = \left[\begin{matrix} 1 \end{matrix}\right]Q=[00​10​],R=[1​]。

alphaG = 1;
betaG  = 1;
aG = kron([0 1; 0 0], eye(1));
bG = kron([ 0 ;  1 ], eye(1));
QG = eye(2*1) * alphaG;
RG = eye(1*1) * betaG;
[PG,l,g] = care(aG,bG,QG,RG);KG = -inv(RG) * bG' * PG;

解算出来最优 KKK

KG =-1.0000   -1.7321

代入初始值,p(t=0)=10,v(t=0)=2p(t=0) = 10, v(t=0) = 2p(t=0)=10,v(t=0)=2,计算系统方程

p0 = 10;
v0 = 2;
in = [p0 v0]';[t,out] = ode45(@odeFun, [0,10], in);
plot(t,out);function out = odeFun(t,in)p = in(1,1);v = in(2,1);dp = v;dv = -p-1.732*v;out = [dp; dv];
end



性能指标为:
J=tf+12∫0tfu2(t)dtJ = t_f + \frac{1}{2} \int_{0}^{t_f} u^2(t) dtJ=tf​+21​∫0tf​​u2(t)dt

初始状态(横截条件)为:
p(0)=10p(tf)=0v(0)=1v(tf)=0\begin{aligned} &p(0) = 10 &p(t_f) = 0 \\ &v(0) = 1 &v(t_f) = 0 \\ \end{aligned}​p(0)=10v(0)=1​p(tf​)=0v(tf​)=0​

构建系统Hamilton函数
H=12u2(t)+λ1v+λ2u(t)H = \frac{1}{2} u^2(t) + \lambda_1 v + \lambda_2 u(t)H=21​u2(t)+λ1​v+λ2​u(t)

正则方程
p˙(t)=∂H∂λ1=vv˙(t)=∂H∂λ2=uλ˙1=−∂H∂p=0⇒λ1=aλ˙2=−∂H∂v=−λ1⇒λ2=−at+b\begin{aligned} &\dot{p}(t) = \frac{\partial H}{\partial \lambda_1} = v \\ &\dot{v}(t) = \frac{\partial H}{\partial \lambda_2} = u \\ &\dot{\lambda}_1 = -\frac{\partial H}{\partial p} = 0 \Rightarrow \lambda_1 = a\\ &\dot{\lambda}_2 = -\frac{\partial H}{\partial v} = -\lambda_1 \Rightarrow \lambda_2 = -a t + b \\ \end{aligned}​p˙​(t)=∂λ1​∂H​=vv˙(t)=∂λ2​∂H​=uλ˙1​=−∂p∂H​=0⇒λ1​=aλ˙2​=−∂v∂H​=−λ1​⇒λ2​=−at+b​

因为 uuu 是无约束的,因此有极值条件
∂H∂u=u+λ2=0\frac{\partial H}{\partial u} = u + \lambda_2 = 0 ∂u∂H​=u+λ2​=0

得出来 uuu 的表达式
u=−λ2=at−bu = - \lambda_2 = at - bu=−λ2​=at−b

由 uuu 的表达式做积分可得
v=12at2−bt+cp=16at3−12bt2+ct+d\begin{aligned} v &= \frac{1}{2} a t^2 - b t + c \\ p &= \frac{1}{6} a t^3 - \frac{1}{2} b t^2 + c t + d \\ \end{aligned}vp​=21​at2−bt+c=61​at3−21​bt2+ct+d​

结合横截条件中的初态条件 p(0)=10,v(0)=1p(0) = 10, v(0) = 1p(0)=10,v(0)=1 可得
c=1d=10\begin{aligned} c &= 1 \\ d &= 10 \\ \end{aligned}cd​=1=10​

由Hamilton函数在最优轨线末端应满足的条件 H(tf)=−∂φ∂tfH(t_f) = -\frac{\partial \varphi}{\partial t_f}H(tf​)=−∂tf​∂φ​ 有
H(tf)=12u2(t)+λ1v+λ2u(t)=12(atf−b)2+a(12atf2−btf+c)+(−atf+b)(atf−b)=−∂φ∂tf=−1\begin{aligned} H(t_f) &= \frac{1}{2} u^2(t) + \lambda_1 v + \lambda_2 u(t) \\ &= \frac{1}{2} (at_f-b)^2 + a(\frac{1}{2}a t_f^2 - b t_f + c) + (-at_f + b)(at_f-b) \\ &= -\frac{\partial \varphi}{\partial t_f} \\ &= -1 \\ \end{aligned}H(tf​)​=21​u2(t)+λ1​v+λ2​u(t)=21​(atf​−b)2+a(21​atf2​−btf​+c)+(−atf​+b)(atf​−b)=−∂tf​∂φ​=−1​

再结合横街条件中的末态条件 p(tf)=0,v(tf)=0p(t_f) = 0, v(t_f) = 0p(tf​)=0,v(tf​)=0,现在已经三个方程三个未知量,解方程即可
{12(atf−b)2+a(12atf2−btf+c)+(−atf+b)(atf−b)=−112atf2−btf+c=016atf3−12btf2+ctf+d=0\left\{\begin{aligned} &\frac{1}{2} (at_f-b)^2 + a(\frac{1}{2}a t_f^2 - b t_f + c) + (-at_f + b)(at_f-b) = -1 \\ &\frac{1}{2} a t_f^2 - b t_f + c = 0 \\ &\frac{1}{6} a t_f^3 - \frac{1}{2} b t_f^2 + c t_f + d = 0 \\ \end{aligned}\right.⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​​21​(atf​−b)2+a(21​atf2​−btf​+c)+(−atf​+b)(atf​−b)=−121​atf2​−btf​+c=061​atf3​−21​btf2​+ctf​+d=0​

利用Matlab解算方程组

syms a b tf
eqns = [1/2*(a*tf-b)^2 + a*(1/2*a*tf^2-b*tf+1) + (-a*tf+b)*(a*tf-b) == -1,... 1/2*a*tf^2 - b*tf + 1==0,... 1/6*a*tf^3 - 1/2*b*tf^2 + tf + 10==0];
vars = [a b tf];
[a b tf] = solve(eqns, vars);double(a)
double(b)
double(tf)a = 0.4276
b = 1.6897
tf= 7.2589

解的最后结果为
{a=0.4276b=1.6897tf=7.2589\left\{\begin{aligned} &a = 0.4276 \\ &b = 1.6897 \\ &t_f = 7.2589 \\ \end{aligned}\right.⎩⎪⎨⎪⎧​​a=0.4276b=1.6897tf​=7.2589​

因此,代入解算出来的参数,那么有最优
{tf∗=7.2589u∗(t)=0.4276t−1.6897v∗(t)=0.2138t2−1.6897t+1p∗(t)=0.0713t3−0.8448t2+t+10J∗(t)=tf∗+12∫0tf∗u∗2(t)dt\left\{\begin{aligned} &t_f^* = 7.2589 \\ &u^*(t) = 0.4276 t - 1.6897 \\ &v^*(t) = 0.2138 t^2 - 1.6897 t + 1 \\ &p^*(t) = 0.0713 t^3 - 0.8448 t^2 + t + 10 \\ &J^*(t) = t_f^* + \frac{1}{2} \int_{0}^{t_f^*} u^{*2}(t) dt \\ \end{aligned}\right.⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​​tf∗​=7.2589u∗(t)=0.4276t−1.6897v∗(t)=0.2138t2−1.6897t+1p∗(t)=0.0713t3−0.8448t2+t+10J∗(t)=tf∗​+21​∫0tf∗​​u∗2(t)dt​

【控制】二阶 UGV 的 时间-输入 指标性能最优解算相关推荐

  1. 【控制】二阶 UGV 的无穷时间状态输入性能最优解算

    结合生活中常见实际情况可知,无人车的运行空间一般为二维平面.因此,假设无人车的动力学模型如下: p˙i=viv˙i=ui\begin{aligned} \dot{p}_i = v_i \\ \dot{ ...

  2. 大型仪器一般都是用计算机,问题:大型仪器一般都使用计算机进行控制,对该计算机除了在性能上能满足要求,在使用方面原则上有何要求。...

    问题:大型仪器一般都使用计算机进行控制,对该计算机除了在性能上能满足要求,在使用方面原则上有何要求. 更多相关问题 已知intx=43,y=0;charch='A';则表达式(x>y&& ...

  3. 计算机为用户设置上网时间,电脑怎么设置控制孩子的上网时间

    控制孩子的上网时间非常有必要,要限制孩子的上网时间,最好用的方法就是给孩子单独弄个账号,win7以后的版本都是自带的了,给大家具体说下怎么操作. 1.在控制面板中,选择"用户账户" ...

  4. 限制儿童使用计算机,win7设置控制孩子的上网时间不让他一直在玩电脑

    win7系统的电脑要控制孩子的上网时间是非常简单的,而且现在控制孩子的上网时间也是非常有必要的,不然孩子基本上会一直在玩电脑.今天教大家win7怎么控制孩子用电脑的时间. 要限制孩子的上网时间,最好用 ...

  5. js控制文本框仅仅能输入中文、英文、数字与指定特殊符号

    JS 控制文本框仅仅能输入数字 <input οnkeyup="value=value.replace(/[^0-9]/g,'')"οnpaste="value=v ...

  6. oracle rman备份时间点,Oracle Rman 控制RMAN的备份时间,减少IO消耗

    一.问题描述 由于服务器配置不高,备份策略为周末全备.周一至周六差异备份. 平时服务器CPU使用30%左右. 全备份时,开启两个通道,CPU达到70%-80%左右,业务不卡顿.不掉单,session不 ...

  7. 【LFS】Cjktty+uim-fep实现Linux控制台下中文显示与输入

    [LFS]Cjktty+uim-fep实现Linux控制台下中文显示与输入 需要准备的软件包 给内核打补丁,配置并编译安装新内核 编译安装UIM-FEP 后记: 操作环境:LFS-9.0 需要准备的软 ...

  8. DATESINPERIOD:计算过去某段时间的指标

    在商业场景中,有时会需要计算过去某段时间的指标,以此来预测未来的情况.比如用过去三个月的销售均值预测未来一个月的销售额,用其和未来月份的目标值做对比. 那么怎么计算过去三个月的销售额呢? 我们可以用D ...

  9. java数组输入一个实数_用java!!输入五个数,保存到一个数组中,然后将... C语言,编写一个程序,从键盘输入5个数,算出总和......

    导航:网站首页 > 用java!!输入五个数,保存到一个数组中,然后将... C语言,编写一个程序,从键盘输入5个数,算出总和... 用java!!输入五个数,保存到一个数组中,然后将... C ...

最新文章

  1. jQuery父级以及同级元素查找
  2. php 匹配多行,PHP-选择与相关表中的多行匹配的行
  3. batch spring 重复执行_一个3年老javaer竟然连Spring的事务管理都不知道,惊呆了
  4. 从计算机知识到落地能力,你欠缺了什么?
  5. nhibernate:composite-id class must override Equals()
  6. 集合(Collection和Map)
  7. 锐捷多网卡解决方案 与当前环境冲突(Code 2)
  8. java main函数_一行JAVA代码如何运行起来?
  9. 课程设计之第二次冲刺----第八天
  10. python语言开发环境配置理论_python语言开发环境配置
  11. python的most_common()函数
  12. JS判断当前浏览器安装的flash版本
  13. 163邮箱登陆写信自动化脚本
  14. 深入理解tensorflow架构设计与实现原理(彭靖田著)
  15. 量子计算机是哪个国家研制出来,万万没想到:最强大量子计算机居然由工业巨头研制出来了...
  16. java注解 pdf_使用 iText 复制带注释的 PDF
  17. 用sort对vector排序(转载)
  18. 如何对GIF动图进行裁剪?GIF怎么裁剪大小?
  19. 特征工程和数据预处理常用工具和方法
  20. 拓扑排序与关键路径(AOV网和AOE网)

热门文章

  1. P1121 环状最大两段子段和
  2. php-Arrays函数-array_flip-交换数组的键值
  3. javascript---》arguments对象
  4. 【转】Linux定时任务系统Cron入门
  5. UA MATH571B 试验设计 Quarter 2-level析因设计
  6. UA MATH571A 一元线性回归IV 模型诊断
  7. windows下cipher和efsdump工具的初步使用
  8. 图解.net程序集赋予强名称
  9. kernel笔记——块I/O
  10. RxJava2学习笔记(3)