4. 推进器布置形式与自由度映射
ROV 的六自由度运动能力,本质上不是由“装了几台推进器”直接决定的,而是由推进器数量、安装位置、推力方向三者共同决定的。同样装 6 台推进器,布置方式不同,可能得到完全不同的控制能力:有的能独立控制横移,有的只能靠姿态倾斜“蹭”出一点侧向位移。理解这一点,是读懂 ROV 运动控制的第一步。
先统一约定:本节采用机体坐标系,X 轴指向艏部(前进为正),Y 轴指向右舷(右移为正),Z 轴指向下方(下潜为正);绕 X、Y、Z 的转动分别为横滚(roll)、纵倾(pitch)、艏向(yaw)。全文与图示均按此约定,不再切换。
自由度映射的本质:推力向量到广义力的投影
每台推进器在机体坐标系中都有一个安装位置 r = (x, y, z) 和一个推力方向单位向量 d = (dx, dy, dz)。它产生的推力 T 对 ROV 的贡献可以拆成两部分:沿 d 方向的平动力 T·d,以及绕机体原点的力矩 r × (T·d)。把所有推进器的贡献按列排成一个矩阵,就得到推力分配矩阵 B(6 行 × n 列,n 为推进器数量):
广义力 τ = B · u
τ = [Fx, Fy, Fz, Mx, My, Mz]ᵀ (纵荡、横荡、垂荡、横滚、纵倾、艏向)
u = [T1, T2, ..., Tn]ᵀ (各推进器推力指令)
判断一套布局是否“全驱动”,看的不是 n 的大小,而是 B 的秩是否为 6。秩为 6,说明六个自由度的广义力都能被独立合成,即全驱动(over-actuated 或 fully-actuated);秩小于 6,则至少有一个自由度无法独立控制,属于欠驱动。实际工程中更常用“是否存在某个方向推力需求无法由非负推力组合实现”来判断,因为推进器通常只能单向或双向出力,还要受饱和限制。
典型布局与自由度覆盖对比
下面这张图把四种常见布局放在同一参照下对比,重点看每个布局能“点亮”哪几个自由度,以及哪些自由度只能靠耦合或姿态倾斜间接获得。
从矩阵可以读出几个关键结论。布局 A 只有 3 台推进器,横荡和横滚完全不可控,纵倾只能靠两台尾推的差动间接产生,属于典型欠驱动;布局 B 用四台水平斜置推进器实现了纵荡、横荡、艏向的独立控制,但垂向和横滚、纵倾都缺失,是很多观察级 ROV 的常见方案;布局 C 用“水平矢量 4 台 + 垂向 2 台”凑齐六自由度,是作业级 ROV 的主流配置;布局 D 在 C 的基础上增加垂向和侧向冗余,单台失效后仍能维持六自由度,代价是重量、功耗和成本上升。
数量不等于能力:两个容易踩的坑
第一个坑是“装了 6 台却仍是欠驱动”。例如把 6 台推进器全部水平安装,虽然 n=6,但 B 矩阵中 Fz、Mx、My 三行全为零,秩最多为 3,垂向和两个转动自由度完全失控。第二个坑是“方向对了但位置不对”。两台垂向推进器如果安装在同一条纵轴线上(x 相同、y 相同),它们只能合成垂向力,无法产生横滚力矩;只有左右分置、y 坐标不同,才能通过差动产生横滚控制。这说明布局设计必须同时检查“方向向量”和“位置向量”,缺一不可。
numpy.linalg.matrix_rank)计算秩。若秩为 6,再检查在推力饱和约束下各方向是否仍可达;若秩小于 6,找出零空间对应的不可控方向,判断该方向对任务是否关键。典型布局案例:从观察级到作业级
以一台中小型作业级 ROV 为例(示例参数,非实测):艇体长约 1.2 m、宽 0.8 m,配置 6 台推进器。四台水平推进器安装在艇体四角,方向与 X 轴成 ±45°,位置约为 (±0.5, ±0.35, 0);两台垂向推进器安装在 (0, ±0.3, 0),方向沿 Z 轴。按此参数构造 B 矩阵,水平四台对 Fx、Fy、Mz 的贡献分别为:
# 示例:水平推进器方向角 45°,位置 (±0.5, ±0.35)
# 单台贡献列向量 [dx, dy, 0, -y*dz, x*dz, x*dy - y*dx]ᵀ
# 四台组合后,Fx/Fy/Mz 三行线性无关,秩为 3
# 垂向两台贡献 Fz 与 Mx,与水平组解耦
# 整体 B 矩阵秩 = 6 → 全驱动
实际调试时,还要关注推力分配的死区与饱和。当控制器同时要求较大的 Fx 和 Mz 时,四台水平推进器可能有的接近满推、有的接近零推,此时分配算法需要在“精确合成”与“避免单台饱和”之间折中。常见做法是引入伪逆分配 u = B⁺τ,再对超出限幅的分量做裁剪和重分配;若布局本身冗余度不足,裁剪后实际广义力会偏离指令,表现为转弯时掉速或横移无力,这正是欠驱动布局在复杂机动中“力不从心”的根源。
选择布局时,建议按任务反推:若任务以定深巡航和直线观察为主,布局 B 的 4 推进器方案性价比最高;若需要原地横移、精确悬停和机械臂作业反力补偿,应选布局 C 的 6 推进器全驱动;若任务涉及长航时、高风险环境且不允许单点失效,则考虑布局 D 的冗余配置。布局没有绝对优劣,关键是让 B 矩阵的秩和冗余度匹配任务对六自由度的真实需求。