2. 重心与惯量变化:载荷挂载对无人机重心位置的影响

各位同学,咱们今天聊一个非常实际的问题——挂上载荷之后,无人机到底会发生什么变化?

很多人觉得,挂个相机、挂个机械臂,不就是多了点重量嘛。飞控自己会调,没什么大不了的。嗯,我以前也这么想,直到有一次在项目里吃了大亏。

那次我们给一架六轴无人机挂了一个侧挂的激光雷达。起飞前称重,总重没问题。一飞起来,姿态就开始抖,偏航尤其严重。飞控怎么调参都压不住。后来一查,重心偏了将近4厘米。你看,这就是典型的「重量对了,重心错了」。

所以这一章,咱们把重心和惯量这两个东西彻底讲透。

2.1 载荷挂载对重心位置的影响

先问一个问题:重心偏移是怎么算的?

说白了,就是力矩平衡。你把无人机本身的重心当作原点,挂载点有坐标 (x, y, z),挂载重量是 m_load,无人机自重是 m_uav。那么新的重心位置就是:

X_cg = (m_load * x) / (m_uav + m_load)
Y_cg = (m_load * y) / (m_uav + m_load)
Z_cg = (m_load * z) / (m_uav + m_load)

这个公式很简单,但实际工程里坑很多。我遇到过最典型的情况是——客户说「我的载荷只有500克」,结果装上去一称,加上支架、螺丝、线缆,变成800克。重心位置直接变了将近一倍。

所以我的个人习惯是:永远不要相信标称重量,上秤称一下

咱们来看一个实际案例。一架四轴无人机,自重2.5kg,挂载一个1.2kg的云台相机,挂载点在机身正下方,但偏X轴正方向3cm,Y轴方向2cm。

参数 数值
无人机自重 m_uav 2.5 kg
载荷重量 m_load 1.2 kg
挂载点 X 偏移 +3.0 cm
挂载点 Y 偏移 +2.0 cm
挂载点 Z 偏移 -5.0 cm(下方)

计算一下新的重心偏移:

X_cg = (1.2 * 3.0) / (2.5 + 1.2) = 3.6 / 3.7 ≈ 0.97 cm
Y_cg = (1.2 * 2.0) / 3.7 ≈ 0.65 cm
Z_cg = (1.2 * -5.0) / 3.7 ≈ -1.62 cm

你看,X方向偏移了将近1厘米。对于一架轴距450mm的无人机来说,这个偏移量已经足够让飞控「不舒服」了。

核心结论:重心偏移超过轴距的1%时,就需要认真对待了。对于450mm轴距的飞机,4.5mm以上的偏移就要考虑补偿。

2.2 重心偏移对飞控姿态解算的影响

重心偏移了,飞控会怎么想?

飞控的姿态解算,核心是IMU(惯性测量单元)。IMU测量的是加速度和角速度。正常情况下,飞机悬停时,IMU测到的加速度只有重力加速度,方向竖直向下。

但重心偏移之后,情况就变了。为了保持平衡,飞控必须让电机产生一个额外的力矩来抵消重心偏移带来的倾斜力矩。这个力矩会导致飞机有一个微小的倾斜角。

我举个例子你就明白了。假设重心偏右,飞控为了不让飞机往右倒,会让左边电机转速略高、右边电机转速略低。这样一来,飞机实际上处于一个「左倾」的状态。但飞控的IMU测到的加速度方向是斜的,它会把这种倾斜误判为「水平」。

这就产生了一个问题:飞控认为的水平,和真正的水平,不是一回事

我在项目中遇到过一架测绘无人机,飞控数据显示水平,但实际飞行轨迹一直在缓慢漂移。查了两天才发现,是重心偏移导致飞控的「水平基准」偏了。说白了,飞控被「骗」了。

注意:重心偏移导致的姿态解算误差,在悬停时最明显。高速前飞时,气动力的影响会掩盖一部分问题,但低速和悬停时,问题会暴露无遗。

2.3 转动惯量变化对飞控动态响应的影响

重心偏移是静态问题,转动惯量变化是动态问题。这两个东西经常一起出现,但很多人只关注重心,忽略了惯量。

