串级PID控制四旋翼姿态

2 篇文章 0 订阅
2 篇文章 0 订阅

首先打个小广告,一直很喜欢无人机,最近有空研究了一下Pixhawk(PX4)飞控,并把总结和心得写到公众号 “SantyNotebook” 里和大家分享,感兴趣的朋友可以一起来交流一下,如何从零手写无人机飞控~
本篇同步发在公众号推送中《串级PID控制四旋翼姿态》
这篇介绍一下,在古典理论PID控制算法下,四旋翼如何保持姿态平稳状态

一 模型解耦线性化

回顾上一篇的推导结果,对于 X X X型四旋翼
在这里插入图片描述
位置模型
[ x ¨ y ¨ z ¨ ] = [ − T m ( cos ⁡ ψ sin ⁡ θ sin ⁡ ϕ + sin ⁡ ψ sin ⁡ ϕ ) − T m ( sin ⁡ ψ sin ⁡ θ cos ⁡ ϕ − cos ⁡ ψ sin ⁡ ϕ ) g − T m cos ⁡ ϕ cos ⁡ θ ] \left[\begin{array}{c} \ddot{x} \\ \ddot{y} \\ \ddot{z} \end{array}\right]=\left[\begin{array}{c} -\frac{T}{m}(\cos \psi \sin \theta \sin \phi+\sin \psi \sin \phi) \\ -\frac{T}{m}(\sin \psi \sin \theta \cos \phi-\cos \psi \sin \phi) \\ g-\frac{T}{m} \cos \phi \cos \theta \end{array}\right] x¨y¨z¨ = mT(cosψsinθsinϕ+sinψsinϕ)mT(sinψsinθcosϕcosψsinϕ)gmTcosϕcosθ
姿态小扰动模型
[ ϕ ¨ θ ¨ ψ ¨ ] = [ 1 I x x [ τ x + qr ⁡ ( I y y − I z z ) − J 1 q Ω ] 1 I y y [ τ y + qr ⁡ ( I z z − I x x ) − J 1 p Ω ] 1 I z z [ τ z + p q ( I x x − I y y ) ] ] {\left[\begin{array}{c} \ddot{\phi} \\ \ddot{\theta} \\ \ddot{\psi} \end{array}\right]=\left[\begin{array}{l} \frac{1}{I_{x x}}\left[\tau_{x}+\operatorname{qr}\left(I_{y y}-I_{z z}\right)-J_{1} q \Omega\right] \\ \frac{1}{I_{y y}}\left[\tau_{y}+\operatorname{qr}\left(I_{z z}-I_{x x}\right)-J_{1} p \Omega\right] \\ \frac{1}{I_{z z}}\left[\tau_{z}+p q\left(I_{x x}-I_{y y}\right)\right] \end{array}\right]} ϕ¨θ¨ψ¨ = Ixx1[τx+qr(IyyIzz)J1qΩ]Iyy1[τy+qr(IzzIxx)J1pΩ]Izz1[τz+pq(IxxIyy)]
Ω = − ϖ 1 + ϖ 2 − ϖ 3 + ϖ 4 \Omega=-\varpi_{1}+\varpi_{2}-\varpi_{3}+\varpi_{4} Ω=ϖ1+ϖ2ϖ3+ϖ4
可见,模型控制变量彼此高度耦合,而PID控制器适用于线性模型,因此需要对模型解耦线性化
显然,如果四旋翼保持姿态平稳,位置固定,需要外力平衡,即
m g = T mg=T mg=T
而对于姿态模型,通常四个电机转速可以彼此抵消 Ω = 0 \Omega=0 Ω=0,则陀螺力矩项可以忽略。于是,小扰动模型简化为
[ ϕ ¨ θ ¨ ψ ¨ ] = [ 1 I x x [ τ x + qr ⁡ ( I y y − I z z ) ] 1 I y y [ τ y + qr ⁡ ( I z z − I x x ) ] 1 I z z [ τ z + p q ( I x x − I y y ) ] ] {\left[\begin{array}{c} \ddot{\phi} \\ \ddot{\theta} \\ \ddot{\psi} \end{array}\right]=\left[\begin{array}{l} \frac{1}{I_{x x}}\left[\tau_{x}+\operatorname{qr}\left(I_{y y}-I_{z z}\right)\right] \\ \frac{1}{I_{y y}}\left[\tau_{y}+\operatorname{qr}\left(I_{z z}-I_{x x}\right)\right] \\ \frac{1}{I_{z z}}\left[\tau_{z}+p q\left(I_{x x}-I_{y y}\right)\right] \end{array}\right]} ϕ¨θ¨ψ¨ = Ixx1[τx+qr(IyyIzz)]Iyy1[τy+qr(IzzIxx)]Izz1[τz+pq(IxxIyy)]
另外,若四旋翼处在平衡状态,其姿态角均为小量,有
q r ≈ q 0 r 0 + r 0 ( q − q 0 ) + q 0 ( r − r 0 ) = 0 q r \approx q_{0} r_{0}+r_{0}\left(q-q_{0}\right)+q_{0}\left(r-r_{0}\right)=0 qrq0r0+r0(qq0)+q0(rr0)=0
故方程可以进一步简化
[ ϕ ¨ θ ¨ ψ ¨ ] = [ 1 I x x 1 I y y 1 I z z ] [ τ x τ y τ z ] \left[\begin{array}{c} \ddot{\phi} \\ \ddot{\theta} \\ \ddot{\psi} \end{array}\right]=\left[\begin{array}{ccc} \frac{1}{I_{x x}} & & \\ & \frac{1}{I_{y y}} & \\ & & \frac{1}{I_{z z}} \end{array}\right]\left[\begin{array}{l} \tau_{x} \\ \tau_{y} \\ \tau_{z} \end{array}\right] ϕ¨θ¨ψ¨ = Ixx1Iyy1Izz1 τxτyτz
至此,四旋翼姿态角之间彼此解耦,并且每个姿态角本身都是一个二阶系统
ϕ ¨ = τ x I x x → ϕ ( s ) = 1 s 2 τ x I x x \ddot{\phi}=\frac{\tau_{x}}{I_{x x}} \rightarrow \phi(s)=\frac{1}{s^{2}} \frac{\tau_{x}}{I_{x x}} ϕ¨=Ixxτxϕ(s)=s21Ixxτx

