四旋翼数学模型

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

首先打个小广告,一直很喜欢无人机,最近有空研究了一下Pixhawk(PX4)飞控,并把总结和心得写到公众号 “SantyNotebook” 里和大家分享,感兴趣的朋友可以一起来交流一下,如何从零手写无人机飞控~
本篇同步发在公众号推送中《四旋翼数学模型》
作为控制器设计的基础,这篇介绍一下外力作用下多旋翼飞机的状态变化规律~

1 四旋翼飞行器建模

1.1 坐标系与旋转矩阵

我们建立地面坐标系 O e x e y e z e O_{e} x_{e} y_{e} z_{e} Oexeyeze以及机体坐标系 O b x b y b z b O_{b} x_{b} y_{b} z_{b} Obxbybzb,用来描述飞机受力,力矩与其位姿状态。
在这里插入图片描述
如果我们规定:地系沿 O z e Oz_{e} Oze ψ \psi ψ角旋转,再沿 O y e Oy_{e} Oye θ \theta θ角旋转,最后沿 O x e Ox_{e} Oxe轴旋转 ϕ \phi ϕ得到机体系,可以得到旋转矩阵:
R e b = [ cos ⁡ θ cos ⁡ ψ cos ⁡ θ sin ⁡ ψ − sin ⁡ θ − cos ⁡ ϕ sin ⁡ ψ + sin ⁡ ϕ sin ⁡ θ cos ⁡ ψ cos ⁡ ϕ cos ⁡ ψ + sin ⁡ ϕ sin ⁡ θ sin ⁡ ψ sin ⁡ ϕ cos ⁡ θ sin ⁡ ϕ sin ⁡ ψ + cos ⁡ ϕ sin ⁡ θ cos ⁡ ψ − sin ⁡ ϕ cos ⁡ ψ + cos ⁡ ϕ sin ⁡ θ sin ⁡ ψ cos ⁡ ϕ cos ⁡ θ ] R_{e}^{b}=\left[\begin{array}{ccc} \cos \theta \cos \psi & \cos \theta \sin \psi & -\sin \theta \\ -\cos \phi \sin \psi+\sin \phi \sin \theta \cos \psi & \cos \phi \cos \psi+\sin \phi \sin \theta \sin \psi & \sin \phi \cos \theta \\ \sin \phi \sin \psi+\cos \phi \sin \theta \cos \psi & -\sin \phi \cos \psi+\cos \phi \sin \theta \sin \psi & \cos \phi \cos \theta \end{array}\right] Reb= cosθcosψcosϕsinψ+sinϕsinθcosψsinϕsinψ+cosϕsinθcosψcosθsinψcosϕcosψ+sinϕsinθsinψsinϕcosψ+cosϕsinθsinψsinθsinϕcosθcosϕcosθ
它的含义是对于地系中的任意坐标 a ⃗ e \vec{a}_{e} a e,其在机体系中的表达为 a ⃗ b = R e b a ⃗ e \vec{a}_{b}=R_{e}^{b} \vec{a}_{e} a b=Reba e
这样做是很有意义的,因为我们获取了机体内状态,就知道了在惯性系内的表达,反之亦然。
其中的三个角度,常用来表达飞行器当前姿态,即偏航角 ψ \psi ψ,俯仰角 ϕ \phi ϕ,与滚转角 θ \theta θ

1.2 牛顿欧拉方程

刚体运动=质心的平动+绕质心的转动,质心的平动用牛顿第二定律描述,即:
F = m ∗ d v   d i F=m * \frac{\mathrm{d} v}{\mathrm{~d} i} F=m didv
绕质心的转动由欧拉方程描述,即:
M = J ω ˙ + ω × J ω M=J \dot{\omega}+\omega \times J \omega M=Jω˙+ω×Jω
物理含义为:作用在刚体上的合力矩使 M M M得刚体以角速度、角加速度旋转。

1.3 四旋翼飞行器的动力学模型

