2. 深度控制调试对象剖析

在开始调参之前,必须先弄清楚“深度控制回路里到底有哪些对象、信号从哪里来、又作用到哪里去”。很多调试失败并非PID参数不对,而是对深度通道的组成理解有偏差:把压力传感器的读数直接当成深度、忽略吃水与安装高度差、不清楚推进器推力方向与垂向运动的对应关系,都会让调试陷入反复试凑。本节围绕深度通道的四个关键对象展开:通道组成、压力—深度换算、执行机构作用路径、调试接口与数据记录。

一、深度通道的组成:一条从感知到执行的闭环

ROV/AUV的深度通道本质上是一条闭环信号链:压力传感器 → 深度换算 → 深度控制器 → 垂向执行机构 → 载体垂向运动 → 传感器再次感知。其中,压力传感器(多数为绝压式,量程常见0~100 m或0~300 m水柱)输出的是绝对压力,控制器需要的是相对水面的深度;深度控制器通常是一个PID或PD环节,输出归一化推力指令(如-1~+1);垂向执行机构对ROV多为垂向推进器(矢量布置时由多个推进器合成垂向力),对AUV则可能是压载泵/抛载机构或俯仰+航速耦合产生的深度变化。调试时要明确:这条链上任何一个环节的符号、量纲、延迟不一致,都会表现为“深度不收敛”或“越调越振荡”。

二、压力传感器与深度换算:把压力变成可用的深度值

压力与深度的基本关系为 p = p₀ + ρgh,因此深度 h = (p − p₀)/(ρg)。工程上常用近似:淡水中约每10.2 m增加1 bar,海水中约每10.0 m增加1 bar。实际调试中必须处理三件事:

  • 零点标定:载体在水面时读取传感器压力 p_surface,作为 p₀ 的实测值,而不是用理论大气压。传感器安装位置若低于水线,需扣除安装高度对应的静压。
  • 密度取值:淡水取 ρ≈1000 kg/m³,海水取 ρ≈1025 kg/m³,g 取9.81 m/s²。用错密度在30 m深度上可带来约0.7 m的系统偏差。
  • 滤波与延迟:压力传感器易受波浪、推进器尾流和载体姿态影响,通常加一阶低通滤波(如截止频率1~2 Hz)。滤波越重,深度读数越平滑,但相位滞后越大,会压缩控制器的可用增益。

示例(合理假设):某ROV在水面静止时传感器读数为101.8 kPa,下潜后读数变为131.5 kPa,取 ρ=1025 kg/m³、g=9.81 m/s²,则 h=(131500−101800)/(1025×9.81)≈2.95 m。若直接按“每10 m一bar”粗算会得到约2.97 m,误差可接受;但在浅水精细定深(如0.5 m级)时,应使用完整公式并做好零点标定。

三、执行机构的作用路径:推力如何变成深度变化

垂向推进器的推力方向必须与深度正方向定义一致。建议统一定义:深度向下为正,垂向推力向下为正。若推进器正转产生向下推力,则控制器输出正指令对应下潜;若因螺旋桨反装或电调方向设置导致符号相反,闭环会变成正反馈,表现为“一给指令就快速冲深或上浮”。调试时应先做开环点动:给+20%推力持续2 s,观察深度是否增大,确认符号后再闭环。

对AUV,深度变化往往不是直接垂向力,而是通过俯仰角与航速耦合:俯仰下潜时,深度变化率近似与航速和俯仰角正弦成正比。此时深度控制器的输出实际是俯仰角指令或压载指令,其响应明显慢于ROV推进器,积分时间需要相应加长。压载式AUV还要注意压载泵的流量限制带来的速率饱和,调试时应先测出“最大可用的深度变化率”,作为控制器输出限幅的依据。

深度通道信号链与调试观测点 水面(深度零点参考) 压力传感器 绝压 0~300 m 输出 p (kPa) 深度换算 h=(p−p₀)/(ρg) 零点标定 + 低通滤波 深度控制器 PID / PD 输出 −1~+1 垂向执行机构 ROV:垂向推进器 AUV:压载/俯仰+航速 载体垂向运动 深度 h 变化 深度反馈(闭环) 调试接口与数据记录观测点 ① 原始压力 p 与标定零点 p₀ ② 换算深度 h 与滤波后深度 ③ 控制器输出指令与积分项 ④ 推进器PWM/推力或压载泵状态 ⑤ 载体姿态(俯仰/横滚) ⑥ 时间戳对齐后的日志 建议采样率 ≥ 20 Hz,指令与反馈共用同一时钟,便于分析相位滞后与饱和

四、调试接口与数据记录方式

调试接口决定了你能否“看见”回路内部状态。常见接口包括:串口/CAN读取传感器原始压力与姿态、PWM或推力指令回读、上位机通过MAVLink或自定义协议下发目标深度与PID参数。调试时至少应能同时记录以下量:原始压力、标定零点、换算深度、滤波后深度、目标深度、控制器输出、积分项、推进器指令、俯仰角与时间戳。若只能看到“深度”一个量,就无法区分是传感器漂移、滤波滞后还是执行机构饱和。

数据记录建议统一时间基准,采样率不低于20 Hz(垂向推进器响应较快时建议50 Hz),并在日志中标注每次参数变更的时刻与数值,便于回放对比。一个实用的记录字段示例如下:

t(s), p_raw(kPa), p0(kPa), h_raw(m), h_filt(m), h_target(m),
u_cmd(-1~1), u_int, thruster_pwm(us), pitch(deg), mode
12.40, 118.62, 101.80, 1.673, 1.651, 2.000,
+0.35, 0.082, 1560, -2.1, DEPTH_HOLD

有了这样的日志,调试就从“凭感觉调参”变成“看曲线找原因”:若 h_filt 明显滞后于 h_raw,说明滤波过重;若 u_cmd 长时间停在±1而深度仍不变化,说明执行机构饱和或推力不足;若 u_int 持续单向累积,说明存在稳态偏差(如载体正浮力未配平)。把这些对象和信号关系理清,后续的PID整定才有可靠的依据。