采用qL-MPC技术进行小型固定翼无人机的路径跟随控制

来自论文"Predictive Path-Following Control for Fixed-Wing UAVs Using the qLMPC Framework in the Presence of Wind Disturbances"

控制架构

采用的是 ULTRA-Extra无人机,相关参数如下:

在这里插入图片描述

这里用于guidance law的无人机运动学模型为:
{ x ˙ p = V a cos ⁡ γ cos ⁡ χ + V w cos ⁡ γ w cos ⁡ χ w y ˙ p = V a cos ⁡ γ sin ⁡ χ + V w cos ⁡ γ w sin ⁡ χ w z ˙ p = V a sin ⁡ γ + V w sin ⁡ γ w χ ˙ = g tan ⁡ ϕ / V a γ ˙ = g ( n z cos ⁡ ϕ − cos ⁡ γ ) / V a \begin{cases} \dot{x}_p = V_a\cos\gamma\cos\chi + V_w\cos\gamma_w\cos\chi_w \\ \dot{y}_p = V_a\cos\gamma\sin\chi + V_w\cos\gamma_w\sin\chi_w \\ \dot{z}_p = V_a\sin\gamma + V_w\sin\gamma_w \\ \dot{\chi} = g\tan\phi/V_a \\ \dot{\gamma} = g(n_z\cos\phi-\cos\gamma)/V_a \end{cases} x˙p=Vacosγcosχ+Vwcosγwcosχwy˙p=Vacosγsinχ+Vwcosγwsinχwz˙p=Vasinγ+Vwsinγwχ˙=gtanϕ/Vaγ˙=g(nzcosϕcosγ)/Va
其中状态量为 ( x p , y p , z p , γ , χ ) (x_p,y_p,z_p,\gamma,\chi) (xp,yp,zp,γ,χ),控制量为 ( V a , n z , ϕ ) (V_a,n_z,\phi) (Va,nz,ϕ)。在自动驾驶仪(Autopilot)中,采用 Successive-Loop-Closure (SLC)实现参考量 ( V a m , n z m , ϕ m ) (V_{a_m},n_{z_m},\phi_m) (Vam,nzm,ϕm)的信号跟踪:
在这里插入图片描述

自动驾驶仪中依然采用横纵向通道的SLC实现控制,相应的控制逻辑如下:

在这里插入图片描述

Path Following 最优控制器

对运动学模型进行二阶求导可以得到:
( x ˙ p y ˙ p z ˙ p χ ˙ γ ˙ x ¨ p y ¨ p z ¨ p χ ¨ γ ¨ ) = ( O 5 × 5 I 5 − V a cos ⁡ γ sin ⁡ χ − V a sin ⁡ γ cos ⁡ χ V a cos ⁡ γ cos ⁡ χ − V a sin ⁡ γ sin ⁡ χ O 5 × 5 O 5 × 3 0 V a cos ⁡ γ 0 0 0 g sin ⁡ γ V a ) ( x p y p z p χ γ x ˙ p y ˙ p z ˙ p χ ˙ γ ˙ ) + ( O 5 × 3 cos ⁡ γ cos ⁡ χ 0 0 cos ⁡ γ sin ⁡ χ 0 0 sin ⁡ γ 0 0 − g tan ⁡ ϕ V a 2 g V a cos ⁡ 2 ϕ 0 g ( cos ⁡ γ − n z cos ⁡ ϕ ) V a 2 − g n z sin ⁡ ϕ V a g cos ⁡ ϕ V a ) ( V ˙ a ϕ ˙ n ˙ z ) \left( \begin{matrix} {{{\dot{x}}}_{p}} \\ {{{\dot{y}}}_{p}} \\ {{{\dot{z}}}_{p}} \\ {\dot{\chi }} \\ {\dot{\gamma }} \\ {{{\ddot{x}}}_{p}} \\ {{{\ddot{y}}}_{p}} \\ {{{\ddot{z}}}_{p}} \\ {\ddot{\chi }} \\ {\ddot{\gamma }} \\ \end{matrix} \right)=\left( \begin{matrix} {{O}_{5\times 5}} & {} & {{I}_{5}} & {} \\ {} & {} & -{{V}_{a}}\cos \gamma \sin \chi & -{{V}_{a}}\sin \gamma \cos \chi \\ {} & {} & {{V}_{a}}\cos \gamma \cos \chi & -{{V}_{a}}\sin \gamma \sin \chi \\ {{O}_{5\times 5}} & {{O}_{5\times 3}} & 0 & {{V}_{a}}\cos \gamma \\ {} & {} & 0 & 0 \\ {} & {} & 0 & \frac{g\sin \gamma }{V_{a}^{{}}} \\ \end{matrix} \right)\left( \begin{matrix} {{x}_{p}} \\ {{y}_{p}} \\ {{z}_{p}} \\ \chi \\ \gamma \\ {{{\dot{x}}}_{p}} \\ {{{\dot{y}}}_{p}} \\ {{{\dot{z}}}_{p}} \\ {\dot{\chi }} \\ {\dot{\gamma }} \\ \end{matrix} \right)+\left( \begin{matrix} {} & {{O}_{5\times 3}} & {} \\ \cos \gamma \cos \chi & 0 & 0 \\ \cos \gamma \sin \chi & 0 & 0 \\ \sin \gamma & 0 & 0 \\ -\frac{g\tan \phi }{V_{a}^{2}} & \frac{g}{{{V}_{a}}{{\cos }^{2}}\phi } & 0 \\ \frac{g(\cos \gamma -{{n}_{z}}\cos \phi )}{V_{a}^{2}} & -\frac{g{{n}_{z}}\sin \phi }{V_{a}^{{}}} & \frac{g\cos \phi }{V_{a}^{{}}} \\ \end{matrix} \right)\left( \begin{align} & {{{\dot{V}}}_{a}} \\ & {\dot{\phi }} \\ & {{{\dot{n}}}_{z}} \\ \end{align} \right) x˙py˙pz˙pχ˙γ˙x¨py¨pz¨pχ¨γ¨ = O5×5O5×5O5×3I5VacosγsinχVacosγcosχ000VasinγcosχVasinγsinχVacosγ0Vagsinγ xpypzpχγx˙py˙pz˙pχ˙γ˙ + cosγcosχcosγsinχsinγVa2gtanϕVa2g(cosγnzcosϕ)O5×3000Vacos2ϕgVagnzsinϕ0000Vagcosϕ V˙aϕ˙n˙z
这里设 ρ = ( γ , χ , V a , ϕ , n z ) T \rho=(\gamma,\chi,V_a,\phi,n_z)^T ρ=(γ,χ,Va,ϕ,nz)T x = ( x p , y p , z p , χ , γ , x ˙ p , y ˙ p , z ˙ p , χ ˙ , γ ˙ ) T x=(x_p,y_p,z_p,\chi,\gamma,\dot{x}_p,\dot{y}_p,\dot{z}_p,\dot{\chi},\dot{\gamma})^T x=(xp,yp,zp,χ,γ,x˙p,y˙p,z˙p,χ˙,γ˙)T u = ( V ˙ a , ϕ ˙ , n ˙ z ) T u=(\dot{V}_a,\dot{\phi},\dot{n}_z)^T u=(V˙a,ϕ˙,n˙z)T,得到:
x ˙ = A v ( ρ ) x + B v ( ρ ) u \dot{x}=A_v(\rho)x+B_v(\rho)u x˙=Av(ρ)x+Bv(ρ)u
假设要跟踪的量为 r = ( x r , y r , z r ) T r=(x_r,y_r,z_r)^T r=(xr,yr,zr)T,构造跟踪向量 e = ( x r − x p , y r − y p , z r − z p ) T = r − ( x p , y p , z p ) T e=(x_r-x_p,y_r-y_p,z_r-z_p)^T=r-(x_p,y_p,z_p)^T e=(xrxp,yryp,zrzp)T=r(xp,yp,zp)T,有: e ˙ = r ˙ − ( O 3 × 5 , I 3 , O 3 × 2 ) x \dot{e}=\dot{r}-(O_{3\times 5},I_3,O_{3\times 2})x e˙=r˙(O3×5,I3,O3×2)x,得到:
( x ˙ e ˙ ) = ( A v ( ρ ) O 10 × 3 − ( O 3 × 5 ∣ I 3 ∣ O 3 × 2 ) O 3 ) ( x e ) + ( B v ( ρ ) O 3 × 3 ) u + ( O 10 × 1 r ˙ ) \begin{pmatrix} \dot{x} \\ \dot{e} \end{pmatrix} = \begin{pmatrix} A_v(\rho) & O_{10\times3} \\ -(O_{3\times 5}|I_3|O_{3\times 2}) & O_3 \end{pmatrix}\begin{pmatrix} x \\e \end{pmatrix} + \begin{pmatrix} B_v(\rho) \\O_{3\times 3} \end{pmatrix} u + \begin{pmatrix} O_{10\times 1} \\\dot{r} \end{pmatrix} (x˙e˙)=(Av(ρ)(O3×5I3O3×2)O10×3O3)(xe)+(Bv(ρ)O3×3)u+(O10×1r˙)
利用4阶Runge-Kutta法可以将上式可以离散化为一个LPV状态空间方程(linear parameter varying state-space representation):
x e , k + 1 = A e ( ρ k ) x e , k + B e ( ρ k ) u e , k + c r , k x_{e,k+1} = A_e(\rho_k)x_{e,k}+B_e(\rho_k)u_{e,k}+c_{r,k} xe,k+1=Ae(ρk)xe,k+Be(ρk)ue,k+cr,k
P k = ( ρ k T , ρ k + 1 T , . . . ρ k + N − 1 T ) T P_k=(\rho_{k}^T,\rho_{k+1}^T,...\rho_{k+N-1}^T)^T Pk=(ρkT,ρk+1T,...ρk+N1T)T X k = ( x e , k + 1 T , x e , k + 2 T , . . . , x e , k + N T ) T X_k=(x_{e,k+1}^T,x_{e,k+2}^T,...,x_{e,k+N}^T)^T Xk=(xe,k+1T,xe,k+2T,...,xe,k+NT)T U k = ( u e , k + 1 T , u e , k + 2 T , . . . , u e , k + N T ) T U_k=(u_{e,k+1}^T,u_{e,k+2}^T,...,u_{e,k+N}^T)^T Uk=(ue,k+1T,ue,k+2T,...,ue,k+NT)T c k = ( c r , k + 1 T , c r , k + 2 T , . . . c r , k + N T ) T c_k = (c_{r,k+1}^T,c_{r,k+2}^T,...c_{r,k+N}^T)^T ck=(cr,k+1T,cr,k+2T,...cr,k+NT)T得到:
X k + 1 = H ( P k ) X k + S ( P k ) U k + c k = L k + S ( P k ) U k X_{k+1}=H(P_k)X_k + S(P_k)U_k+c_k \\ =L_k + S(P_k)U_k Xk+1=H(Pk)Xk+S(Pk)Uk+ck=Lk+S(Pk)Uk
其中: x e , k = ( x k T , e k T ) T x_{e,k}=(x^T_k,e^T_k)^T xe,k=(xkT,ekT)T H ( P k ) = d i a g ( [ A e ( ρ k ) , A e ( ρ k + 1 ) . . . A e ( ρ k + N − 1 ) ] ) H(P_k) =diag([A_e(\rho_{k}),A_e(\rho_{k+1})...A_e(\rho_{k+N-1})]) H(Pk)=diag([Ae(ρk),Ae(ρk+1)...Ae(ρk+N1)]) S ( P k ) = d i a g ( [ B e ( ρ k ) , B e ( ρ k + 1 ) . . . B e ( ρ k + N − 1 ) ] ) S(P_k)=diag([B_e(\rho_{k}),B_e(\rho_{k+1})...B_e(\rho_{k+N-1})]) S(Pk)=diag([Be(ρk),Be(ρk+1)...Be(ρk+N1)])。采用MPC控制器进行设计时, k + 1 k+1 k+1时刻需要优化的目标函数:
J k + 1 = ∑ i = 1 N ( x k + i + 1 T Q x k + i + 1 + u k + i T R u k + i + e k + i + 1 T T e k + i + 1 ) = X k + 1 T H X X k + 1 + U k T H U U k = [ L k + S ( P k ) U k ] T H X [ L k + S ( P k ) U k ] + U k T H U U k = U k T ( S ( P k ) T H X S ( P k ) + H U ) U k + 2 L k T H X S ( P k ) U k + L k T H X L k J_{k+1}=\sum_{i=1}^N(x_{k+i+1}^TQx_{k+i+1} + u_{k+i}^TRu_{k+i} + e_{k+i+1}^TTe_{k+i+1}) \\ =X_{k+1}^TH_XX_{k+1} + U_{k}^TH_UU_{k}\\=[L_k + S(P_k)U_k]^TH_X[L_k + S(P_k)U_k] + U_{k}^TH_UU_{k}\\ =U_k^T(S(P_k)^TH_XS(P_k)+H_U)U_k + 2L_k^TH_XS(P_k)U_k + L_k^TH_XL_k Jk+1=i=1N(xk+i+1TQxk+i+1+uk+iTRuk+i+ek+i+1TTek+i+1)=Xk+1THXXk+1+UkTHUUk=[Lk+S(Pk)Uk]THX[Lk+S(Pk)Uk]+UkTHUUk=UkT(S(Pk)THXS(Pk)+HU)Uk+2LkTHXS(Pk)Uk+LkTHXLk
其中: Q = Q T > 0 , P = P T > 0 , R = R T > 0 Q=Q^T>0,P=P^T>0,R=R^T>0 Q=QT>0,P=PT>0,R=RT>0 H X = d i a g ( [ Q , Q , . . . , Q ] ) H_X=diag([Q,Q,...,Q]) HX=diag([Q,Q,...,Q]) H U = d i a g ( [ R , R , . . . , R ] ) H_U=diag([R,R,...,R]) HU=diag([R,R,...,R])

而对于控制量 U k U_k Uk和状态量 X k + 1 X_{k+1} Xk+1有限幅,即: U min ⁡ ≤ U k ≤ U max ⁡ U_{\min}\leq U_k\leq U_{\max} UminUkUmax X min ⁡ ≤ X k + 1 ≤ X max ⁡ X_{\min} \leq X_{k+1} \leq X_{\max} XminXk+1Xmax,得到约束:
( I − I S ( P k ) − S ( P k ) ) U k ≤ ( U max ⁡ − U min ⁡ X k + 1 − L k − X k + 1 + L k ) \begin{pmatrix} I \\ -I\\ S(P_k)\\ -S(P_k) \end{pmatrix}U_k \leq \begin{pmatrix} U_{\max} \\ -U_{\min} \\ X_{k+1} - L_k \\ -X_{k+1} + L_k \end{pmatrix} IIS(Pk)S(Pk) Uk UmaxUminXk+1LkXk+1+Lk

上面的假设是基于全状态反馈的,也是就是说对于 k + 1 k+1 k+1时刻的在线优化能获取 k k k时刻所有的状态信息和偏差信息。

若观测量为 Y k = C k X k Y_k = C_kX_k Yk=CkXk Y min ⁡ ≤ Y k ≤ Y max ⁡ Y_{\min}\leq Y_k\leq Y_{\max} YminYkYmax,则上面的约束将被修正为:
( I − I C k S ( P k ) − C k S ( P k ) ) U k ≤ ( U max ⁡ − U min ⁡ Y max ⁡ − C k L k − Y min ⁡ + C k L k ) \begin{pmatrix} I \\ -I\\ C_kS(P_k)\\ -C_kS(P_k) \end{pmatrix}U_k \leq \begin{pmatrix} U_{\max} \\ -U_{\min} \\ Y_{\max} - C_kL_k \\ -Y_{\min} + C_kL_k \end{pmatrix} IICkS(Pk)CkS(Pk) Uk UmaxUminYmaxCkLkYmin+CkLk
无论如何,上述问题都可以被转化成QP问题,利用Matlab工具箱中的quadprog函数进行求解,或者说是在线优化为以下问题:
min ⁡ U k 1 2 U k T F k U k + G k U k A k U k ≤ b k \min_{U_k}\frac{1}{2}U_k^TF_kU_k +G_kU_k \\ A_kU_k \leq b_k Ukmin21UkTFkUk+GkUkAkUkbk
附带相应的伪代码如下图所示:

在这里插入图片描述

参考文献

@inproceedings{bib:Samir,title={Predictive Path Following Control for Fixed Wing UAVs Using the qLMPC Framework in the Presence of Wind Disturbances},author={Rezk, Ahmed S and Calder{\'o}n, Horacio M and Werner, Herbert and Herrmann, Benjamin and Thielecke, Frank},booktitle={AIAA SCITECH 2024 Forum},pages={1594},year={2024}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三维无人机航迹算法的目标函数如何确定

一、定义目标函数 在三维无人机航迹算法中,目标函数的确定通常基于具体的任务需求和飞行约束。以下是一个简单的例子,展示了如何为三维无人机航迹规划定义一个目标函数。 例子:最小化飞行时间和避障的三维无人机航迹规划 1.任务描述:无人机需要从起点飞到终点,同时避开一些…

《Java核心技术I》Swing用户界面组件

Swing和模型-视图-控制器设计模式 用户界面组件各个组成部分,如按钮,复选框,文本框或复杂的树控件,每个组件都有三个特征: 内容,如按钮的状态,文本域中的文本。外观,颜色&#xff0c…

【Office】Office实现shift+鼠标滚轮左右滑动

Office实现shift鼠标滚轮左右滑动 windows系统安装office之后发现,使用shift鼠标滚轮不能够实现左右滑动,我记得以前的office好像是可以的,然后在网上找了一下,找到了一个插件可以实现这个功能 OfficeScroll插件 下载地址&…

vlan和vlanif

文章目录 1、为什么会有vlan的存在2、vlan(虚拟局域网)1、vlan原理1. 为什么这样划分了2、如何实现不同交换机相同的vlan实现互访呢3、最优化的解决方法,vlan不同交换机4、vlan标签和vlan数据帧 5、vlan实现2、基于vlan的划分方式1、基于接口的vlan划分方式2、基于m…

Web项目图片视频加载缓慢/首屏加载白屏

Web项目图片视频加载缓慢/首屏加载白屏 文章目录 Web项目图片视频加载缓慢/首屏加载白屏一、原因二、 解决方案2.1、 图片和视频的优化2.1.1、压缩图片或视频2.1.2、 选择合适的图片或视频格式2.1.3、 使用图片或视频 CDN 加速2.1.4、Nginx中开启gzip 三、压缩工具推荐 一、原因…

【CAN模块】介绍一种检查CAN模块芯片好坏的方法(SN65HVD230)

文章目录 前言一、以SN65HVD230为例介绍端口特性二、代码实现总结 前言 CAN总线收发器,是CAN控制器和物理总线间的接口器件,通常工程师会按照底层协议对其控制,近日笔者仔细了解了CAN总线收发器的物理原理,找到了一种通过观察端口…

RTMP推流平台EasyDSS在无人机推流直播安防监控中的创新应用

无人机与低空经济的关系密切,并且正在快速发展。2024年中国低空经济行业市场规模达到5800亿元,其中低空制造产业占整个低空经济产业的88%。预计未来五年复合增速将达到16.03%。 随着科技的飞速发展,公共安防关乎每一个市民的生命财产安全。在…

[win10] win10系统的下载及在虚拟机中详细安装过程(附有下载文件)

前言 win10 下载:https://pan.quark.cn/s/eb40e8ca57fb 提取码:VTZq 失效(可能被官方和谐)可评论或私信我重发 下载压缩包后解压 !!安装路径不要有中文 解压下载的.zip文件,得到.iso文件 打开…

lightRAG 论文阅读笔记

论文原文 https://arxiv.org/pdf/2410.05779v1 这里我先说一下自己的感受,这篇论文整体看下来,没有太多惊艳的地方。核心就是利用知识图谱,通过模型对文档抽取实体和关系。 然后基于此来构建查询。核心问题还是在解决知识之间的连接问题。 论…

[代码随想录17]二叉树之最大二叉树、合并二叉树、二搜索树中的搜索、验证二叉搜索树。

前言 二叉树的题目还是要会一流程构造函数之类的。其中还有回溯的思想 题目链接 654. 最大二叉树 - 力扣(LeetCode) 一、最大二叉树 思路:还是考察构造二叉树,简单来说就是给你一个数组去构建一个二叉树,递归来解决就…

Docker概述与基础入门

1. 什么是Docker? Docker 是一个开源的平台,用于自动化应用程序的构建、部署和管理。它允许开发人员通过将应用程序及其依赖项打包成容器镜像,从而确保应用可以在任何环境中一致地运行。Docker 容器是轻量级的、可移植的、且具有高度隔离性的…

C# 探险之旅:第三十六节 - 类型class之密封类Sealed Classes

嗨,探险家们!欢迎再次搭乘我们的C#魔法列车,今天我们要去一个神秘又有点“傲娇”的地方——密封类(Sealed Classes)领地。系好安全带,咱们要深入“密封”的奇妙世界啦! 什么是密封类&#xff1…

QTreeView 与 QTreeWidget 例子

1. 先举个例子 1班有3个学生:张三、李四、王五 4个学生属性:语文 数学 英语 性别。 语文 数学 英语使用QDoubleSpinBox* 编辑,范围为0到100,1位小数 性别使用QComboBox* 编辑,选项为:男、女 实现效果: 2…

UE5 C++ Subsystem 和 多线程

一.Subsystem先做一个简单的介绍,其实可以去看大钊的文章有一篇专门讲这个的。 GamePlay框架基础上的一个增强功能,属于GamePlay架构的范围。Subsystems是一套可以定义自动实例化和释放的类的框架。这个框架允许你从5类里选择一个来定义子类(只能在C定义…

Linux 添加spi-nor flash支持

1. spi-nor flash简介 在嵌入式ARM开发过程中通常会使用到spi-nor flash,主要用于固化u-boot镜像以支持spi方式启动系统。目前常用的spi-nor flash有gd25wq128e、w25q128等flash芯片,下述以gd25wq128e为例进行讲解。 2.调试通常遇到的问题 无法识别到…

C# 探险之旅:第三十七节 - 类型class之Object:万物之源的奇妙冒险

嘿,勇敢的探险家们!欢迎再次踏上C#的神秘之旅。今天,我们将深入探索一个极其强大又无处不在的“大佬”——Object 类型。想象一下,它就像是C#世界里的“超级英雄祖先”,几乎所有的类型都得叫它一声“老祖宗”。 Objec…

LabVIEW实验站反馈控制系统

开发了一套基于LabVIEW的软X射线磁性圆二色实验站的反馈控制系统。这套系统主要用于实现对实验站高电压的精确控制,从而保持照射在样品上的流强稳定性,为分析样品吸收谱提供可靠基准,同时提供了易用的用户界面和强大的数据存储功能。 项目背景…

aws(学习笔记第十八课) 使用aws cdk(python)进行部署

aws(学习笔记第十八课) 使用aws cdk(python)进行部署 学习内容: 使用aws cdk(python)进行部署整体代码(python的通常工程)代码动作 1. 使用aws cdk(python)进行部署 aws cdk的整体架构 前面使用了cloudformation进行了json的aws的各种组件的…

网络基础 - TCP/IP 五层模型

文章目录 一、OSI 参考模型中各个分层的作用1、应用层2、表示层3、会话层4、传输层5、网络层6、数据链路层7、物理层 二、OSI 参考模型通信处理示例 一、OSI 参考模型中各个分层的作用 1、应用层 2、表示层 负责设备固有数据格式和网络标准数据格式间的转换 实际生活中&#…

MySQL 调优技巧|索引什么时候失效?为什么?

写在前面 优化慢SQL,这是在工作或者面试中都不可避免的问题。这篇文章我们就来讲讲慢SQL的优化的一些方法! 1. 升配 最简单的一步就是升配!!当然在降本增效的当下,很难能将这种单子审批下来了! 2. 索引…