04|八推进器:从 22.5° 几何到受约束分配
一台推进器就是一列广义力
对第 i 台推进器,r_i 是相对机体参考原点的位置,d_i 是正推力的单位方向,f_i 是有符号推力。力是 d_i f_i,力矩是 r_i×d_i f_i,因此八台推进器共同组成一个 6×8 矩阵。
若水平推进器方向与机体前轴成 α,则 d_i=[cosα,sinα,0]ᵀ,偏航力矩系数为 x_i sinα−y_i cosα。取 α=22.5°,前向投影约 0.924,右向投影约 0.383。两者比值约 2.414,说明单台方向偏向前进能力;整艇能力还取决于位置、其他推进器方向以及零力矩约束。
伪逆解决了什么
当目标在 A 的值域内,f=A†τ_d 给出无约束的最小欧氏范数解。八个输入对应六个输出时,冗余可以用于减少推力或改善分配。几何满秩说明局部方向覆盖,却不说明推力受限时任何 τ_d 都可达到。
例如两台执行器的无约束解是 [12,−2] N,而单台上限只有 10 N。直接裁成 [10,−2] 会改变合力,也可能引入偏航力矩;重新求解能利用其他推进器共同补偿,这就是优化分配的价值。
第一项追踪广义力,第二项是推力使用的二次代理,第三项平滑变化。推力平方并非精确电功率;若要优化能耗,应使用合适的推进器功率模型。W_τ 先解决 N 与 N·m 的量纲归一化,再表达深度、姿态或平移的优先级。
故障不是简单把输出改成零
完全失效可以将该通道 f_i 固定为零;部分效率损失可写 A diag(η_i)f,其中 η_i∈[0,1]。故障后重新计算可实现集合:原本能同时维持的深度、偏航和平移,可能需要取舍。QP 的残差告诉上层“这一方向的需求暂时做不到”,上层应减速或降低任务复杂度,积分器也要停止积累无法实现的要求。
实现与实验
用几何表生成 A,不手工猜每个混控符号;先逐台计算单位推力造成的力与力矩,再求一个纯前进、纯侧移、纯偏航例子。接着沿各方向逐渐增大需求,画出饱和如何出现。最后逐个模拟推进器失效,比较伪逆后裁剪与受限 QP:重点观察哪个轴被牺牲,以及优先级改变后行为如何变化。
阅读:Fossen 与 Johansen 的控制分配综述,先看受约束问题的组织方式:https://www.fossen.biz/publications/2006%20Fossen%20and%20Johansen%20MED.pdf 。