2. ROV六自由度运动定义与坐标系
要精确描述一台ROV在水下的运动,必须先回答两个问题:相对于谁描述,以及沿哪个方向描述。前者是坐标系问题,后者是自由度问题。这两件事定不清楚,后续的推进器布局、控制分配、姿态解算都会失去统一的参照,操作员口中的“向前”和控制器里的“向前”就可能不是同一个方向。
一、两套坐标系:大地坐标系与机体坐标系
大地坐标系(也称惯性坐标系、世界坐标系)固定于水面或海底,不随ROV运动。工程上常采用北-东-地(NED)约定:X轴指向正北,Y轴指向正东,Z轴垂直向下指向地心。这样定义的好处是重力方向恒为+Z,深度增加对应Z增大,符合水下作业的直觉。大地坐标系用来描述ROV在作业区域中的绝对位置和航向,例如“ROV位于布放点北偏东12 m、深度35 m、艏向120°”。
机体坐标系固连于ROV本体,随其一起平移和旋转。常用约定为:X轴指向ROV艏部(前进方向),Y轴指向右舷,Z轴指向底部(下潜方向),原点取在ROV的浮心或重心附近。机体坐标系描述的是ROV自身的运动与受力,推进器推力、水流相对速度、传感器安装位置都在这个坐标系里表达最自然。
两套坐标系之间通过一个旋转矩阵联系。若用欧拉角描述机体相对大地的姿态,按Z-Y-X顺序(先艏摇、再纵摇、最后横滚),从机体坐标到大地坐标的旋转矩阵为:
R = Rz(ψ)·Ry(θ)·Rx(φ)
Rx(φ) = [1, 0, 0; 0, cosφ, -sinφ; 0, sinφ, cosφ]
Ry(θ) = [cosθ, 0, sinθ; 0, 1, 0; -sinθ, 0, cosθ]
Rz(ψ) = [cosψ, -sinψ, 0; sinψ, cosψ, 0; 0, 0, 1]
其中 φ 为横滚角,θ 为纵摇角,ψ 为艏摇角
实际编程时不必手写矩阵乘法,多数库直接提供欧拉角与旋转矩阵、四元数的互转。但必须牢记:欧拉角是有顺序的,Z-Y-X与X-Y-Z得到的结果不同,团队内部必须统一约定并写入接口文档,否则姿态数据在模块间传递时会出现难以排查的偏差。
二、六自由度的定义与正方向
刚体在三维空间中有六个独立运动分量,ROV的六自由度即由此而来。按机体坐标系定义如下:
- 纵荡(Surge):沿机体X轴的平移,向艏为正。对应前进/后退。
- 横荡(Sway):沿机体Y轴的平移,向右舷为正。对应侧移。
- 垂荡(Heave):沿机体Z轴的平移,向下为正。对应下潜/上浮。
- 横滚(Roll):绕机体X轴的转动,按右手定则,从艏部看顺时针为正。
- 纵摇(Pitch):绕机体Y轴的转动,艏部抬起为正(需与所选约定核对)。
- 艏摇(Yaw):绕机体Z轴的转动,艏部向右转为正。
前三个是平移自由度,后三个是旋转自由度。工程上常把纵荡、横荡、艏摇称为“水平面三自由度”,把垂荡、横滚、纵摇称为“垂直面三自由度”,因为前者主要决定ROV在水平面的位置与朝向,后者主要影响深度与姿态稳定。这种划分直接对应推进器的布置思路:水平推进器负责前三个,垂直推进器负责后三个。
三、坐标变换基础:从机体量测到大地位置
ROV上的传感器大多输出机体坐标系下的量,而作业人员关心的是大地坐标系下的位置。以一台装有惯性测量单元(IMU)和多普勒计程仪(DVL)的ROV为例,DVL测得的是机体坐标系下的三轴速度 v_b = [u, v, w]ᵀ,要换算成大地坐标系下的速度,需左乘旋转矩阵:
v_n = R · v_b
若某时刻 φ=2°, θ=-3°, ψ=30°,
机体速度 v_b = [0.5, 0.1, -0.2] m/s(前进0.5、右移0.1、上浮0.2)
则大地速度 v_n ≈ [0.42, 0.31, -0.19] m/s
(数值为示例计算,用于说明变换效果)
可以看到,机体上“纯前进”的运动,在大地坐标系下会分解出北向和东向两个分量,这正是艏向角30°带来的耦合。若忽略这一步变换,直接把机体速度当作大地速度积分,位置估计会随航向变化产生系统性偏差,航向偏离正北越远,误差越大。
位置则由速度积分得到:p_n(k+1) = p_n(k) + v_n · Δt。实际系统中,Δt通常取IMU的采样周期(如10 ms),并对速度做低通滤波以抑制DVL的野值。姿态角本身也需通过陀螺仪角速度积分并结合加速度计、磁力计修正获得,这部分属于姿态解算内容,此处只需明确:姿态角是坐标变换的输入,其精度直接决定位置推算的精度。
四、六自由度与推进器配置的对应关系
理解六自由度的价值在于它直接指导推进器配置。一台典型的六推进器ROV(四水平+两垂直)中,四个水平推进器通过差动组合产生纵荡、横荡和艏摇:全部同向推产生纵荡,左右两组反向推产生艏摇,斜置布置时还可合成横荡。两个垂直推进器一前一后布置,同向推产生垂荡,差动推产生纵摇;横滚通常依靠重心与浮心的垂向间距被动恢复,或由推进器布局间接影响。
下面这张图把两套坐标系、六个自由度以及它们与推进器组的对应关系放在同一视图中,便于建立整体印象。
五、一个容易踩的坑:欧拉角奇异与角度回绕
当纵摇角接近±90°时,横滚与艏摇的旋转轴趋于重合,欧拉角出现奇异,姿态解算会剧烈跳变。ROV正常作业时纵摇一般不超过±30°,很少触及奇异点,但在布放回收、强流冲击或推进器故障导致大幅俯仰时可能出现。工程上的对策是内部姿态解算采用四元数,仅在显示和接口层转换为欧拉角,并对艏摇角做±180°回绕处理,避免从179°跳到-179°时控制回路误判为大幅转向。
另一个常见问题是角度单位混用。控制算法内部多用弧度,操作界面和日志多用度。若在坐标变换前未统一单位,sin(30)与sin(30°)的结果相差一个数量级,表现为ROV“该走直线却画弧”。建议在数据入口处显式标注单位,并在单元测试中用已知姿态验证旋转矩阵输出。
把坐标系约定、六自由度正方向和变换公式三者固定下来,后续的推进器推力分配、控制律设计和操作员指令映射才有共同的语言。下一台ROV下水前,先检查这三项是否已经写进项目文档,比事后排查“为什么它往左偏”要省力得多。