NavRL 阅读笔记:动态环境下的无人机强化学习局部导航到底做了什么
NavRL 阅读笔记:动态环境下的无人机强化学习局部导航到底做了什么
论文:NavRL: Learning Safe Flight in Dynamic Environments
期刊:IEEE RA-L 2025
作者:Zhefan Xu, Xinming Han, Haoyu Shen, Hanyu Jin, Kenji Shimada
代码:https://github.com/Zhefan-Xu/NavRL
这篇论文最值得看的地方,不是“用了 PPO”这件事,而是作者把一个能落到真机上的动态环境局部导航系统拆成了三层:可迁移的状态表示、可学习的局部速度策略、可解释的安全屏蔽层。它不是那种纯 end-to-end 的“图像进、动作出”工作,而是明显更偏工程部署导向。
对于面向动态未知环境的无人机强化学习局部导航与真实部署这一研究方向,这篇论文的相关性非常直接:它已经把“动态障碍感知 + RL 决策 + 安全兜底 + Jetson 真机部署”这条链路走通了一遍。它的长处和短板,也基本对应了后续最容易继续往前推进的切入点。
一页速览
| 维度 | 结论 |
|---|---|
| 研究任务 | 无人机在动态未知环境中做局部导航,既避开静态障碍,也避开移动障碍,并尽量实现零样本真机迁移。 |
| 方法骨架 | 状态表示 + PPO 速度策略 + VO-inspired safety shield |
| 输入表示 | 目标相对状态、静态障碍射线距离图、动态障碍对象级状态 |
| 最值得借鉴的点 | 不直接吃原始图像,而是先把状态做成更利于 sim-to-real 的几何表示 |
| 最强结果 | 在动态和混合场景下碰撞次数明显低于对比方法,Jetson Orin NX 上可实时运行 |
| 最大短板 | 对动态障碍感知质量依赖强,安全屏蔽层在密集动态场景可能偏保守 |
| 对相关研究方向的意义 | 很适合作为“动态环境 RL 局部导航 + 真机部署”的复现基线与对标对象 |
一句话判断: NavRL 不是最花哨的学习导航论文,但很像一个真正能上机的动态局部导航基线。
0. 先说结论:这篇论文和相关研究方向有什么关系?
这篇论文和上述研究方向是强相关的,原因有四个:
- 它研究的就是局部导航,不是全局路径规划,也不是纯控制跟踪。
- 它明确处理了动态障碍,而不是只在静态障碍里做强化学习。
- 它非常强调真实部署,包括 Jetson Orin NX、RealSense D435i、真实行人干扰和零样本 sim-to-real。
- 它已经意识到“纯神经网络不够安全”,所以加入了一个 VO-inspired safety shield。
但它也没有把这个方向彻底做完。更准确地说,它提供了一个很好的可复现基线和问题清单:
- 怎样设计状态表示,才能减少 sim-to-real gap;
- 怎样在动态障碍下让 RL 真的学到反应式避障;
- 怎样给黑盒策略加一个足够轻量、又能上机跑的安全层;
- 真机部署时,瓶颈到底在策略网络,还是在前端感知和安全约束。
因此,如果后续要围绕这一方向继续做论文创新,这篇文章更像是一个很实用的起点,而不是终点。
1. 这篇论文解决什么问题?
这篇论文关注的场景,是无人机在未知或部分未知的动态环境中进行局部自主导航:一边向目标点前进,一边避开静态障碍和移动障碍。现有方法里,传统优化/规划方法往往要把系统拆成预测、建图、轨迹优化等多个模块,参数多、调参重,对环境变化也比较敏感;而一些学习方法虽然有更强的适应性,但要么依赖图像直接输入导致 sim-to-real 很难,要么缺少安全机制,不适合直接上真机。作者想解决的核心痛点,其实就一句话:能不能训练一个强化学习局部导航策略,让它既能躲静态障碍,也能躲动态障碍,还能比较稳地迁移到真实无人机上,并且在策略失误时有一个轻量安全兜底。
2. 方法的核心思路是什么?
整体思路
NavRL 的整体方法并不复杂,但工程组合很有针对性。它先不用原始 RGB 图像直接喂给策略网络,而是把环境整理成两类中间表示:静态障碍的射线距离表示和动态障碍的目标级状态表示。然后用 PPO 学一个目标导向的局部速度策略,输出目标坐标系下的三维速度指令。最后在部署时,不直接相信网络输出,而是用一个基于 Velocity Obstacle 思想的安全屏蔽层,对不安全动作做一次线性规划投影。
换句话说,这篇论文的核心不是“更强的网络”,而是:先把状态表示做对,再让 RL 学反应式避障,最后用几何安全层兜底。
流程梳理
输入 -> 关键模块 -> 输出
RGB-D + 自身状态 + 目标点
-> 静态障碍建图与射线表示
-> 动态障碍检测/跟踪/测速
-> 状态编码 + PPO 策略网络
-> VO-inspired safety shield
-> 无人机速度指令
| 环节 | 具体做法 | 作用 | 是否属于本文重点亮点 |
|---|---|---|---|
| 静态障碍建模 | occupancy voxel map + 3D ray casting | 把复杂静态环境压缩成局部可通行性表示 | 是 |
| 动态障碍建模 | 检测、分类、跟踪、测速 | 显式保留动态目标的位置、速度和尺寸 | 是 |
| 策略学习 | PPO + actor-critic + Beta 动作分布 | 学习目标驱动的局部速度控制 | 是 |
| 安全修正 | VO-inspired action projection | 对网络失误进行轻量几何纠偏 | 是 |
| 大规模训练 | Isaac Sim 并行训练 1024 架四旋翼 | 加快收敛,增强数据多样性 | 是 |
每个关键模块的作用
1. 静态障碍表示
作者先用深度图在线构建 3D occupancy voxel map,然后不把整张体素地图直接送进网络,而是从无人机位置做 3D ray casting,把各个方向上“离障碍有多远”编码成一个二维矩阵。
这个模块的作用是:把复杂的三维静态环境压缩成一个适合策略学习、又比较容易 sim-to-real 的几何表示。
这部分是有价值的设计,因为它避免了直接依赖图像纹理,也避免了整张体素地图过大、过稀疏的问题。
2. 动态障碍表示
动态障碍不进 occupancy map,而是单独检测和跟踪。作者用 U-depth detector、DBSCAN detector、YOLO 分类器和 Kalman filter,最终得到每个动态障碍的相对位置、距离、速度、尺寸。
这个模块的作用是:把“会动的东西”显式建模成目标级对象状态,而不是混进静态地图里。
这里要注意一个细节:这部分动态检测与跟踪主要继承自作者前一篇工作,并不是 NavRL 这篇 paper 的核心算法创新,但它对真实部署非常重要。
3. 状态编码与策略学习
静态障碍矩阵和动态障碍矩阵分别经过 CNN 提取特征,再和无人机内部状态拼接,送入 actor-critic 结构,用 PPO 训练。
这个模块的作用是:让网络学会在目标驱动下输出局部反应速度,而不是显式解轨迹优化问题。
真正值得注意的创新,不是 PPO 本身,而是:
- 状态分成静态/动态两条支路;
- 全部都转到 goal coordinate frame;
- 动作空间是有边界的速度命令,不是姿态、电机或离散动作。
4. 安全屏蔽层
网络输出一个候选速度 V_rl。如果这个速度不会落入任何 velocity obstacle 区域,就直接执行;如果会引发潜在碰撞,就求解一个小规模线性约束优化,把动作投影到最近的安全区域。
这个模块的作用是:在不重做完整规划的前提下,给黑盒 RL 策略加一个可解释、可实时运行的安全补丁。
这一块是全文最有“部署味”的部分,也是最贴近上述研究方向的地方。
哪些部分是作者真正的创新?
如果说得严格一点,这篇论文的创新更像系统创新而不是理论创新:
创新 1:面向 sim-to-real 的状态表示设计
不用原始图像,改用静态射线图 + 动态目标状态。创新 2:面向局部导航的动作设计
直接输出目标坐标系下的三维速度,并用 Beta 分布处理有界连续动作。创新 3:VO-inspired safety shield
在 RL 输出之后做几何安全投影,降低黑盒策略失误带来的碰撞风险。创新 4:大规模并行训练 + 真机验证链路
用 Isaac Sim 同时训练上千架四旋翼,并完成 zero-shot real deployment。
反过来说,PPO、CNN 编码器、Kalman 跟踪本身都不是新东西。
3. 需要重点理解哪些公式?
这篇论文的公式不算多,但有几组必须抓住。重点不是会不会推导,而是要明白这些公式在系统里各自干什么。
| 公式 / 对象 | 在系统里的作用 | 真正需要理解的点 |
|---|---|---|
MDP 目标公式 (1) |
定义 RL 的总体优化目标 | 这是逐时刻局部决策,不是整条轨迹优化 |
内部状态 (2) |
告诉策略“目标在哪、自己怎么动” | 用 goal frame 降低坐标系依赖,提升迁移性 |
动态障碍状态 (3)(4) |
显式描述最近的动态目标 | 关键不是看见障碍,而是知道障碍怎么动 |
静态障碍状态 (5) |
用射线长度编码局部几何 | 把地图变成局部可通行性表示 |
动作公式 (6) |
输出有界连续速度 | 动作是速度而不是低层控制,更适合 sim-to-real |
奖励公式 (7)-(12) |
平衡前进、安全、平滑、高度约束 | 防止只会躲障碍、不往前走,或靠乱飞取巧 |
安全屏蔽公式 (13) |
把危险动作投影到安全区域 | 尽量少改 RL 动作,但不能让它撞上去 |
3.1 强化学习目标
论文把问题写成一个标准 MDP,目标是最大化累计折扣回报:
1 | π* = arg max E[ Σ γ^t R(s_t, a_t) ] |
这没有太多新意,但它说明作者把这个问题当成反应式局部决策来学,而不是轨迹优化问题。也就是说,网络不负责生成整条轨迹,而是每个时刻都根据当前感知状态输出一个速度动作。
3.2 输入状态如何定义
作者设计的状态由三部分组成。
1. 无人机内部状态
1 | S_int = [目标方向单位向量, 到目标距离, 当前速度] |
更具体地说,是把“机器人到目标点的相对位置”拆成方向 + 距离,再加上当前速度。这样做的实际意义是:网络不用自己从大坐标差值里再去学“方向归一化”这件事,优化会更稳定一些。
而且这些量都放在 goal coordinate frame 下。这个设计很关键,因为它弱化了绝对世界坐标的影响,让策略更像“朝目标前进时如何避障”的通用技能,更利于迁移。
2. 动态障碍状态
1 | D_i = [相对方向单位向量, 相对距离, 障碍速度, 障碍尺寸] |
这意味着动态障碍不是一堆像素,而是一组带运动属性的对象。实际含义很直接:策略不仅知道前面有东西,还知道它往哪儿动、动多快、占多大。
对这一研究方向来说,这个设计很值得借鉴,因为动态局部导航的关键往往不是“看到障碍”,而是“知道它在怎么动”。
3. 静态障碍状态
1 | S_stat = [R_θ0, R_θ1, ..., R_θNv] |
这里每个 R_θi 都是一组射线长度,表示不同方向上与静态障碍的距离。它本质上是一个稠密的局部几何可通行性描述。
这个表示的实际意义是:网络拿到的不是地图本身,而是“周围哪些方向更空旷”。这对局部反应式策略很友好。
3.3 输出动作是什么
作者不是直接让网络输出真实速度,而是先输出一个归一化速度,再映射到最大速度范围内:
1 | V_ctrl^G = v_lim * (2 * V_hat_ctrl^G - 1), V_hat_ctrl^G ∈ [0, 1] |
这里最关键的不是这个线性映射,而是背后的动作设计思想:
- 输出的是速度,不是低层控制量;
- 速度有明确边界;
- 策略是在目标坐标系下输出速度;
- 网络参数化的是 Beta distribution,适合有界连续动作空间。
实际含义就是:作者希望动作既好学,又容易跨平台迁移,也方便人理解和监督。
3.4 奖励函数在鼓励什么
总奖励写成:
1 | r = λ1 r_vel + λ2 r_ss + λ3 r_ds + λ4 r_smooth + λ5 r_height |
看起来简单,但每一项都对应一个很现实的飞行偏好。
1. 速度奖励 r_vel
1 | r_vel = goal方向单位向量 · 当前速度 |
它鼓励无人机沿着目标方向高速前进。通俗讲,就是“别磨蹭,往目标方向走”。
2. 静态安全奖励 r_ss
1 | r_ss = 平均 log(射线距离) |
离静态障碍越远,奖励越大。这里用 log 而不是线性距离,意味着作者希望“离得很近时惩罚更敏感,离得已经够远时边际收益变小”。
3. 动态安全奖励 r_ds
1 | r_ds = 平均 log(与动态障碍的距离) |
它和静态安全奖励类似,但针对会动的障碍。实际含义是:策略会倾向于和动态目标保持间距。
4. 平滑奖励 r_smooth
1 | r_smooth = - ||v_t - v_(t-1)|| |
这在真实无人机上很重要。没有这项,RL 很容易学出抖动控制,看起来会“能躲,但飞得很难受”。
5. 高度奖励 r_height
作者额外惩罚无人机过度上升,防止它通过“往高处飞”来投机避障。这个设计虽然简单,但很实用,因为很多 RL 策略确实会钻这种空子。
3.5 安全约束在做什么
部署阶段最重要的是下面这个投影问题:
1 | min ||V_safe - V_rl|| |
它的实际含义很清楚:尽量少改网络动作,但如果网络动作会撞,就把它推到最近的安全速度上。
这里最值得理解的不是公式本身,而是它代表的安全哲学:
- RL 负责“好用”;
- safety shield 负责“别出大事”;
- 两者不是互斥,而是串联。
这很适合真实部署,因为真机系统里往往不敢把最后控制权完全交给神经网络。
4. 实验说明了什么?
| 维度 | 内容 |
|---|---|
| 训练平台 | NVIDIA Isaac Sim,RTX 4090,约 10 小时,并行训练 1024 架四旋翼 |
| 仿真测试 | Gazebo,包含走廊场景以及高密度静态 / 动态 / 混合障碍环境 |
| 真机平台 | 自定义四旋翼 + Jetson Orin NX + Intel RealSense D435i + LIO |
| 对比方法 | EGO-Planner、ViGO、NavRL without safety shield |
| 核心指标 | 训练成功率、训练回报、平均碰撞次数、各模块时延 |
使用了哪些场景、平台和硬件?
作者的实验分三层:
训练:NVIDIA Isaac Sim
使用 RTX 4090,约训练 10 小时,同时并行训练 1024 架四旋翼。仿真测试:Gazebo
包括走廊类场景,以及高密度静态/动态/混合障碍环境。真实飞行测试:自定义四旋翼平台
机载计算为 Jetson Orin NX,传感器使用 Intel RealSense D435i,状态估计使用 LIO。
与哪些方法进行了对比?
主要对比了三类对象:
- EGO-Planner:经典静态局部规划器;
- ViGO:作者之前做的 vision-aided dynamic planner;
- NavRL without safety shield:看安全屏蔽层是否真的有用。
这个对比组合有意义,但也有明显不足:缺少更强的 RL baseline,所以它更像“证明自己能部署且比这两个工程基线更抗动态障碍”,而不是证明自己在 RL 领域绝对最强。
使用了哪些指标?
作者主要看了四类指标:
训练成功率
定义为从起点安全到达目标点且无碰撞。训练回报曲线
平均碰撞次数
在 20 次运行上统计。各模块运行时延
最重要的实验结果是什么?
下面这些数字最值得记住。
| 结果点 | 关键数字 | 说明 |
|---|---|---|
| Curriculum learning 提升成功率 | 74.51% -> 82.71%、62.30% -> 80.96%、54.98% -> 68.65% |
动态障碍越多,课程学习越重要 |
| 动态环境碰撞数 | ViGO 3.15 vs NavRL 0.85 |
NavRL 在动态避障上明显更强 |
| 混合环境碰撞数 | ViGO 4.40 vs NavRL 2.10 |
说明对“静态 + 动态并存”更有优势 |
| safety shield 增益 | 0.85 vs 2.70、2.10 vs 4.60 |
去掉安全层后,动态与混合环境碰撞显著变多 |
| 机载时延 | 15 ms + 27 ms + 7 ms + 16 ms |
Orin NX 上总时延约 65 ms,约 15 Hz,可实时运行 |
1. Curriculum learning 确实有效
训练环境大小为 50m x 50m,动态障碍数量从 60 -> 80 -> 100 -> 120 逐步提升。
在固定训练时间下:
dynamic=80时,成功率从74.51%提升到82.71%dynamic=100时,从62.30%提升到80.96%dynamic=120时,从54.98%提升到68.65%
这说明对于动态障碍局部导航,课程学习不是装饰项,而是训练能不能稳定起来的重要条件。
2. 大规模并行训练有用
作者比较了不同机器人数量下的训练回报,结论是:机器人越多,收敛越快,最终回报也越高。
这个结果很有参考价值,因为如果后续也做 Isaac Sim 或 Omnidrones 一类的大规模并行训练,训练吞吐量很可能决定能不能把“动态交互策略”真正学出来。
3. 真正的优势体现在动态和混合环境
在 20m x 40m 的高密度测试图上,平均碰撞次数如下:
静态环境
- EGO:
0.45 - ViGO:
0.80 - NavRL w/o shield:
0.95 - NavRL:
0.65
- EGO:
纯动态环境
- ViGO:
3.15 - NavRL w/o shield:
2.70 - NavRL:
0.85
- ViGO:
混合环境
- ViGO:
4.40 - NavRL w/o shield:
4.60 - NavRL:
2.10
- ViGO:
这个结果非常说明问题:NavRL 的主要价值不是把静态环境做到极致,而是在动态和混合场景里显著降低碰撞。
4. Safety shield 不是可有可无
从上面的数字也能看出来,去掉 safety shield 后:
- 纯动态环境碰撞从
0.85上升到2.70 - 混合环境碰撞从
2.10上升到4.60
这说明仅靠 RL 策略本身还不够稳,安全屏蔽层在动态环境里几乎是决定性组件。
5. 真机运行时延是可以接受的
Jetson Orin NX 上的运行时间:
- Static perception:
15 ms - Dynamic perception:
27 ms - RL policy:
7 ms - Safety shield:
16 ms
总和大约 65 ms,对应约 15 Hz。这说明它确实可以上机实时跑,但也说明一个事实:瓶颈并不在策略网络,而在前端感知和安全层。
是否有真实无人机实验?
有。作者做了真实室内飞行实验,设置静态障碍,并让行人朝无人机运动,测试其避障与到达目标能力。论文给出的结论是:无人机能够零样本从仿真迁移到真实平台,并在有行人扰动的场景中安全到达目标。
实验是否足以支持作者的结论?
本文认为,它足以支持“这是一个可部署、在动态环境中有效的 RL 局部导航系统”这个结论,但还不足以支持“这是动态无人机导航的通用最优方案”。
原因是:
- baseline 不够丰富,特别缺少更强的 RL 和 hybrid 方法;
- 真实实验展示了可行性,但规模仍然有限;
- 主要指标是碰撞次数,缺少更细的效率、舒适性、死锁率、TTC 裕度等分析;
- 最大速度只有
2.0 m/s,更偏安全导航,不是高速敏捷飞行。
5. 这个方法有哪些局限性?
| 局限性 | 为什么会出现 | 可能失败的场景 | 是否可验证 |
|---|---|---|---|
| 对前端感知质量依赖强 | 策略直接依赖动态障碍检测、关联与速度估计 | 多人交错、遮挡、低光、深度噪声大、目标突然加速 | 可以,做漏检率、测速噪声、感知时延消融 |
| 动态障碍模型过于简化 | 主要把障碍抽象成 bounding box / sphere,并用局部几何近似处理 | 非刚体目标、人群交互、急转弯目标、多障碍博弈 | 可以,构造不同运动模型场景测试 shield 触发率与碰撞率 |
| Safety shield 偏保守 | 只做局部动作投影,不理解长期通行结构 | 密集人群、窄门会车、短时堵塞环境 | 可以,统计 deadlock rate、等待时间、到达时间 |
| 状态表示压缩掉部分信息 | 射线图和对象级状态高效,但丢失纹理、语义与细几何 | 复杂立体场景、细长障碍、语义约束强的环境 | 可以,与 richer map / semantic state 做消融 |
| 实验覆盖面仍有限 | 论文重点是先证明能飞、能避障、能上机 | 室外强光、大场景长航程、高速飞行、密集近距离交互 | 可以,扩展到更复杂真实环境和长期测试 |
最关键的一条: 这篇论文最大的风险不是“策略学不会”,而是“真实部署时前端感知和安全层一起决定了上限”。
6. 可以如何在此基础上创新?
如果后续想围绕这篇论文做研究,优先考虑那些真的能解决部署问题、而且能靠实验验证的方向,而不是只换个 backbone。
| 方向 | 针对原方法的不足 | 可以采用的思路 | 难度 | 是否适合作为论文创新点 |
|---|---|---|---|---|
| 感知不确定性感知的安全屏蔽层 | shield 默认感知可信,但真实检测和测速都有噪声 | 把检测框、速度估计和跟踪协方差引入 VO 约束,做 risk-aware / chance-constrained shield | 中等偏高 | 很适合,且非常贴合真实部署 |
| 遮挡与短时失踪鲁棒的历史记忆策略 | 当前策略对遮挡后重现的目标未必稳 | 加入 track history、短时记忆或显式意图预测 | 中等 | 适合,尤其适合复杂人流场景 |
| 防卡死的 RL + 短时规划混合框架 | reactive policy + shield 在密集动态环境里可能保守甚至卡住 | RL 给局部意图,再由 MPC / sampling / trajectory optimizer 生成短时可执行轨迹 | 高 | 非常适合,论文潜力高 |
| 面向真实部署的 sim-to-real 鲁棒训练 | 论文证明了能迁移,但迁移边界分析不足 | 把真实日志噪声、时延、漏检、模糊回灌训练,做多种 randomization | 中等 | 很适合,尤其适合真机导向工作 |
| 人类动态障碍意图建模 | 目前只处理“障碍在动”,没有建模“障碍想怎么动” | 引入 pedestrian intent prediction、social navigation 约束 | 高 | 适合,但需要更系统的人机交互实验 |
更推荐的组合
感知不确定性建模 + 安全屏蔽层升级 + 真实部署鲁棒训练
这条线最能击中 NavRL 的真实薄弱处,而且最容易形成“动态未知环境 + 真机部署”的清晰论文故事。
7. 最后给出一份简短笔记
| 项目 | 内容 |
|---|---|
| 论文解决的问题 | 让无人机在动态未知环境中进行安全局部导航,同时尽量实现从仿真到真实平台的零样本迁移 |
| 核心方法 | 静态障碍射线图 + 动态障碍目标状态作为输入,PPO 学局部速度策略,再用 VO-inspired safety shield 修正不安全动作 |
| 输入 | 目标相对状态、当前速度、静态障碍射线距离矩阵、动态障碍的位置 / 速度 / 尺寸状态 |
| 输出 | 目标坐标系下的三维速度指令 |
| 主要创新 | 可迁移状态表示、Beta 有界速度动作设计、VO 风格安全屏蔽层、大规模并行训练到真机部署链路 |
| 关键实验结论 | NavRL 在动态和混合环境中的碰撞次数明显低于对比方法;安全屏蔽层对动态场景非常关键;Jetson Orin NX 上可实时运行 |
| 最大局限性 | 对动态障碍感知与跟踪质量依赖很强,且 safety shield 在密集动态场景中可能偏保守、容易卡住 |
| 最值得尝试的创新方向 | 感知不确定性感知的安全屏蔽层,以及考虑时延、漏检和遮挡的真实部署鲁棒训练 |
| 是否值得复现 | 值得,尤其适合作为“动态环境 RL 局部导航 + 真机部署”的强基线 |
| 复现时优先看哪些模块 | 状态表示构造、ray casting 静态编码、动态目标跟踪接口、奖励函数实现、VO safety shield、Isaac Sim 并行训练配置、PX4 / Jetson 部署链路 |
总体评价
如果只从算法新颖性看,NavRL 不是那种会让人惊呼“方法太新了”的论文;但如果从真实系统能不能落地这个角度看,它是很有价值的。它真正回答的问题不是“RL 能不能在论文里跑通”,而是“RL 能不能和感知、安全机制、机载计算一起组成一个能飞的动态导航系统”。
对这一研究方向来说,这篇论文最大的价值有两个:
- 它给出一个能对标、能复现、能上机的动态局部导航基线。
- 它把后续最值得创新的痛点暴露得很清楚:感知不确定性、动态交互建模、shield 的保守性、以及复杂真实场景下的鲁棒性。
因此,本文的结论是:这篇论文很值得读,也值得复现,但更值得在它暴露出来的问题上继续往前推。