动力学模型的输入为合外力、合外力矩,输出为速度、角速度。我们假设飞行器只受重力和螺旋桨拉力。

1.3.1 位置动力学模型

根据牛顿第二定律
m v ˙ e = G e + T b m \dot{v}^{e}=G^{e}+T^{b} mv˙e=Ge+Tb
式中, v ˙ e \dot{v}^{e} v˙e G e G^{e} Ge右上角的 e e e代表这是地面坐标系下的向量, T b T^b Tb右上角的 b b b代表这是机体坐标系下的向量,代入有
[ v ˙ x v ˙ y v ˙ z ] = [ 0 0 g ] + 1 m ( R e b ) − 1 [ 0 0 − T ] \left[\begin{array}{l} \dot{v}_{x} \\ \dot{v}_{y} \\ \dot{v}_{z} \end{array}\right]=\left[\begin{array}{c} 0 \\ 0 \\ g \end{array}\right]+\frac{1}{m}\left(R_{e}^{b}\right)^{-1}\left[\begin{array}{c} 0 \\ 0 \\ -T \end{array}\right] v˙xv˙yv˙z = 00g +m1(Reb)1 00T

[ v ˙ x v ˙ y v ˙ z ] = [ − T m ( cos ⁡ ψ sin ⁡ θ sin ⁡ ϕ + sin ⁡ ψ sin ⁡ ϕ ) − T m ( sin ⁡ ψ sin ⁡ θ cos ⁡ ϕ − cos ⁡ ψ sin ⁡ ϕ ) g − T m cos ⁡ ϕ cos ⁡ θ ] \left[\begin{array}{c} \dot{v}_{x} \\ \dot{v}_{y} \\ \dot{v}_{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] v˙xv˙yv˙z = mT(cosψsinθsinϕ+sinψsinϕ)mT(sinψsinθcosϕcosψsinϕ)gmTcosϕcosθ

姿态动力学模型

由欧拉方程可得
J ω ˙ b + ω b × J ω b = G a b + T b J \dot{\omega}^{b}+\omega^{b} \times J \omega^{b}=G_{a}^{b}+T^{b} Jω˙b+ωb×Jωb=Gab+Tb
式中:
J J J为惯性矩阵,是几何形状与质量分布的考量,对于沿 X Y XY XY轴对称的四旋翼无人机:
J = [ I x x − I x y − I x z − I x y I y y − I y z − I x z − I y z I z z ] = [ I x x I y y I z z ] J=\left[\begin{array}{ccc} I_{x x} & -I_{x y} & -I_{x z} \\ -I_{x y} & I_{y y} & -I_{y z} \\ -I_{x z} & -I_{y z} & I_{z z} \end{array}\right]=\left[\begin{array}{lll} I_{x x} & & \\ & I_{y y} & \\ & & I_{z z} \end{array}\right] J= IxxIxyIxzIxyIyyIyzIxzIyzIzz = IxxIyyIzz

ω b \omega^b ωb表示在机体坐标系下的角速度,通常用 p , q , r p,q,r p,q,r来表示在机体轴上的三个分量;
G a G_a Ga表示陀螺力矩,高速旋转脱落非常稳定,有保持自身轴向不变的能力,如果用 J 1 J_1 J1表示整个电机转子和螺旋桨绕机体转轴的总转动惯量, ω ~ 1 , ω ~ 2 , ω ~ 3 , ω ~ 4 \tilde{\omega}_{1}, \tilde{\omega}_{2}, \tilde{\omega}_{3}, \tilde{\omega}_{4} ω~1,ω~2,ω~3,ω~4表示4个螺旋桨转速,有:
G a = [ G a , ϕ G a , ϕ G a , ψ ] = [ J 1 q ( ω ~ 1 − ω ~ 2 + ω ~ 3 − ω ~ 4 ) J 1 p ( − ω ~ 1 + ω ~ 2 − ω ~ 3 + ω ~ 4 ) 0 ] G_{a}=\left[\begin{array}{c} G_{a, \phi} \\ G_{a, \phi} \\ G_{a, \psi} \end{array}\right]=\left[\begin{array}{c} J_{1} q\left(\tilde{\omega}_{1}-\tilde{\omega}_{2}+\tilde{\omega}_{3}-\tilde{\omega}_{4}\right) \\ J_{1} p\left(-\tilde{\omega}_{1}+\tilde{\omega}_{2}-\tilde{\omega}_{3}+\tilde{\omega}_{4}\right) \\ 0 \end{array}\right] Ga= Ga,ϕGa,ϕGa,ψ = J1q(ω~1ω~2+ω~3ω~4)J1p(ω~1+ω~2ω~3+ω~4)0

τ \tau τ表示螺旋桨拉力在机体轴上产生的力矩,有三个分量。
整理得:
[ p ˙ q ˙ r ˙ ] = [ 1 I x x [ τ x + q r ( I y y − I z z ) − J 1 q Ω ] 1 I y y [ τ y + q r ( 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} \dot{p} \\ \dot{q} \\ \dot{r} \end{array}\right]=\left[\begin{array}{l} \frac{1}{I_{x x}}\left[\tau_{x}+q r\left(I_{y y}-I_{z z}\right)-J_{1} q \Omega\right] \\ \frac{1}{I_{y y}}\left[\tau_{y}+q r\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] p˙q˙r˙ = Ixx1[τx+qr(IyyIzz)J1qΩ]Iyy1[τy+qr(IzzIxx)J1pΩ]Izz1[τz+pq(IxxIyy)]
Ω = − ω ~ 1 + ω ~ 2 − ω ~ 3 + ω ~ 4 \Omega=-\tilde{\omega}_1+\tilde{\omega}_2-\tilde{\omega}_3+\tilde{\omega}_4 Ω=ω~1+ω~2ω~3+ω~4

1.4 四旋翼飞行器的运动学模型

运动学模型的输入为速度和角速度,输出为位置和姿态。

速度位置方程
[ x ˙ y ˙ z ˙ ] T = [ v x v y v z ] T \left[\begin{array}{lll} \dot{x} & \dot{y} & \dot{z} \end{array}\right]^{T}=\left[\begin{array}{lll} v_{x} & v_{y} & v_{z} \end{array}\right]^{T} [x˙y˙z˙]T=[vxvyvz]T

姿态角的变化率与机体的旋转角速度有如下关系:
[ ϕ ˙ θ ˙ ψ ˙ ] = [ 1 tan ⁡ θ sin ⁡ ϕ tan ⁡ θ cos ⁡ ϕ 0 cos ⁡ ϕ − sin ⁡ ϕ 0 sin ⁡ ϕ / cos ⁡ θ cos ⁡ ϕ / cos ⁡ θ ] [ p q r ] \left[\begin{array}{c} \dot{\phi} \\ \dot{\theta} \\ \dot{\psi} \end{array}\right]=\left[\begin{array}{ccc} 1 & \tan \theta \sin \phi & \tan \theta \cos \phi \\ 0 & \cos \phi & -\sin \phi \\ 0 & \sin \phi / \cos \theta & \cos \phi / \cos \theta \end{array}\right]\left[\begin{array}{l} p \\ q \\ r \end{array}\right] ϕ˙θ˙ψ˙ = 100tanθsinϕcosϕsinϕ/cosθtanθcosϕsinϕcosϕ/cosθ pqr
在小扰动情况下姿态角的变化率与机体的旋转角速度近似相等,上式可以近似为:
[ ϕ ˙ θ ˙ ψ ˙ ] = [ p q r ] \left[\begin{array}{c} \dot{\phi} \\ \dot{\theta} \\ \dot{\psi} \end{array}\right]=\left[\begin{array}{l} p \\ q \\ r \end{array}\right] ϕ˙θ˙ψ˙ = pqr

1.5 四旋翼飞行器的飞行控制刚体模型

四旋翼飞行器的飞行控制刚体模型由动力学模型和运动学模型结合而成,将上面结论全部代入有

位置的模型:
[ 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
定性的认识是,飞机速度变化率受到拉力质量比、重力加速度影响并且和当前姿态有关;而旋转角速度变化与拉力产生的力矩,四个电机转速、飞机惯量以及当前姿态角变化率有关

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到四旋翼无人机的建模代码时,MATLAB是一个非常强大的工具。下面是一个简单的MATLAB代码示例,用于建模四旋翼无人机的运动方程: ```matlab % 四旋翼无人机建模代码示例 % 定义常数 g = 9.81; % 重力加速度 m = 0.5; % 质量 L = 0.25; % 旋翼到质心的距离 % 定义初始条件 x0 = 0; y0 = 0; z0 = 0; phi0 = 0; theta0 = 0; psi0 = 0; u0 = 0; v0 = 0; w0 = 0; p0 = 0; q0 = 0; r0 = 0; % 定义时间步长和模拟时间 dt = 0.01; % 时间步长 t_end = 10; % 模拟时间 % 初始化变量 t = 0:dt:t_end; % 时间向量 N = length(t); % 时间步数 % 初始化状态向量 x = zeros(N,1); y = zeros(N,1); z = zeros(N,1); phi = zeros(N,1); theta = zeros(N,1); psi = zeros(N,1); u = zeros(N,1); v = zeros(N,1); w = zeros(N,1); p = zeros(N,1); q = zeros(N,1); r = zeros(N,1); % 设置初始条件 x(1) = x0; y(1) = y0; z(1) = z0; phi(1) = phi0; theta(1) = theta0; psi(1) = psi0; u(1) = u0; v(1) = v0; w(1) = w0; p(1) = p0; q(1) = q0; r(1) = r0; % 模拟四旋翼无人机的运动 for i = 2:N % 计算加速度 ax = 0; % 在这里可以根据你的模型添加适当的控制算法 ay = 0; % 在这里可以根据你的模型添加适当的控制算法 az = g - (cos(phi(i-1))*cos(theta(i-1))*cos(psi(i-1)) + sin(phi(i-1))*sin(psi(i-1)))*m; % 计算角加速度 p_dot = 0; % 在这里可以根据你的模型添加适当的控制算法 q_dot = 0; % 在这里可以根据你的模型添加适当的控制算法 r_dot = 0; % 在这里可以根据你的模型添加适当的控制算法 % 更新状态 x(i) = x(i-1) + u(i-1)*dt; y(i) = y(i-1) + v(i-1)*dt; z(i) = z(i-1) + w(i-1)*dt; phi(i) = phi(i-1) + p(i-1)*dt; theta(i) = theta(i-1) + q(i-1)*dt; psi(i) = psi(i-1) + r(i-1)*dt; u(i) = u(i-1) + ax*dt; v(i) = v(i-1) + ay*dt; w(i) = w(i-1) + az*dt; p(i) = p(i-1) + p_dot*dt; q(i) = q(i-1) + q_dot*dt; r(i) = r(i-1) + r_dot*dt; end % 绘制无人机的运动轨迹 figure; plot3(x,y,z); xlabel('X'); ylabel('Y'); zlabel('Z'); title('四旋翼无人机运动轨迹'); % 绘制无人机的姿态角随时间的变化 figure; subplot(3,1,1); plot(t,phi); xlabel('时间'); ylabel('滚转角'); title('滚转角随时间的变化'); subplot(3,1,2); plot(t,theta); xlabel('时间'); ylabel('俯仰角'); title('俯仰角随时间的变化'); subplot(3,1,3); plot(t,psi); xlabel('时间'); ylabel('偏航角'); title('偏航角随时间的变化'); ``` 这段代码演示了一个简单的四旋翼无人机的建模过程,其中包括了无人机的位置、姿态角以及速度等状态的模拟。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值