无人机刚体动力学方程

无人机平动动力学

推导

无人机相对地球(地心地固坐标系)表面的速度与惯性速度的关系可表示为
v I = v E + ω I E × r (1.1) \bm{v}^I=\bm{v}^E+\bm{\omega}^{IE}\times\bm{r} \tag{1.1} vI=vE+ωIE×r(1.1)
v E \bm{v}^E vE相对于机体系求导
( d d t ) B v E = ( d d t ) I v E − ω I B × v E (1.2) \left(\frac{\mathrm{d}}{\mathrm{d}t}\right)^B\bm{v}^E=\left(\frac{\mathrm{d}}{\mathrm{d}t}\right)^I\bm{v}^E-\bm{\omega}^{IB}\times\bm{v}^E \tag{1.2} (dtd)BvE=(dtd)IvEωIB×vE(1.2)
根据矢量在旋转坐标系下的求导规则,对式(1.1)两边在惯性坐标系下求导
a I = [ ( d d t ) I v E + ω I E × v E ] + [ α I E × r + ω I E × ( ω I E × r ) ] (1.3) \bm{a}^I=\left[\left(\frac{\mathrm{d}}{\mathrm{d}t}\right)^I\bm{v}^E + \bm{\omega}^{IE}\times\bm{v}^E\right] + \left[\bm{\alpha}^{IE}\times\bm{r} + \bm{\omega}^{IE}\times\left(\bm{\omega}^{IE}\times\bm{r}\right)\right] \tag{1.3} aI=[(dtd)IvE+ωIE×vE]+[αIE×r+ωIE×(ωIE×r)](1.3)
(1.3)式中, a I \bm{a}^I aI为惯性加速度,有
a I = f + μ (1.4) \bm{a}^I=\bm{f}+\bm{\mu} \tag{1.4} aI=f+μ(1.4)
(1.4)式中, f \bm{f} f为无人机比力, μ \bm{\mu} μ为万有引力加速度。
地球万有引力加速度与地球重力加速度的关系为
g = μ − [ α I E × r + ω I E × ( ω I E × r ) ] (1.5) \bm{g}=\bm{\mu}-\left[\bm{\alpha}^{IE}\times\bm{r} + \bm{\omega}^{IE}\times\left(\bm{\omega}^{IE}\times\bm{r}\right)\right] \tag{1.5} g=μ[αIE×r+ωIE×(ωIE×r)](1.5)
即重力加速度是万有引力加速度去除了地球自转引起的加速度项的影响。
α I E \bm{\alpha}^{IE} αIE为地球自转加速度,可认为地球为匀速转动,因此此项为0。将(1.3)(1.4)带入(1.2)中整理可得
( d d t ) B v E = f + μ − ω I E × v E − [ α I E × r + ω I E × ( ω I E × r ) ] − ω I B × v E (1.6) \left(\frac{\mathrm{d}}{\mathrm{d}t}\right)^B\bm{v}^E = \bm{f}+\bm{\mu} - \bm{\omega}^{IE}\times\bm{v}^E - \left[\bm{\alpha}^{IE}\times\bm{r} + \bm{\omega}^{IE}\times\left(\bm{\omega}^{IE}\times\bm{r}\right)\right]-\bm{\omega}^{IB}\times\bm{v}^E \tag{1.6} (dtd)BvE=f+μωIE×vE[αIE×r+ωIE×(ωIE×r)]ωIB×vE(1.6)
将式(1.5)带入式(1.6)可得
( d d t ) B v E = f + g − ω I E × v E − ω I B × v E (1.7) \left(\frac{\mathrm{d}}{\mathrm{d}t}\right)^B\bm{v}^E = \bm{f}+\bm{g} - \bm{\omega}^{IE}\times\bm{v}^E - \bm{\omega}^{IB}\times\bm{v}^E \tag{1.7} (dtd)BvE=f+gωIE×vEωIB×vE(1.7)
式(1.7)在机体系下的投影可表示为
a B E B = f B + g B − ω B I E × v B E − ω B I B × v B E (1.8) \bm{a}^{EB}_B = \bm{f}_B+\bm{g}_B - \bm{\omega}^{IE}_B\times\bm{v}^E_B - \bm{\omega}^{IB}_B\times\bm{v}^E_B \tag{1.8} aBEB=fB+gBωBIE×vBEωBIB×vBE(1.8)

