# 异构十电机机架数学建模:从单电机力矩到受约束控制分配

异构十电机机架数学建模:从单电机力矩到受约束控制分配

本文面向正在做多旋翼、倾转推进器或水空两栖平台建模的读者,系统梳理异构十电机机架中的核心数学工具:坐标系、单电机六维力矩、控制分配、非线性性能曲线、刚体动力学与验证方法。

文中"已实现"表示已落到 MATLAB/C 代码或数据处理流程中;"预留接口"表示模型方程和参数位置已经准备好,但尚未形成完整算法、实测标定或闭环控制。

文章目录

  • 异构十电机机架数学建模:从单电机力矩到受约束控制分配
    • [1. 问题不是"十个油门",而是"十维推力如何合成六维运动"](#1. 问题不是“十个油门”,而是“十维推力如何合成六维运动”)
    • [2. 第一层:坐标系、向量和叉乘](#2. 第一层:坐标系、向量和叉乘)
      • [2.1 FRD 与 NED 坐标系](#2.1 FRD 与 NED 坐标系)
      • [2.2 电机位置与单位方向向量](#2.2 电机位置与单位方向向量)
      • [2.3 叉乘与反对称矩阵](#2.3 叉乘与反对称矩阵)
    • [3. 第二层:单电机如何贡献六维力矩](#3. 第二层:单电机如何贡献六维力矩)
      • [3.1 推力模型](#3.1 推力模型)
      • [3.2 推力力臂产生的力矩](#3.2 推力力臂产生的力矩)
      • [3.3 螺旋桨反扭矩](#3.3 螺旋桨反扭矩)
      • [3.4 单电机六维力矩](#3.4 单电机六维力矩)
    • [4. 第三层:十台电机如何组成控制分配矩阵](#4. 第三层:十台电机如何组成控制分配矩阵)
      • [4.1 为什么保留 6 维模型,却只分配 4 个通道](#4.1 为什么保留 6 维模型,却只分配 4 个通道)
    • [5. 控制分配中的几个核心名词](#5. 控制分配中的几个核心名词)
      • [5.1 矩阵秩:是否具备独立控制能力](#5.1 矩阵秩:是否具备独立控制能力)
      • [5.2 SVD:控制能力强弱与数值条件](#5.2 SVD:控制能力强弱与数值条件)
      • [5.3 零空间:冗余执行器的自由度](#5.3 零空间:冗余执行器的自由度)
    • [6. 从伪逆到有界优化:为什么不能直接 `pinv`](#6. 从伪逆到有界优化:为什么不能直接 pinv)
      • [6.1 Moore-Penrose 伪逆](#6.1 Moore-Penrose 伪逆)
      • [6.2 非负最小二乘 NNLS](#6.2 非负最小二乘 NNLS)
      • [6.3 有界控制分配](#6.3 有界控制分配)
      • [6.4 投影梯度下降](#6.4 投影梯度下降)
      • [6.5 行归一化与加权最小二乘](#6.5 行归一化与加权最小二乘)
      • [6.6 统一缩放与二分搜索](#6.6 统一缩放与二分搜索)
    • [7. 推力不是油门:必须使用性能曲线](#7. 推力不是油门:必须使用性能曲线)
      • [7.1 查表模型与 PCHIP 插值](#7.1 查表模型与 PCHIP 插值)
      • [7.2 推力反查油门](#7.2 推力反查油门)
      • [7.3 线性分配、非线性复算](#7.3 线性分配、非线性复算)
    • [8. 接入六自由度刚体动力学](#8. 接入六自由度刚体动力学)
      • [8.1 平移动力学](#8.1 平移动力学)
      • [8.2 转动动力学](#8.2 转动动力学)
      • [8.3 四元数与方向余弦矩阵](#8.3 四元数与方向余弦矩阵)
      • [8.4 浮力、阻力与惯量](#8.4 浮力、阻力与惯量)
    • [9. 验证不能只看"能跑",要看残差、边界和对称性](#9. 验证不能只看“能跑”,要看残差、边界和对称性)
      • [9.1 残差](#9.1 残差)
      • [9.2 对称性检查](#9.2 对称性检查)
      • [9.3 回归测试](#9.3 回归测试)
    • [10. 当前阶段应明确区分:已实现与待补齐](#10. 当前阶段应明确区分:已实现与待补齐)
    • [11. 推荐学习顺序](#11. 推荐学习顺序)
    • [12. 小结](#12. 小结)

1. 问题不是"十个油门",而是"十维推力如何合成六维运动"

对于普通四旋翼,电机布局和混控关系较为直观;但当平台拥有十台电机,且电机位置、推力方向、旋向都可能不同,问题会迅速从"给每个电机一个油门"升级为一个受约束的控制分配问题。

核心目标可以概括为:

text 复制代码
几何参数与坐标定义
    -> 单电机产生的力和力矩
    -> 十台电机叠加形成六维力矩
    -> 在推力非负、上限约束下分配各电机推力
    -> 由推力反查油门
    -> 使用真实性能曲线复算误差
    -> 接入六自由度刚体动力学与控制闭环

完整机体力矩(wrench)为:

W = F x , F y , F z , M x , M y , M z T \boldsymbol W = F_x,F_y,F_z,M_x,M_y,M_z^T W=Fx,Fy,Fz,Mx,My,MzT

实际驾驶或上层控制通常只直接给出四个通道:

F x , F y , F z , M z T F_x,F_y,F_z,M_z^T Fx,Fy,Fz,MzT

其中 M x M_x Mx 和 M y M_y My 分别对应滚转、俯仰力矩。它们虽然不是当前驾驶员直接输入,却不能从物理模型中删除,而应作为内部约束或残差指标,避免分配结果带来不可接受的姿态扰动。


2. 第一层:坐标系、向量和叉乘

2.1 FRD 与 NED 坐标系

机体系采用 PX4 常用的 FRD(Forward-Right-Down) 约定:

text 复制代码
x+: 机头前方
y+: 机体右侧
z+: 机体下方

惯性系采用 NED(North-East-Down) 约定:

text 复制代码
x: 北
y: 东
z: 下

这两个坐标系的职责不同:

  • FRD:描述电机安装位置、推力方向、机体系速度与角速度。
  • NED:描述整机在外部空间中的位置、速度、重力方向。

在 NED 系中,重力可写为:

g N = 0 , 0 , g T \boldsymbol g_N=0,0,g^T gN=0,0,gT

2.2 电机位置与单位方向向量

第 i i i 台电机相对于质心的安装位置为:

r i = x i , y i , z i T \boldsymbol r_i=x_i,y_i,z_i^T ri=xi,yi,ziT

其气流方向记为 u i \boldsymbol u_i ui,并要求满足单位向量条件:

∥ u i ∥ 2 = 1 \|\boldsymbol u_i\|_2=1 ∥ui∥2=1

如果方向向量没有归一化,同一推力数值会被错误放大或缩小,后续的力矩和分配矩阵都会失真。

2.3 叉乘与反对称矩阵

当一台电机的推力不通过质心时,会产生力臂力矩:

τ T , i = r i × f i \boldsymbol\tau_{T,i}=\boldsymbol r_i \times \boldsymbol f_i τT,i=ri×fi

为了便于矩阵化计算,可将叉乘写成反对称矩阵形式:

r × = 0 − r z r y r z 0 − r x − r y r x 0 \\boldsymbol r_\times = \begin{bmatrix} 0 & -r_z & r_y\\ r_z & 0 & -r_x\\ -r_y & r_x & 0 \end{bmatrix} r×= 0rz−ry−rz0rxry−rx0

于是:

r × f = r × f \boldsymbol r\times \boldsymbol f=\\boldsymbol r_\times\boldsymbol f r×f=r×f

这一步是从"单电机物理模型"走向"整机控制分配矩阵"的关键桥梁。


3. 第二层:单电机如何贡献六维力矩

3.1 推力模型

若 u i \boldsymbol u_i ui 定义为螺旋桨向外吹风的方向,则机架受到的推力方向应与气流相反:

f i = − T i u i , T i ≥ 0 \boldsymbol f_i=-T_i\boldsymbol u_i,\quad T_i\geq0 fi=−Tiui,Ti≥0

这里 T i T_i Ti 是第 i i i 台电机的推力大小。

3.2 推力力臂产生的力矩

推力作用点偏离质心时:

τ T , i = r i × f i \boldsymbol\tau_{T,i}=\boldsymbol r_i\times\boldsymbol f_i τT,i=ri×fi

这部分决定了推力对滚转、俯仰和偏航的几何贡献。

3.3 螺旋桨反扭矩

电机除产生推力外,还会因螺旋桨旋转向机架施加反作用扭矩:

τ Q , i = s i Q i u i \boldsymbol\tau_{Q,i}=s_iQ_i\boldsymbol u_i τQ,i=siQiui

其中:

  • Q i Q_i Qi:反扭矩大小,单位为 N·m;
  • s i s_i si:旋向符号,通常由 CW/CCW 决定。

以一组交替旋向约定为例:

text 复制代码
M1、M3、M5、M7、M9:  CW,s = +1
M2、M4、M6、M8、M10: CCW,s = -1

旋向不能只写在文档里,必须与实际装机和固件配置逐台核对。旋向符号错误会直接导致偏航控制方向相反。

3.4 单电机六维力矩

单台电机对整机的贡献可统一写成:

w i = f i τ T , i + τ Q , i \boldsymbol w_i= \begin{bmatrix} \boldsymbol f_i\\ \boldsymbol\tau_{T,i}+\boldsymbol\tau_{Q,i} \end{bmatrix} wi=fiτT,i+τQ,i

前 3 项是力,后 3 项是力矩。这就是 actuator wrench,也可以理解为"一个执行器在六自由度空间中的贡献"。


4. 第三层:十台电机如何组成控制分配矩阵

将十台电机推力写成向量:

T = T 1 , T 2 , ... , T 10 T \boldsymbol T=T_1,T_2,\\ldots,T_{10}^T T=T1,T2,...,T10T

将整机力和力矩写成:

W = F x , F y , F z , M x , M y , M z T \boldsymbol W=F_x,F_y,F_z,M_x,M_y,M_z^T W=Fx,Fy,Fz,Mx,My,MzT

则线性化后的控制分配关系为:

W = A T \boldsymbol W=\boldsymbol A\boldsymbol T W=AT

其中 A ∈ R 6 × 10 \boldsymbol A\in\mathbb R^{6\times10} A∈R6×10 是控制分配矩阵。第 i i i 列描述"第 i i i 台电机每增加单位推力,整机六维力矩会如何变化":

A ( : , i ) = − u i − \[ r i × u i + s i κ u i ] \boldsymbol A(:,i)= \begin{bmatrix} -\boldsymbol u_i\\ -\\boldsymbol r_i_\times\boldsymbol u_i+s_i\kappa\boldsymbol u_i \end{bmatrix} A(:,i)=−ui−\[ri×ui+siκui]

这里 κ \kappa κ 是反扭矩与推力之比的线性近似:

κ ≈ Q max ⁡ T max ⁡ \kappa\approx \frac{Q_{\max}}{T_{\max}} κ≈TmaxQmax

在工程上,这种处理属于"先线性分配,再非线性复算"。它牺牲了一部分模型精度,换来结构清晰、计算轻量和易于迁移到嵌入式 C 的优点。

4.1 为什么保留 6 维模型,却只分配 4 个通道

完整矩阵为:

A 6 ∈ R 6 × 10 \boldsymbol A_6\in\mathbb R^{6\times10} A6∈R6×10

若当前只直接控制 F x , F y , F z , M z F_x,F_y,F_z,M_z Fx,Fy,Fz,Mz,则取出对应行:

A 4 = A 6 ( F x , F y , F z , M z , : ) \boldsymbol A_4=\boldsymbol A_6(F_x,F_y,F_z,M_z,:) A4=A6(Fx,Fy,Fz,Mz,:)

得到:

A 4 ∈ R 4 × 10 \boldsymbol A_4\in\mathbb R^{4\times10} A4∈R4×10

这不代表 M x , M y M_x,M_y Mx,My 不重要。更合理的做法是:四通道用于主目标分配,六维结果用于检查滚转/俯仰残差是否被抑制在可接受范围内。


5. 控制分配中的几个核心名词

5.1 矩阵秩:是否具备独立控制能力

矩阵秩表示独立控制方向的数量。若:

matlab 复制代码
rank(A4) == 4

说明在理想线性模型中,四个主控制通道具有独立控制能力。

但"满秩"不等于"任何指令都能实现"。电机只能正推、每台都有上限,组合动作仍可能因饱和而无法达到目标。

5.2 SVD:控制能力强弱与数值条件

奇异值分解为:

A = U Σ V T \boldsymbol A=\boldsymbol U\boldsymbol\Sigma\boldsymbol V^T A=UΣVT

小奇异值通常意味着某个方向上的控制能力较弱,或对安装误差、参数误差更敏感。对异构机架而言,SVD 是检查"看起来能控"是否"控得稳、控得鲁棒"的重要工具。

5.3 零空间:冗余执行器的自由度

若:

A n = 0 \boldsymbol A\boldsymbol n=0 An=0

则 n \boldsymbol n n 是零空间向量。对于一个已有解 T \boldsymbol T T,可以构造:

T new = T + N α \boldsymbol T_{\text{new}}=\boldsymbol T+\boldsymbol N\boldsymbol\alpha Tnew=T+Nα

在理想模型中,零空间分量不会改变总力和总力矩。十台电机控制四个主通道时,通常拥有可用于负载均衡、避开饱和、降低能耗或控制温升的冗余自由度。


6. 从伪逆到有界优化:为什么不能直接 pinv

6.1 Moore-Penrose 伪逆

最常见的理论解是:

T = A + W \boldsymbol T=\boldsymbol A^+\boldsymbol W T=A+W

MATLAB 中可写为:

matlab 复制代码
T = pinv(A) * W;

它适合做可达性分析、初始解和教学验证,但存在明显工程问题:解中可能出现负推力,也可能超过单台电机能力。

6.2 非负最小二乘 NNLS

NNLS 解决:

min ⁡ T ∥ A T − W ∥ 2 2 s.t. T i ≥ 0 \min_{\boldsymbol T}\|\boldsymbol A\boldsymbol T-\boldsymbol W\|_2^2 \quad \text{s.t.}\quad T_i\geq0 Tmin∥AT−W∥22s.t.Ti≥0

MATLAB 示例:

matlab 复制代码
T = lsqnonneg(A, W);

它比伪逆更符合单向推进器的物理特性,但仍未包含每台电机的上限约束。

6.3 有界控制分配

更接近实际控制器的问题是:

min ⁡ T ∥ A n T − b n ∥ 2 2 \min_{\boldsymbol T}\|\boldsymbol A_n\boldsymbol T-\boldsymbol b_n\|_2^2 Tmin∥AnT−bn∥22

s.t. 0 ≤ T i ≤ T i , max ⁡ \text{s.t.}\quad 0\leq T_i\leq T_{i,\max} s.t.0≤Ti≤Ti,max

例如,若电机理论最大推力为 562.882 N 562.882\text{ N} 562.882 N,使用 80% 的工程降额,则:

T i , max ⁡ = 0.8 × 562.882 = 450.306 N T_{i,\max}=0.8\times562.882=450.306\text{ N} Ti,max=0.8×562.882=450.306 N

80% 上限并非电机物理极限,而是为电压跌落、温升、线损、参数误差和瞬态裕量留出的工程余量。

6.4 投影梯度下降

轻量实现可采用投影梯度下降:

T ← clip ( T − η A n T ( A n T − b n ) , 0 , T max ⁡ ) \boldsymbol T\leftarrow \text{clip}\left( \boldsymbol T-\eta\boldsymbol A_n^T(\boldsymbol A_n\boldsymbol T-\boldsymbol b_n), 0,\boldsymbol T_{\max} \right) T←clip(T−ηAnT(AnT−bn),0,Tmax)

每次迭代后,将推力投影回可行区间:

text 复制代码
0 <= Ti <= Ti,max

它的优点是逻辑简单、计算量可控、容易移植到 C。若后续对最优性、约束处理或实时性能有更高要求,可再比较 QP(二次规划)求解器与投影梯度法的效果。

6.5 行归一化与加权最小二乘

力的单位是 N,力矩的单位是 N·m,量级也可能不同。直接最小化误差会让数值大的通道主导优化,因此需要设置尺度与权重:

A n = w ⊙ A s , b n = w ⊙ W s \boldsymbol A_n=\boldsymbol w\odot\frac{\boldsymbol A}{\boldsymbol s}, \quad \boldsymbol b_n=\boldsymbol w\odot\frac{\boldsymbol W}{\boldsymbol s} An=w⊙sA,bn=w⊙sW

这里的归一化不会改变物理单位,而是改变优化器眼中各通道的相对优先级。

6.6 统一缩放与二分搜索

当多个通道共同提出过大的目标时,不能分别裁剪每个轴,否则运动方向比例会被破坏。更好的方式是寻找统一缩放系数:

W scaled = λ W target , 0 ≤ λ ≤ 1 \boldsymbol W_{\text{scaled}}=\lambda\boldsymbol W_{\text{target}}, \quad0\leq\lambda\leq1 Wscaled=λWtarget,0≤λ≤1

通过二分搜索求最大的可行 λ \lambda λ:

text 复制代码
若当前残差满足要求:增大 lambda
若当前残差不满足要求:减小 lambda

这样可以保持前后、左右、上下、偏航命令的相对比例,仅降低组合动作的总体幅度。


7. 推力不是油门:必须使用性能曲线

电机控制器接收的是油门或 PWM 命令,而分配器求解的是推力。因此需要建立:

text 复制代码
油门 -> 推力 T
油门 -> 反扭矩 Q
油门 -> 电流 / 功率 / 转速

7.1 查表模型与 PCHIP 插值

比起用简单的电磁理论模型,工程中常直接使用官方或实测离散性能曲线。MATLAB 可以采用 PCHIP 插值:

matlab 复制代码
value = interp1(x, y, query, "pchip");

PCHIP 是保形分段三次 Hermite 插值,适合处理单调的电机性能曲线,能避免高阶多项式插值常见的明显振荡。

7.2 推力反查油门

控制分配得到 T i T_i Ti 后,需要反查:

T i → t h r o t t l e i T_i\rightarrow throttle_i Ti→throttlei

实现上可交换查表自变量和因变量:

matlab 复制代码
throttle = interp1(thrust_N, throttle_pct, T_cmd, "pchip");

前提是有效区间内的推力曲线基本单调,并且反查前需要对目标推力做范围裁剪。

7.3 线性分配、非线性复算

完整的 T ( t h r o t t l e ) T(throttle) T(throttle) 与 Q ( t h r o t t l e ) Q(throttle) Q(throttle) 通常是非线性的,而控制分配矩阵需要一个近似线性模型。因此推荐流程为:

text 复制代码
使用 Q/T 近似建立分配矩阵 A
    -> 求十台电机推力
    -> 由推力反查油门
    -> 用真实性能曲线重新计算 Ti、Qi
    -> 重新累加六维力矩
    -> 输出最终残差

这一步非常重要。它决定了线性分配结果在真实电机性能曲线下是否仍然可信。


8. 接入六自由度刚体动力学

8.1 平移动力学

在 NED 系中,平动满足牛顿第二定律:

m v ˙ N = F N m\dot{\boldsymbol v}_N=\boldsymbol F_N mv˙N=FN

机体系中的力通过姿态旋转矩阵转换到 NED:

F N = R B N F B + F gravity/buoyancy/drag \boldsymbol F_N=\boldsymbol R_{BN}\boldsymbol F_B+ \boldsymbol F_{\text{gravity/buoyancy/drag}} FN=RBNFB+Fgravity/buoyancy/drag

8.2 转动动力学

刚体转动采用 Newton-Euler 方程:

I B ω ˙ B = τ B − ω B × ( I B ω B ) \boldsymbol I_B\dot{\boldsymbol\omega}_B =\boldsymbol\tau_B- \boldsymbol\omega_B\times(\boldsymbol I_B\boldsymbol\omega_B) IBω˙B=τB−ωB×(IBωB)

其中 ω B × ( I B ω B ) \boldsymbol\omega_B\times(\boldsymbol I_B\boldsymbol\omega_B) ωB×(IBωB) 是刚体自身旋转耦合项。尤其在较高角速度下,不能随意忽略。

8.3 四元数与方向余弦矩阵

姿态状态可使用单位四元数:

q = q 0 , q 1 , q 2 , q 3 T \boldsymbol q=q_0,q_1,q_2,q_3^T q=q0,q1,q2,q3T

每次计算时应保持归一化:

matlab 复制代码
q = q / norm(q);

四元数可转换为方向余弦矩阵 R B N \boldsymbol R_{BN} RBN:

v N = R B N v B , v B = R B N T v N \boldsymbol v_N=\boldsymbol R_{BN}\boldsymbol v_B, \quad \boldsymbol v_B=\boldsymbol R_{BN}^T\boldsymbol v_N vN=RBNvB,vB=RBNTvN

四元数运动学常写为:

q ˙ = 1 2 Ω ( ω B ) q \dot{\boldsymbol q}=\frac{1}{2}\boldsymbol\Omega(\boldsymbol\omega_B)\boldsymbol q q˙=21Ω(ωB)q

它比欧拉角更适合连续姿态积分,可避免万向节锁问题。

8.4 浮力、阻力与惯量

若平台存在浮力,净浮力可定义为:

Δ B = B − m g \Delta B=B-mg ΔB=B−mg

在 NED 坐标中,向上的净浮力对应负 z z z 方向。若浮心 CB 与质心 CG 不重合,还会产生恢复或扰动力矩:

τ B = r C B × F B \boldsymbol\tau_B=\boldsymbol r_{CB}\times\boldsymbol F_B τB=rCB×FB

低速验证阶段可先使用线性阻力:

F drag , B = − D v v B \boldsymbol F_{\text{drag},B}=-\boldsymbol D_v\boldsymbol v_B Fdrag,B=−DvvB

惯量未知时,可用包络尺寸的均匀长方体近似作为初值:

I x x = m ( L y 2 + L z 2 ) 12 I_{xx}=\frac{m(L_y^2+L_z^2)}{12} Ixx=12m(Ly2+Lz2)

但必须明确:这只是启动仿真的粗略估计。后续应由 CAD 质量属性、摆锤实验或三轴惯量测试替换。


9. 验证不能只看"能跑",要看残差、边界和对称性

9.1 残差

分配完成后,必须重新计算实际输出:

W actual = A T \boldsymbol W_{\text{actual}}=\boldsymbol A\boldsymbol T Wactual=AT

r = W actual − W target \boldsymbol r= \boldsymbol W_{\text{actual}}-\boldsymbol W_{\text{target}} r=Wactual−Wtarget

残差用于判断:

  • 主控制通道是否达到目标;
  • M x , M y M_x,M_y Mx,My 是否被压制;
  • 饱和后损失了多少控制能力;
  • 非线性性能曲线复算后误差是否仍可接受。

多维残差可以使用二范数汇总:

matlab 复制代码
norm(residual, 2)

但比较前应按力、力矩的尺度进行归一化。

9.2 对称性检查

对于镜像安装的电机对,可以检查:

r a + r b ≈ 0 \boldsymbol r_a+\boldsymbol r_b\approx0 ra+rb≈0

u a + u b ≈ 0 \boldsymbol u_a+\boldsymbol u_b\approx0 ua+ub≈0

需要注意:几何对称不自动等于反扭矩抵消,旋向符号 s i s_i si 也必须同时检查。

9.3 回归测试

建议把关键物理约束写成自动化断言,例如:

text 复制代码
推力非负
推力不超过工程上限
浮力方向正确
浮心偏置后产生正确恢复力矩
Mx/My 残差处于容许范围
统一缩放能保持组合指令方向

模型越复杂,越需要这种"每次改参数都自动复查"的防线。


10. 当前阶段应明确区分:已实现与待补齐

已实现或适合立即实现的基础模块

  • FRD/NED 坐标系与向量变换;
  • 电机位置、气流方向、旋向的 JSON 结构化读取;
  • 单电机推力、力臂力矩和反扭矩计算;
  • 6×10 与 4×10 控制分配矩阵;
  • 矩阵秩、SVD、零空间、伪逆和 NNLS 分析;
  • 有界投影梯度分配;
  • 性能曲线查表、PCHIP 插值与推力反查油门;
  • 线性分配后的非线性曲线复算;
  • 刚体动力学右端方程、四元数姿态和基础验证。

预留接口或后续重点

  • ode45 连续时间积分,形成完整时间序列仿真;
  • Simulink 闭环模型;
  • 严格 QP 有界优化与投影梯度的性能对比;
  • 零空间负载均衡、能耗优化和温升约束;
  • 电机/电调一阶动态与推力变化率限制;
  • 姿态、角速度闭环控制器(PID、LQR、状态反馈等);
  • 速度与位置闭环控制;
  • 二次阻力、侧风、旋翼干扰、地效、尾流等高阶气动模型;
  • 基于实测数据的浮力、浮心、惯量和阻力参数辨识。

11. 推荐学习顺序

如果你正从零搭建这类模型,建议按下面顺序推进:

text 复制代码
1.  FRD/NED 坐标系
2.  向量、叉乘、反对称矩阵
3.  单电机推力与反扭矩
4.  六维力矩 wrench
5.  控制分配矩阵 A
6.  矩阵秩、SVD、零空间
7.  伪逆、NNLS 与边界约束
8.  投影梯度、统一缩放、二分搜索
9.  性能曲线、PCHIP 与推力反查油门
10. 线性分配后的非线性复算
11. 牛顿平动方程与 Euler 转动方程
12. 旋转矩阵、四元数与姿态积分
13. 残差、断言和回归测试
14. ODE45/Simulink 闭环仿真
15. 嵌入式 C 实现、PX4 通信与安全状态机

12. 小结

异构十电机平台建模的本质,不是把十台电机分别映射为十个油门值,而是:

text 复制代码
根据电机几何位置、推力方向和旋向,
把每台电机转化为一个六维力矩列向量;

再通过带非负与上界约束的控制分配算法,
同时求得十台电机的推力;

最后结合真实非线性性能曲线反查油门,
并复算整机输出与目标之间的误差。

当这条链路打通后,后续无论接入姿态控制、位置控制、故障重构、冗余优化还是高保真仿真,都有了稳定而清晰的数学底座。


关键词: 数学建模、控制分配、十电机、多旋翼、异构机架、伪逆、NNLS、投影梯度下降、PCHIP、刚体动力学、四元数、PX4、MATLAB

相关推荐
呱呱巨基1 小时前
Linux 查找命令
linux·笔记·学习·查找命令
zhangrelay2 小时前
ROS 2 Lyrical 第4章 URDF机器人建模与Gazebo Garden仿真
linux·笔记·学习·ubuntu·机器人·ros2
疯狂打码的少年3 小时前
【数据结构】串的模式匹配:KMP算法(重点)
数据结构·笔记·算法
一米阳光86613 小时前
软考(中级)软件设计师核心笔记(8)数据结构——线性结构、数组、矩阵
数据结构·笔记·职场发展·软考·软件设计师·中级职称
疯狂打码的少年4 小时前
【数据结构】树的基本概念与二叉树定义
java·数据结构·笔记·算法
马上去吃汉堡王4 小时前
Windows11安装Geant4
笔记
气泡水。4 小时前
RHCSA笔记实记
linux·笔记
祈禾5 小时前
Redis三大特殊数据类型
运维·服务器·数据库·redis·笔记·缓存
祈禾5 小时前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习