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

news2024/12/16 3:51:05

来自论文"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.coloradmin.cn/o/2260283.html

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

相关文章

计算机毕设-基于springboot的青少年心理健康教育网站的设计与实现(附源码+lw+ppt+开题报告)

博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

28.在 Vue 3 中使用 OpenLayers 加载 MVT 格式矢量瓦片数据并显示图形

前言 随着前端开发技术的不断进步,越来越多的强大地图库被广泛应用于 Web 地图应用开发中。OpenLayers 是一个流行的开源 JavaScript 库,能够帮助开发者快速构建交互式地图应用。而 Vue 3 作为现代化的前端框架,已经成为开发者构建高效、响应…

Linux - MySQL迁移至一主一从

Linux - MySQL迁移至一主一从 迁移准备安装MySQL ibd文件迁移原服务器操作目标服务器操作 一主一从增量同步异常解决结尾 首先部分单独安装MySQL,请参考Linux - MySQL安装,迁移数据量比较大约400G左右且网络不通故使用文件迁移,需开启一段时间…

opencv-python的简单练习

题目1.读取一张彩色图像并将其转换为灰度图。 import cv2 # 读取图片文件 img cv2.imread(./1.png)# 将原图灰度化 img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 输出图片 cv2.imshow(img,img) cv2.imshow(img_g,img_gray) # 进行阻塞 cv2.waitKey(0) 题目2:…

go-zero(十三)使用MapReduce并发

go zero 使用MapReduce并发 一、MapReduce 介绍 MapReduce 是一种用于并行计算的编程模型,特别适合在大规模数据处理场景中简化逻辑代码。 官方文档: https://go-zero.dev/docs/components/mr 1. MapReduce 的核心概念 在 MapReduce 中,主…

探索React与Microi吾码的完美结合:快速搭建项目,低代码便捷开发教程

一、摘要 在当今的数字化时代,软件开发就像是一场探险,每个开发者都是探险家,探索着代码的奥秘。React作为前端开发的领军框架,其组件化和高效的渲染机制为开发者提供了强大的工具。而Microi吾码低代码平台的出现,则为…

SAP FICO物料分类账实操

物料分类账所涉及到的差异从采购入库的时候就可能已经产生,接下来从创建物料主数据开始对可能产生差异地方进行分析。其中有些操作步骤在标准价格估算这一篇博文中已经有过演示,可以先做了解。 其中的某些创建在有直接可用的情况下是非必须的&#xff0…

WordPress酱茄主题 开源版 博客资讯自媒体网站模板

一款免费开源的WordPress主题,主题专为WordPress博客、资讯、自媒体网站而设计 运行环境 支持WordPress版本:5.6 兼容Chrome、Firefox、Safari等主流浏览器 支持设备:响应式布局,不同设备不同展示效果 服务器环境建议&#x…

【HF设计模式】03-装饰者模式

声明:仅为个人学习总结,还请批判性查看,如有不同观点,欢迎交流。 摘要 《Head First设计模式》第3章笔记:结合示例应用和代码,介绍装饰者模式,包括遇到的问题、遵循的 OO 原则、达到的效果。 …

Linux查看是否有www-data用户,如果没有添加一个

在 Linux 系统中,www-data 用户通常是用来运行 Web 服务(如 Nginx 或 Apache)的。如果你想检查系统中是否已经存在 www-data 用户,并在没有的情况下添加一个,可以按照以下步骤操作: ### 1. 检查 www-data …

23.模块和包

模块 模块Module,是一个python文件,以.py结尾。 模块能定义函数、类和变量。 模块导入 模块在使用前需要先导入 [from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名] import 模块 import time print("start...") time.sleep(5) print(&…

IDEA报错:无效的源发行版、无效的目标发行版

1. 无效的源发行版 创建项目的时候,会遇见这个报错,原因就是编译的JDK版本与发布版本不一致。 解决方法: 1.1. 找到问题所在地 英文:File -> Project Structure ->Project Settings 中文:文件->项目结构 …

2025年,客服知识库与人工智能的结合

随着人工智能(AI)技术的飞速发展,传统客服模式正在经历前所未有的变革。特别是在2025年,客服知识库与AI的深度融合,不仅极大地提升了客服处理的效率与准确性,还为用户带来了更加个性化、高效的服务体验。 …

JVM 双亲委派模型以及垃圾回收机制

目录 1. JVM 内存区域划分 2. JVM 中类加载的过程 1) 类加载的基本流程 2) 双亲委派模型 3. JVM 中垃圾回收机制 1) 找到垃圾 a) 引用计数 b) 可达性分析 2) 释放垃圾 1. JVM 内存区域划分 一个运行起来的 Java 进程,其实就是一个 JVM 虚拟机。 而进程是…

微信小程序跳转其他小程序以及跳转网站

一、跳转其他小程序 1.1 知道appid和页面路径 wx.navigateToMiniProgram({appId: appid, // 替换为目标小程序 AppIDpath: pathWithParams, // 小程序路径envVersion: release, // 开发版、体验版或正式版success(res) {console.log("跳转到其他小程序成功!&q…

学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式

学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式 参考文档: https://www.dmtf.org/standards/published_documents https://www.dmtf.org/dsp/DSP0222 https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.2.0.pdf参考代…

深度学习训练参数之学习率介绍

学习率 1. 什么是学习率 学习率是训练神经网络的重要超参数之一,它代表在每一次迭代中梯度向损失函数最优解移动的步长,通常用 η \eta η 表示。它的大小决定网络学习速度的快慢。在网络训练过程中,模型通过样本数据给出预测值&#xff0…

【数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:编写一个程序实现单链表的基本运算。 相关知识 为了完成本关任务,你需要掌握:初始化线性表、销毁线性表、判定是否为空表、求线性…

利用ROS的Camera Calibration工具进行D435相机标定

一、安装ROS Camera Calibration sudo apt-get install ros-melodic-camera-calibration 二、安装realsense-ros 安装ROS Wrapper for Intel RealSense(realsense-ros) 三、启动数据读取节点 ctrlaltt打开终端 cd catkin_ws_ur source devel/setu…

让文案生成更具灵活性/chatGPT新功能canvas画布编辑

​ ​ OpenAI最近在2024年12月发布了canvas画布编辑功能,这是一项用途广泛的创新工具,专为需要高效创作文案的用户设计。 无论是职场人士、学生还是创作者,这项功能都能帮助快速生成、优化和编辑文案,提升效率的同时提高内容质量…