转动惯量,说白了就是「让飞机转起来有多费劲」。挂上载荷之后,尤其是挂载点离重心比较远的时候,转动惯量会显著增加。

我给你们一个直观的感受:一架裸机,滚转转动惯量大概是 0.01 kg·m²。挂上一个1kg的载荷,如果挂载点离重心10cm,转动惯量会增加 0.01 kg·m²,直接翻倍。

转动惯量变大之后,飞控的响应会变慢。你给一个滚转指令,飞机要更长时间才能达到目标角度。如果飞控参数还是原来的,就会出现超调、震荡,甚至发散。

我记得有一次做重载无人机测试,挂上30kg的载荷之后,飞机一打舵就晃得厉害。飞控的PID参数还是按空载调的,结果就是——飞控觉得「我已经给了足够的力了」,但飞机实际响应慢半拍,飞控又继续加力,最后就震荡起来了。

那怎么判断惯量变化大不大?有个简单的方法:

  • 挂载点离重心近(比如正下方):惯量变化小,主要考虑重心偏移
  • 挂载点离重心远(比如机臂末端、机头前方):惯量变化大,必须重新调参

我的经验:如果挂载后的转动惯量比空载增加了50%以上,飞控的角速度环增益至少需要降低20%-30%。否则大概率会震荡。

2.4 如何通过飞控参数补偿重心偏移

好,问题来了。重心已经偏了,惯量也变了,怎么办?

最理想的办法是机械上调整,把重心调回来。但很多时候做不到——载荷位置固定,或者客户要求不改结构。那就只能靠飞控参数来补偿了。

我一般分三步走:

第一步:测量并输入重心偏移量

现在很多飞控(比如Pixhawk、ArduPilot、PX4)都支持输入重心偏移参数。你只需要把测量到的X/Y/Z偏移量填进去,飞控会在姿态解算时自动补偿。

在PX4中,参数是:

# 重心偏移参数(单位:米)
COM_OF_X = 0.01   # X方向偏移 1cm
COM_OF_Y = 0.006  # Y方向偏移 0.6cm
COM_OF_Z = -0.016 # Z方向偏移 -1.6cm

填完之后,飞控会重新计算力矩平衡,悬停时的倾斜角会减小很多。

第二步:调整角速度环PID

惯量变化之后,原来的PID参数肯定不合适。我个人的习惯是:

  • 降低P增益:惯量大了,同样的P增益会产生更大的超调。一般降低10%-30%
  • 适当增加D增益:D项提供阻尼,可以抑制震荡。但不要加太多,否则会引入噪声
  • I增益基本不变:I项负责消除稳态误差,惯量变化对它影响不大

举个例子,原来空载时的滚转PID参数是 P=0.15, I=0.1, D=0.003。挂载后我可能会改成:

# 挂载后滚转PID参数
MC_ROLLRATE_P = 0.12   # 降低20%
MC_ROLLRATE_I = 0.1    # 保持不变
MC_ROLLRATE_D = 0.004  # 增加30%

第三步:调整姿态环参数

角速度环调好之后,再调姿态环。姿态环的响应速度可以适当降低,给角速度环留出足够的响应时间。

我一般把姿态环的P增益降低10%-15%。

总结一下补偿流程:

  1. 测量重心偏移,输入飞控参数
  2. 降低角速度环P增益(10%-30%)
  3. 适当增加角速度环D增益(20%-40%)
  4. 降低姿态环P增益(10%-15%)
  5. 试飞,观察响应,微调

嗯,这里要注意一点。参数补偿不是万能的。如果重心偏移太大(超过轴距的3%-5%),飞控再怎么调也救不回来。那时候就必须改机械结构了。

我曾经有个项目,客户非要把一个2kg的载荷挂在机头前方15cm处。我算了一下,重心偏移了将近6cm。我跟客户说「这不行」,客户说「你调参试试」。结果调了两天,悬停勉强能稳住,一飞航线就偏。最后还是改了挂载位置。

所以我的建议是:能用机械解决的,别用飞控硬扛。飞控补偿是锦上添花,不是雪中送炭。

好了,这一章的内容就到这里。下一章咱们聊聊载荷挂载对电机和螺旋桨的影响,那又是另一番天地了。