第二章 坐标系与运动学基础

各位同学,欢迎来到第二章。说实话,坐标系和运动学是无人机飞控的“地基”。我见过不少新手,一上来就调PID、跑路径规划,结果飞机在天上乱转,最后发现是坐标系搞反了。嗯,咱们今天就把这个地基打牢。

2.1 地球坐标系与机体坐标系

无人机要飞,首先得知道“我在哪”和“我朝哪”。这就涉及到两个最核心的坐标系。

地球坐标系,也叫导航坐标系。说白了,就是固定在地球上的一个参考系。通常我们用北-东-地(NED)或者东-北-天(ENU)。我个人习惯用NED,因为和重力方向一致,算起来直观。你想想看,高度下降时,Z轴数值是正的,多符合直觉。

机体坐标系,是固定在无人机身上的。原点在质心,X轴指向机头,Y轴指向右翼,Z轴指向下。这个坐标系会随着飞机姿态变化而变化。

我在项目中遇到过一个问题:有个飞控员把GPS的经纬度直接当成平面坐标用,结果飞机飞出去500米就偏了200米。为什么?因为地球是圆的,经纬度是球面坐标,不是平面坐标。这里需要做投影转换,比如用UTM投影。

核心要点: 地球坐标系是“世界”,机体坐标系是“自我”。所有路径规划最终都要转换到地球坐标系下执行。

2.2 欧拉角与四元数

飞机姿态怎么描述?最直观的是欧拉角:俯仰角(Pitch)、滚转角(Roll)、偏航角(Yaw)。

但欧拉角有个致命问题——万向锁。当俯仰角接近±90°时,滚转和偏航会耦合,丢失一个自由度。我记得第一次做特技飞行时,飞机一个筋斗翻过去,姿态解算直接炸了,就是因为万向锁。

所以,实际工程中我们更常用四元数。四元数用四个数表示旋转,没有奇点,计算效率也高。它长这样:

q = w + x*i + y*j + z*k
其中 w^2 + x^2 + y^2 + z^2 = 1

你可能会问:“四元数这么抽象,怎么用?”其实在代码里,我们通常用库函数做转换。比如从欧拉角转四元数:

// 伪代码示例:欧拉角转四元数
function eulerToQuaternion(roll, pitch, yaw):
    cy = cos(yaw * 0.5)
    sy = sin(yaw * 0.5)
    cp = cos(pitch * 0.5)
    sp = sin(pitch * 0.5)
    cr = cos(roll * 0.5)
    sr = sin(roll * 0.5)

    w = cr * cp * cy + sr * sp * sy
    x = sr * cp * cy - cr * sp * sy
    y = cr * sp * cy + sr * cp * sy
    z = cr * cp * sy - sr * sp * cy
    return (w, x, y, z)

我的经验: 在飞控中,姿态更新用四元数,人机交互显示用欧拉角。这样既避免了万向锁,又方便调试。

2.3 无人机运动学模型

运动学模型,说白了就是“力怎么产生运动”。对于四旋翼,我们通常做简化:

  • 位置运动: 由四个电机的总升力控制垂直方向,由姿态倾斜产生水平加速度。
  • 姿态运动: 由电机差速产生力矩,控制俯仰、滚转、偏航。

我给大家一个简化的运动学方程:

// 位置运动学(忽略空气阻力)
ddot_x = (F_total / m) * (cos(phi)*sin(theta)*cos(psi) + sin(phi)*sin(psi))
ddot_y = (F_total / m) * (cos(phi)*sin(theta)*sin(psi) - sin(phi)*cos(psi))
ddot_z = (F_total / m) * (cos(phi)*cos(theta)) - g

// 姿态运动学(小角度近似)
dot_phi   = p + q*sin(phi)*tan(theta) + r*cos(phi)*tan(theta)
dot_theta = q*cos(phi) - r*sin(phi)
dot_psi   = (q*sin(phi) + r*cos(phi)) / cos(theta)

嗯,这里要注意,小角度近似只在姿态角小于30°时有效。我做航拍无人机时,客户要求大角度机动,就不能用这个近似了,得用完整的四元数运动学。

2.4 动力学模型简介

动力学模型比运动学更进一步,它考虑“力是怎么产生的”。对于四旋翼,核心是电机转速到力和力矩的映射。

控制量 电机关系 物理意义
总升力 (F_total) F1 + F2 + F3 + F4 控制垂直运动
滚转力矩 (τ_phi) L * (F2 - F4) 控制左右倾斜
俯仰力矩 (τ_theta) L * (F1 - F3) 控制前后倾斜
偏航力矩 (τ_psi) M * (F1 - F2 + F3 - F4) 控制旋转

其中L是电机到质心的距离,M是反扭矩系数。每个电机的力F_i ≈ k * ω_i²,k是升力系数。

避坑指南: 我曾经在调试时发现飞机起飞后一直往一边偏,查了三天,最后发现是四个电机的升力系数k不一致。所以,装机后一定要做电机标定,确保每个电机的响应一致。

知识体系总览

下面这张图,是我自己梳理的本章知识结构。你可以把它当作一个“地图”,学完后再回来看,会更有感觉。

坐标系与运动学基础 坐标系 地球坐标系 (NED) 机体坐标系 姿态表示 欧拉角 四元数 数学模型 运动学模型 动力学模型 核心:坐标系转换 → 姿态描述 → 运动方程 所有路径规划都建立在这个基础之上

好了,这一章的内容就到这里。坐标系、欧拉角、四元数、运动学、动力学——这些概念你可能会觉得有点枯燥,但相信我,它们是后续所有路径规划算法的“语言”。没有这个基础,你写的代码在天上就是一堆乱码。

下一章,我们会进入路径规划的核心——搜索算法。到时候你会发现,今天学的坐标系转换,就是搜索算法的“眼睛”。


专注资料整理