应用

求解式(1.8)微分方程,可以得到无人机的速度在机体系下的表示。
f B + g B \bm{f}_B+\bm{g}_B fB+gB为无人机动力、气动力、重力等合外力产生的加速度,合起来可以表示为
f B + g B = F B m + M B N [ 0 0 g ] (1.9) \bm{f}_B+\bm{g}_B=\frac{\bm{F}_B}{m}+\bm{M}_{BN} \begin{bmatrix} 0 \\ 0 \\ g \end{bmatrix} \tag{1.9} fB+gB=mFB+MBN 00g (1.9)
ω B I E \bm{\omega}^{IE}_B ωBIE为地球转动角速度在机体系下的投影,可以表示为
ω B I E = M B N M N E [ 0 0 ω I E ] = M B N [ − sin ⁡ μ cos ⁡ λ − sin ⁡ μ sin ⁡ λ − cos ⁡ μ − sin ⁡ λ cos ⁡ λ 0 − cos ⁡ μ cos ⁡ λ − cos ⁡ μ sin ⁡ λ − sin ⁡ μ ] [ 0 0 ω I E ] (1.10) \bm{\omega}^{IE}_B=\bm{M}_{BN}\bm{M}_{NE} \begin{bmatrix} 0 \\ 0 \\ \omega^{IE} \end{bmatrix}=\bm{M}_{BN} \begin{bmatrix} -\sin\mu\cos\lambda & -\sin\mu\sin\lambda & -\cos\mu\\ -\sin\lambda & \cos\lambda & 0\\ -\cos\mu\cos\lambda & -\cos\mu\sin\lambda & -\sin\mu \end{bmatrix} \begin{bmatrix} 0 \\ 0 \\ \omega^{IE} \end{bmatrix} \tag{1.10} ωBIE=MBNMNE 00ωIE =MBN sinμcosλsinλcosμcosλsinμsinλcosλcosμsinλcosμ0sinμ 00ωIE (1.10)
ω B I B \bm{\omega}^{IB}_B ωBIB为无人机转动角速度在机体系下的投影,即陀螺仪的测量值。
带入式(1.8)可得
v ˙ B E = F B m + M B N [ 0 0 g ] − M B N [ − sin ⁡ μ cos ⁡ λ − sin ⁡ μ sin ⁡ λ − cos ⁡ μ − sin ⁡ λ cos ⁡ λ 0 − cos ⁡ μ cos ⁡ λ − cos ⁡ μ sin ⁡ λ − sin ⁡ μ ] [ 0 0 ω I E ] × v B E − ω B I B × v B E (1.11) \bm{\dot{v}}^{E}_B = \frac{\bm{F}_B}{m}+\bm{M}_{BN} \begin{bmatrix} 0 \\ 0 \\ g \end{bmatrix} - \bm{M}_{BN} \begin{bmatrix} -\sin\mu\cos\lambda & -\sin\mu\sin\lambda & -\cos\mu\\ -\sin\lambda & \cos\lambda & 0\\ -\cos\mu\cos\lambda & -\cos\mu\sin\lambda & -\sin\mu \end{bmatrix} \begin{bmatrix} 0 \\ 0 \\ \omega^{IE} \end{bmatrix}\times\bm{v}^E_B - \bm{\omega}^{IB}_B\times\bm{v}^E_B \tag{1.11} v˙BE=mFB+MBN 00g MBN sinμcosλsinλcosμcosλsinμsinλcosλcosμsinλcosμ0sinμ 00ωIE ×vBEωBIB×vBE(1.11)
根据当前姿态转换矩阵、经纬度、陀螺仪测量角速度、机体系合外力、当前重力加速度可以求解微分方程(1.11),得到无人机速度在机体系下的分量。经过姿态转换矩阵,可得到无人机在NED坐标系下的速度。

