一、课程导论与无人机基础:深度强化学习概览、无人机动力学基础、坐标系与状态表示
各位同学,欢迎来到《深度强化学习无人机路径规划实践》的第一课。
我是这门课的主讲。在无人机行业摸爬滚打了七八年,从最早的飞控调参到现在的智能决策,我踩过的坑确实不少。今天这第一讲,咱们不急着写代码,先把地基打牢。
你想想看,要让无人机自己学会飞,你得先让它明白「自己是谁、在哪、怎么动」。这就是我们今天要聊的三个核心:深度强化学习到底在干嘛?无人机怎么飞起来的?以及我们怎么用数学描述它的状态?
1.1 深度强化学习:不只是「试错」那么简单
很多人一听到「强化学习」,第一反应就是「让机器自己试错呗」。这话对,但不全对。
我个人习惯把深度强化学习比作「教一个新手飞行员开飞机」。你不需要手把手教他每个操作,而是给他一个目标——比如「飞到那个山头」,然后告诉他每次操作后的结果:撞树了扣分,平稳到达加分。慢慢地,他自己就学会了怎么推杆、怎么收油。
核心三要素:
- 状态(State):无人机当前知道的所有信息,比如位置、速度、朝向。
- 动作(Action):无人机能做的操作,比如油门大小、舵面偏转。
- 奖励(Reward):对动作好坏的反馈,比如离目标近了加分,撞障碍物扣分。
为什么非得加个「深度」?因为传统强化学习只能处理简单的状态,比如几个数字。但无人机面对的是连续的空间、复杂的图像。这时候就需要深度神经网络来提取特征。说白了,深度强化学习 = 深度学习的感知能力 + 强化学习的决策能力。
避坑指南: 我曾经在项目里直接用经典 Q-learning 做四旋翼控制,结果状态空间稍微一扩大,Q 表就炸了。后来换成 DQN,才勉强跑起来。所以,对于无人机这种连续控制问题,深度网络几乎是必须的。
1.2 无人机动力学基础:它到底是怎么飞的?
要控制无人机,你得先懂它的「脾气」。四旋翼无人机有四个电机,通过改变转速产生升力和力矩。
嗯,这里要注意:四旋翼不是靠「前后左右」的推力移动的,而是靠倾斜机身,让升力产生水平分量。比如你想往前飞,就得让机头朝下倾斜,这样升力的一部分就会推着你向前。
基本的动力学方程可以简化为:
m * a = F_thrust - m * g - F_drag
I * α = M_roll, M_pitch, M_yaw
其中:
m是质量,a是加速度F_thrust是四个电机的总升力g是重力加速度F_drag是空气阻力(我一般先忽略它,简化模型)I是转动惯量,α是角加速度M_roll, M_pitch, M_yaw分别是横滚、俯仰、偏航力矩
重要提醒: 实际项目中,千万别直接用这个简化模型去飞真机。我吃过亏——仿真里飞得好好的,真机一上天就翻。因为真实环境有风、有振动、有电机响应延迟。建议先在仿真里加噪声,再逐步过渡到真机。
1.3 坐标系与状态表示:用数学描述「我在哪」
无人机自己可不知道什么叫「前方三米」。它只知道传感器读数。所以我们需要一套统一的坐标系来描述它的状态。
常用的坐标系有两个:
- 世界坐标系(惯性系):固定在地面上的坐标系,通常用 NED(北-东-地)或 ENU(东-北-天)。我习惯用 ENU,因为直观。
- 机体坐标系:固定在无人机上的坐标系,原点在重心,X 轴指向机头,Y 轴指向右翼,Z 轴指向下方。
状态表示通常包含:
| 状态量 | 符号 | 说明 |
|---|---|---|
| 位置 | [x, y, z] | 在世界坐标系中的坐标 |
| 速度 | [vx, vy, vz] | 线速度,同样在世界坐标系 |
| 姿态 | [φ, θ, ψ] | 横滚角、俯仰角、偏航角(欧拉角) |
| 角速度 | [p, q, r] | 在机体坐标系下的角速度 |
为什么需要这么多?因为强化学习 agent 需要知道完整的状态才能做出正确决策。比如只给位置不给速度,它可能飞过头了才刹车。
我的经验: 状态表示不是越多越好。我曾经把电机转速也加进状态,结果网络训练慢得要命。后来发现,对于路径规划任务,位置、速度、偏航角就够了。其他状态可以通过控制器的内部状态来补偿。
知识体系总览
下面这张图,是我自己梳理的本章知识结构。你可以把它当作一张地图,后续每一章都会围绕这些核心展开。
这张图里,三个模块是并列的,但实际应用中它们是层层递进的。你先得理解强化学习的框架,然后知道无人机怎么动,最后才能用数学语言把问题描述清楚。缺了任何一环,后面的路径规划都跑不起来。
本章小结:
- 深度强化学习 = 深度感知 + 强化决策,适合无人机这类连续控制问题
- 四旋翼通过倾斜机身产生水平推力,动力学模型是控制的基础
- 状态表示要完整但不过度,位置+速度+偏航角是路径规划的标配
好了,第一讲就到这里。内容不多,但都是后面每一章的基石。下一讲我们会搭建第一个仿真环境,到时候你会亲手写一个最简单的强化学习循环。咱们到时候见。