二 PID控制器设计

在传统控制理论中,使用比例-积分-微分控制器完成对线性模型控制
u ( t ) = K p e ( t ) + K i ∫ 0 t e ( τ ) d τ + K d d d t e ( t ) u(t)=K_{p} e(t)+K_{i} \int_{0}^{t} e(\tau) d \tau+K_{d} \frac{d}{d t} e(t) u(t)=Kpe(t)+Ki0te(τ)dτ+Kddtde(t)

其中 e ( t ) e(t) e(t) 为当前时刻的误差
K p K i K d K_pK_iK_d KpKiKd为比例积分微分增益,需要调试确定。比例系数可以用来加快调节,但是过大会引起系统响应幅度过大,甚至不稳定;积分项用来减少稳态误差,但是过大会引起系统迟滞;微分项是瞬态的考量,可以预测误差变化趋势,但是过大会引起系统过于敏感
u ( t ) u(t) u(t)计算结果作为控制量输入给系统
对于四旋翼的姿态控制,行业内通常是采用串级PID(Cascading PID)以达到更好的控制效果。外环控制角度,内环控制角速度,如下图请添加图片描述

三 四旋翼飞行状态规律

四旋翼是一个欠驱动系统。它的前后、左右、上下、左右旋转飞行依赖于姿态俯仰、滚转、油门变化、偏航来进一步完成
通常,电机产生的拉力与其转速为平方正比关系,即某个电机产生的拉力可以表达为 T = c T ω ~ 2 T=c_T\tilde{\omega}^2 T=cTω~2。其中常量 c T c_T cT是一个转化率,显然与螺旋桨效率有关
根据X四旋翼的几何关系,将力矩代入,有
[ ϕ ¨ θ ¨ ψ ¨ T ] = [ k − k − k k k k − k − k k − k k − k k k k k ] [ ϖ 1 2 ϖ 2 2 ϖ 3 2 ϖ 4 2 ] \left[\begin{array}{c} \ddot{\phi} \\ \ddot{\theta} \\ \ddot{\psi} \\ T \end{array}\right]=\left[\begin{array}{cccc} k & -k & -k & k \\ k & k & -k & -k \\ k & -k & k & -k \\ k & k & k & k \end{array}\right]\left[\begin{array}{c} \varpi_{1}^{2} \\ \varpi_{2}^{2} \\ \varpi_{3}^{2} \\ \varpi_{4}^{2} \end{array}\right] ϕ¨θ¨ψ¨T = kkkkkkkkkkkkkkkk ϖ12ϖ22ϖ32ϖ42
可见,1,2电机一组,3,4电机一组,组内同时提高/降低转速可以实现俯仰运动;1,4电机一组,2,3电机一组,可以实现滚转运动;1,3一组,2,4一组,则可以实现偏航运动;四个电机同时提高(降低)转速则飞行器向上(向下)运动
在这里插入图片描述

综上,我们了解了四旋翼解耦的二阶系统模型,以及行业内如何设计串级PID对四旋翼做姿态控制。现代控制理论在状态空间内设计控制器,衍生了最优控制,鲁棒控制,模型预测控制等等多种控制策略,我们放在后续文章中了解
然而,理想很丰满,计算结果只能作为参考,实际模型系统参数往往通过辨识实验来确定。PID参数也通常结合实际飞行效果来调节,而PID控制器本身在微处理器(micro-processor)中的实现也是离散化的近似计算,对于其实现细节,将在后面的内容中和大家一起探讨~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值