无人机转动动力学

无人机刚体绕质心转动的过程可以由欧拉动力学方程描述
ω ˙ I B = I − 1 [ M − ω I B × ( I ω I B ) ] (2.1) \bm{\dot{\omega}}^{IB}=\bm{I}^{-1}\left[\bm{M}-\bm{\omega}^{IB}\times\left(\bm{I}\bm{\omega}^{IB}\right)\right] \tag{2.1} ω˙IB=I1[MωIB×(IωIB)](2.1)
其中, ω I B \bm{\omega}^{IB} ωIB为机体系相对惯性系转动的角速度,可由陀螺仪测量出。 I \bm{I} I为原点在刚体质心的惯量矩阵,可表示为
I = [ I x x − I x y − I x z − I y x I y y − I y z − I z x − I z y I z z ] (2.2) \bm{I}=\begin{bmatrix} I_{xx} & -I_{xy} & -I_{xz}\\ -I_{yx} & I_{yy} & -I_{yz}\\ -I_{zx} & -I_{zy} & I_{zz} \end{bmatrix} \tag{2.2} I= IxxIyxIzxIxyIyyIzyIxzIyzIzz (2.2)
对于结构上关于x-z、y-z平面对称的多旋翼,惯量矩阵可以简化为对角阵,即 I = diag { I x x   I y y   I z z } \bm{I}=\textup{diag}\{I_{xx}\:I_{yy}\:I_{zz}\} I=diag{IxxIyyIzz}
(2.1)式在机体系下的投影表达式为
ω ˙ B I B = I − 1 [ M B − ω B I B × ( I ω B I B ) ] (2.3) \bm{\dot{\omega}}^{IB}_B=\bm{I}^{-1}\left[\bm{M}_B-\bm{\omega}^{IB}_B\times\left(\bm{I}\bm{\omega}^{IB}_B\right)\right] \tag{2.3} ω˙BIB=I1[MBωBIB×(IωBIB)](2.3)
根据当前的合外力矩、无人机惯量矩阵求解微分方程(2.3),可以得到无人机相对惯性系转动角速度在机体系下的分量。
得出 ω I B \bm{\omega}^{IB} ωIB后,可容易得出机体系相对于NED坐标系的转动角速度:
ω B N B = ω B I B − ω B I E − ω B E N (2.4) \bm{\omega}^{NB}_B=\bm{\omega}^{IB}_B - \bm{\omega}^{IE}_B - \bm{\omega}^{EN}_B \tag{2.4} ωBNB=ωBIBωBIEωBEN(2.4)
其中, ω B E N \bm{\omega}^{EN}_B ωBEN可以表示为
ω B E N = M B N [ − u R N + h v R E + h − v tan ⁡ μ R E + h ] \bm{\omega}^{EN}_B=\bm{M}_{BN} \begin{bmatrix} -\frac{u}{R_N+h}\\ \frac{v}{R_E+h}\\ -\frac{v\tan\mu}{R_E+h} \end{bmatrix} ωBEN=MBN RN+huRE+hvRE+hvtanμ

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是MATLAB代码示例,用于建立空间中的多刚体动力学方程: ```matlab % 定义刚体 m1 = 1; % 刚体1质量 I1 = eye(3); % 刚体1惯性张量 r1 = [0; 0; 0]; % 刚体1初始位置 v1 = [0; 0; 0]; % 刚体1初始速度 w1 = [0; 0; 0]; % 刚体1初始角速度 m2 = 2; % 刚体2质量 I2 = diag([1, 2, 3]); % 刚体2惯性张量 r2 = [1; 0; 0]; % 刚体2初始位置 v2 = [0; 0; 0]; % 刚体2初始速度 w2 = [0; 1; 0]; % 刚体2初始角速度 % 建立连接 j1 = rigidBodyJoint('revolute'); % 建立旋转关节 j1.setFixedTransform(eye(4)); % 设置关节初始位置和方向 j1.setBody(1, r1); % 将刚体1连接到关节上 j1.setBody(2, r2); % 将刚体2连接到关节上 % 定义作用力和扭矩 g = [0; 0; -9.8]; % 重力加速度 F1 = [0; 0; 0]; % 刚体1作用力 T1 = [0; 0; 0]; % 刚体1扭矩 F2 = [0; 0; 0]; % 刚体2作用力 T2 = [0; 0; 0]; % 刚体2扭矩 % 建立系统 bodies = rigidBodyTree; % 建立刚体树 bodies.Bodies{1} = rigidBody('body1'); % 建立刚体1 bodies.Bodies{1}.Mass = m1; % 设置刚体1质量 bodies.Bodies{1}.Inertia = I1; % 设置刚体1惯性张量 bodies.Bodies{1}.Joint = j1; % 将关节连接到刚体1上 bodies.Bodies{2} = rigidBody('body2'); % 建立刚体2 bodies.Bodies{2}.Mass = m2; % 设置刚体2质量 bodies.Bodies{2}.Inertia = I2; % 设置刚体2惯性张量 bodies.Bodies{2}.Joint = j1; % 将关节连接到刚体2上 bodies.Gravity = g; % 设置重力加速度 % 求解方程 tspan = [0, 10]; % 时间范围 y0 = [r1; v1; w1; r2; v2; w2]; % 初始条件 options = odeset('RelTol', 1e-6, 'AbsTol', 1e-9); % 求解器选项 [t, y] = ode45(@(t,y) dynamicsFunction(bodies, F1, T1, F2, T2, t, y), tspan, y0, options); % 使用ODE45求解器求解方程 % 绘图 plot3(y(:,1), y(:,2), y(:,3), 'b', 'LineWidth', 2); % 绘制刚体1轨迹 hold on; plot3(y(:,4), y(:,5), y(:,6), 'r', 'LineWidth', 2); % 绘制刚体2轨迹 grid on; axis equal; xlabel('X'); ylabel('Y'); zlabel('Z'); % 动力学方程函数 function dydt = dynamicsFunction(bodies, F1, T1, F2, T2, t, y) % 计算刚体1的加速度和角加速度 r1 = y(1:3); v1 = y(4:6); w1 = y(7:9); [F1, T1] = externalForceAndTorque(t, r1, v1, w1, F1, T1); % 计算外力和扭矩 [a1, alpha1] = forwardDynamics(bodies, 1, F1, T1); % 计算加速度和角加速度 % 计算刚体2的加速度和角加速度 r2 = y(10:12); v2 = y(13:15); w2 = y(16:18); [F2, T2] = externalForceAndTorque(t, r2, v2, w2, F2, T2); % 计算外力和扭矩 [a2, alpha2] = forwardDynamics(bodies, 2, F2, T2); % 计算加速度和角加速度 % 将结果打包成向量返回 dydt = [v1; a1; alpha1; v2; a2; alpha2]; end % 计算外力和扭矩函数 function [F, T] = externalForceAndTorque(t, r, v, w, F, T) % 计算外力和扭矩的函数,可以根据实际应用进行修改 F = [0; 0; 0]; T = [0; 0; 0]; end ``` 该示例定义了两个刚体,并通过旋转关节将它们连接起来。通过求解ODE方程,可以得到刚体的位置、速度和加速度。可以根据实际应用修改作用力和扭矩的计算方法,以及增加更多的刚体和连接。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值