当前位置: 首页 > article >正文

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容
论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)
核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。
核心算法基于近端策略优化(PPO)的深度强化学习。
主要创新点1. NavRL框架:提出了一个完整的端到端深度强化学习导航框架,专为动态环境设计。
2. 零样本迁移:通过精心设计的状态(分离的动/静态障碍物表示)和动作(归一化速度)表示,实现了从仿真到真实世界的零样本(Zero-shot)迁移。
3. 安全护盾:引入一个基于速度障碍(Velocity Obstacle)概念的简单有效安全护盾,用于在线修正策略网络输出的潜在危险动作,显著提高安全性。
4. 高效训练:利用NVIDIA Isaac Sim实现大规模并行训练(数千个智能体),并结合课程学习策略,大幅加速了模型收敛并提升了性能。
实验验证在仿真环境(Isaac Sim, Gazebo)和真实物理环境中进行了广泛的实验,并与主流的规划器(EGO-Planner, ViGO)进行了性能对比。
主要成果该方法能够在动态环境中实现安全导航,碰撞次数显著低于基准方法,尤其是在动态和混合环境中。成功验证了零样本迁移到真实世界的能力,且整个系统能在机载计算机(Jetson Orin NX)上实时运行。

具体实现流程

该论文提出的NavRL框架的实现流程可以分解为以下几个关键步骤,其逻辑紧密围绕图2所示的架构:

  1. 输入(Input)

    • 传感器数据:机载RGB-D相机提供的彩色图像和深度图像。
    • 机器人状态:通过机载里程计(如LIO)获取的机器人自身状态,包括当前位置 P r P_r Pr、速度 V r V_r Vr,以及预设的导航目标点位置 P g P_g Pg
  2. 感知模块(Perception Module):此模块负责处理原始输入,并区分静态与动态障碍物。

    • 静态障碍物处理:利用深度图像,即时构建一个3D占用体素地图(Occupancy Voxel Map),用于表示环境中的静态结构,如墙壁、柱子等。
    • 动态障碍物处理
      • 使用一个集成的轻量级检测器(U-depth + DBSCAN)来从点云中检测3D边界框。
      • 利用轻量级YOLO分类器,对3D检测框在2D图像上的投影进行分类,以区分动态障碍物(如行人)。
      • 通过卡尔曼滤波器对连续检测到的动态障碍物进行跟踪,以估计其位置 P o P_o Po 和速度 V o V_o Vo
  3. 状态表示(State Representation):将感知结果转化为策略网络可以理解的格式。

    • 静态状态 (S_stat):从机器人当前位置向3D占用地图进行360度多层光线投射(Ray Casting),将得到的各方向光线长度(到障碍物的距离)组成一个2D矩阵。
    • 动态状态 (S_dyn):将最接近的 N d N_d Nd 个动态障碍物的相对位置、范数、相对速度、尺寸等信息组织成一个2D矩阵。
    • 内部状态 (S_int):将机器人到目标点的单位方向向量、距离以及自身速度,组合成一个1D向量。所有向量都在“目标坐标系”下表示,以增强泛化能力。
  4. 策略网络与动作生成(RL Policy Network)

    • 特征提取:两个独立的CNN(卷积神经网络)分别处理静态和动态状态的2D矩阵,提取其特征并输出为1D的嵌入向量。
    • 状态融合:将静态特征嵌入、动态特征嵌入和内部状态向量拼接(Concatenate)成一个完整的状态向量。
    • PPO决策:将完整的状态向量输入到基于PPO算法的演员网络(Actor Network)。网络输出Beta分布的两个参数 (α, β)
    • 动作解码:从Beta分布中采样或取均值,得到一个 [0, 1] 范围内的归一化速度 V c t r l n o r m V_{ctrl}^{norm} Vctrlnorm,然后将其线性映射到机器人的实际速度控制指令 V r l V_{rl} Vrl
  5. 安全护盾(Safety Shield - 仅在部署时使用)

    • 危险评估:根据所有感知到的障碍物(静态和动态)的位置和速度,计算出它们对应的速度障碍(VO)区域。
    • 动作校验:判断策略网络输出的速度指令 V r l V_{rl} Vrl 是否落入任何一个VO区域内。
    • 动作修正
      • 如果 V r l V_{rl} Vrl 是安全的(不在任何VO内),则直接输出该指令。
      • 如果 V r l V_{rl} Vrl 是不安全的,则求解一个小型优化问题(如式13所示),找到一个离 V r l V_{rl} Vrl 最近且在所有VO区域之外的安全速度 V s a f e V_{safe} Vsafe
  6. 最终输出(Final Output)

    • 将经过安全护盾校验或修正后的最终安全速度指令发送给无人机的底层飞行控制器(如PX4)执行。

训练流程:在训练阶段,不使用安全护盾。机器人的动作直接由策略网络生成,并与环境交互。根据预定义的奖励函数(包含速度、安全、平滑度等项)计算奖励值,然后通过PPO算法更新演员网络和评论家网络(Critic Network)的权重。这个过程在NVIDIA Isaac Sim中大规模并行进行,以加速学习。

文章目录

      • I. 引言
      • II. 相关工作
      • III. 方法论
        • A. 障碍物感知系统
        • B. 强化学习公式
        • C. 网络设计和策略训练
        • D. 策略动作安全护盾
      • IV. 结果与讨论
        • A. RL训练结果
        • B. 仿真实验
        • C. 物理飞行测试
      • V. 结论与未来工作

摘要 - 在动态环境中安全飞行要求无人机(UAV)在充满移动障碍物的拥挤空间中导航时做出有效决策。传统方法通常将决策过程分解为用于预测和规划的分层模块。尽管这些手工设计的系统在特定场景下可能表现良好,但如果环境条件发生变化,它们可能会失效,并且通常需要仔细的参数调整。此外,由于使用不精确的数学模型假设和为实现计算效率而进行的简化,其解决方案可能是次优的。为了克服这些限制,本文介绍了NavRL框架,这是一种基于近端策略优化(PPO)算法的深度强化学习导航方法。NavRL利用我们精心设计的状态和动作表示,使得学习到的策略能够在存在静态和动态障碍物的情况下做出安全决策,并实现从仿真到真实世界飞行的零样本迁移。此外,该方法受到速度障碍概念的启发,为训练好的策略采用了一个简单而有效的安全护盾,以减轻神经网络黑盒特性相关的潜在故障。为了加速收敛,我们使用NVIDIA Isaac Sim实现了训练流程,能够与数千架四旋翼无人机进行并行训练。仿真和物理实验¹表明,我们的方法确保了在动态环境中的安全导航,并且与基准方法相比,碰撞次数最少。

索引术语 - 航空系统:感知与自主,强化学习,碰撞避免


I. 引言

自主无人机(UAV)被广泛应用于勘探[1]、搜救[2]和检查[3]等领域。这些任务通常发生在动态环境中,需要有效的碰撞避免。传统方法依赖于手工制作的算法和分层模块,导致系统过于复杂,参数难以调整。相比之下,强化学习(RL)允许无人机通过经验学习决策,提供了更好的适应性和改进的性能。开发基于RL的导航方法对于增强无人机在动态环境中的安全性至关重要。

开发适用于真实世界部署的基于RL的导航方法面临几个挑战。首先,由于强化学习涉及通过碰撞经验来训练机器人,学习过程必须在仿真环境中进行。这在仿真和真实世界的感官信息(特别是相机图像)之间造成了“仿真到现实”(sim-to-real)的迁移问题。先前的工作试图通过开发方法来减少仿真与真实世界环境之间的差距[4][5][6],或直接在真实世界环境中训练机器人[7][8][9]。然而,这些方法通常需要额外的训练步骤,并且在真实世界场景中训练时数据效率低下。其次,即使训练出的RL策略表现出令人满意的性能,由于神经网络的黑盒特性,确保安全仍然具有挑战性,这需要一个有效的安全机制来防止严重故障[10][11][12][13]。最后,训练一个强化学习策略需要大量的机器人经验,而一些先前使用单个机器人收集数据的方法[14][15][16]由于数据多样性有限和并行探索机会减少,常常导致收敛速度缓慢。

为了解决这些问题,本文提出了一种名为NavRL的深度强化学习导航框架,该框架基于近端策略优化(PPO)算法[17]。所提出的框架采用了基于我们感知模块构建的状态和动作表示,该模块专为在动态环境中进行碰撞避免而设计,实现了零样本的“仿真到现实”迁移能力。此外,为防止严重故障,我们利用速度障碍(VO)[18]的概念,创建了一个简单而有效的安全护盾,通过线性规划来优化RL策略网络的动作输出。为了加速训练收敛,我们设计了一个能够使用NVIDIA Isaac Sim同时模拟数千架四旋翼无人机的并行训练流程。我们通过广泛的仿真和物理飞行实验验证了所提出的框架。

在这里插入图片描述

图 1. 使用提出的NavRL框架,一架定制的四旋翼无人机在动态环境中导航。该机器人在静态和动态障碍物中实现了安全导航和有效的碰撞避免。

在各种环境中展示了其确保安全导航的能力。图1展示了我们的无人机使用提出的NavRL框架在动态环境中导航的一个例子。这项工作的主要贡献如下:

  • NavRL导航框架:本工作介绍了一种新颖的基于强化学习的无人机导航系统,以确保在动态环境中的安全自主飞行。NavRL导航框架已作为开源包在GitHub²上提供。
  • 策略动作安全护盾:我们的方法在策略网络的动作输出中加入了一个安全护盾,以基于速度障碍概念增强安全性。
  • 物理飞行实验:在各种环境中进行了真实世界的实验,以展示所提出方法的安全导航能力和零样本“仿真到现实”迁移的有效性。

II. 相关工作

关于无人机在动态环境中的导航研究通常依赖于基于规则的方法和手工制作的算法[19][20][21],这些方法可能很复杂,并且在条件变化时需要仔细调整。相比之下,基于学习的方法降低了复杂性,并且能更好地适应变化的环境。本节主要将基于学习的导航方法分为监督学习和强化学习两类,同时也承认其他方法的存在。

监督学习方法:这类方法使用标记数据集来训练网络。早期的方法[8][22]在真实世界环境中部署机器人,收集图像,并手动用真实的动作进行标记。类似地,一些方法[7][23]预测输入图像的安全性,而不是输出决策,然后使用手工制作的算法来控制机器人。

上述方法需要手动标记的真实世界数据,并且由于数据不足,常常存在泛化能力有限的问题。Loquercio等人[24]在一个自动驾驶数据集上训练网络以实现导航,受益于其庞大的数据量。Jung等人[25]使用基于学习的检测器使无人机在竞速中穿过门,而在[26]中,迭代学习控制被应用于减少此场景下的跟踪误差。基于基础模型的视觉导航研究已经利用来自各种机器人的真实世界经验得以发展[27][28][29]。Simon等人[30]使用一种深度估计方法[31],为配备单目相机的无人机展示了碰撞避免能力。在[32]中提出了一种基于语义图像的命令式学习方法,以实现语义感知的局部导航。

强化学习方法:与监督学习方法相比,强化学习方法受益于仿真中丰富的数据。一些利用Q学习[14][15][33]或价值学习[34][35]的方法已经展示了成功的导航。然而,这些方法受限于离散的动作空间,可能导致次优性能。

策略梯度方法[16][36],使用演员-评论家结构,因其能够在连续动作空间中实现机器人控制而广受欢迎。Kaufmann等人[37]在仿真中训练了一个策略,在无人机竞速中击败了人类冠军,其他研究则增强了其控制性能[38][39]。Song等人[6]通过从具有特权信息的教师策略中蒸馏知识,开发了一个基于视觉的网络,而Xing等人[40]则应用对比学习来改善图像编码。在[41]中,为无人机相关任务呈现了一个全面的强化学习训练流程。

为确保安全,[42]中引入了一种使用“到达-规避”网络的恢复策略,以防止失败。类似地,Kochdumper等人[13]利用可达性分析将不安全的策略动作投影到安全区域。然而,他们的方法需要一个预先计算的可达性集合,其计算成本随动作维度呈指数级增长。

大多数现有方法是为静态环境中的导航和碰撞避免而设计的。一些方法,如[36],展示了动态障碍物避免能力,但没有解决复杂静态场景中的碰撞避免问题。[42]中的方法可以处理静态和动态障碍物,但通过将动态障碍物视为静态障碍物,其性能可能会次优。最近关注安全的方法要么计算成本高昂,要么需要大量训练。这些挑战,加上“仿真到现实”迁移的困难,促使我们提出了一个能够确保安全导航,同时避免静态和动态障碍物的框架。

III. 方法论

提出的NavRL导航框架如图2所示。障碍物感知系统处理RGB-D图像和机器人状态,为静态和动态障碍物生成表示(第III-A节)。第III-B节详细说明了如何将这些障碍物表示转换为网络输入状态,以及机器人动作和训练奖励的定义。在训练期间,我们采用带有演员-评论家网络结构的PPO算法来训练策略和价值网络,如第III-C节所述。在部署时,一个安全护盾被应用于RL策略网络的动作输出,以确保安全(第III-D节)。

A. 障碍物感知系统

由于静态和动态障碍物的属性不同,我们的感知系统对它们进行分开处理,如图2所示。静态障碍物可以有任意的形状和大小,使用离散化格式(如占用体素地图)可以更准确地表示。相反,通常被建模为刚体的动态障碍物,则使用带有估计速度信息的边界框来表示。为静态和动态障碍物使用不同表示的理由在于它们各自的特性。静态障碍物有时具有不规则的几何形状,使得离散表示更适合准确描述其形状。相比之下,动态障碍物(通常是刚体)需要一种能将其作为一个整体来捕捉其状态的表示。此外,用动态障碍物更新占用地图会引入噪声和延迟。

在这里插入图片描述

图 2. 提出的NavRL框架。感知系统处理RGB-D图像和机器人的内部状态,为静态和动态障碍物生成表示。然后,这些表示被送入两个特征提取器,其产生的状态嵌入与机器人的内部状态拼接在一起。在训练阶段,使用演员-评论家结构在NVIDIA Isaac Sim环境中并行训练机器人。在部署阶段,策略网络生成的动作会经过安全护盾机制的进一步精炼,以确保安全的机器人控制。

进一步证明了需要分离表示的合理性。对于静态障碍物的感知,我们创建了一个具有固定内存大小的3D占用体素地图,其大小由环境适用的最大体素数量决定。每个体素的占用数据存储在预分配的数组中。这种设计使我们能够以常数时间复杂度(O(1))访问占用信息。在每个时间步,我们根据最新的深度图像递归地更新每个体素的占用对数概率,并通过迭代它们检测到的边界框来清除动态障碍物的占用数据。需要注意的是,这个静态占用地图可以即时生成,无需任何预先构建的数据。

由于轻量级无人机相机的深度图像噪声较大以及机载计算机处理能力有限,检测3D动态障碍物具有挑战性。为了在最小计算需求下实现准确检测,我们提出了一种结合了两个基于[43]构建的轻量级检测器的集成方法。第一个是U-depth检测器[44],它将原始深度图像转换为U-depth图(类似于俯视图),并使用连续线分组算法来检测3D障碍物边界框。第二个是DBSCAN检测器,它将DBSCAN聚类算法应用于深度图像的点云数据,通过分析每个聚类内的边界点来识别障碍物的中心和尺寸。然而,由于输入数据噪声大,这两个检测器都可能产生大量假阳性。我们提出的集成方法通过寻找两个检测器之间的一致结果来解决这个问题。此外,为了区分静态和动态障碍物,我们采用一个轻量级的YOLO检测器,通过检查从3D检测重新投影到图像平面上的2D边界框来对动态障碍物进行分类。

动态障碍物的速度由跟踪模块估计,该模块分两个阶段运行:数据关联和状态估计。在数据关联阶段,目标是建立连续时间步之间检测到的障碍物的对应关系。为了最小化检测失配,我们为每个障碍物构建一个特征向量,包括其位置、边界框尺寸、点云大小和点云标准差,然后根据潜在匹配障碍物之间的相似性得分来确定匹配。在状态估计阶段,使用卡尔曼滤波器来估计障碍物速度,并应用恒定加速度模型来解释速度随时间的变化。值得注意的是,虽然本框架中的感知系统是基于相机的,但如果其他传感器能提供类似的障碍物表示,也可以使用它们。感知系统中的动态障碍物检测和跟踪基于[43]中提出的方法,读者可以在其中找到更多细节和实现细节。

B. 强化学习公式

导航任务被形式化为一个马尔可夫决策过程(MDP),由元组(S, A, P, R, γ)定义,其中S是状态空间(机器人的内部和感官数据),A是动作空间,转移函数 P ( s t + 1 ∣ s t , a t ) P(s_t+1|s_t, a_t) P(st+1∣st,at)模拟环境动态,奖励函数 R ( s t , a t ) R(s_t, a_t) R(st,at)鼓励达到目标的行为,同时惩罚碰撞和低效动作。目标是学习一个最优策略 π ∗ ( a t ∣ s t ) π^*(a_t|s_t) π(atst),以最大化期望的累积奖励:
π ∗ = arg ⁡ max ⁡ π E [ ∑ t = 0 T γ t R ( s t , a t ) ] ( 1 ) \pi^* = \arg\max_\pi E[\sum_{t=0}^T \gamma^t R(s_t, a_t)] \quad (1) π=argπmaxE[t=0TγtR(st,at)](1)
其中γ ∈ [0, 1]是未来奖励的折扣因子。这个公式使得可以使用强化学习来训练机器人在动态环境中进行安全导航。

状态:作为策略的输入,状态必须包含与导航和碰撞避免相关的所有信息。在我们的系统框架(图2)中,设计的状态由三部分组成:机器人的内部状态、动态障碍物和静态障碍物。机器人的内部状态提供了关于机器人朝向导航目标的方向和距离的详细信息,以及其当前速度,定义为:
在这里插入图片描述
其中 P r P_r Pr P g P_g Pg分别代表机器人位置和目标位置, V r V_r Vr是机器人当前速度。上标 ( . ) G (.)^G (.)G表示该向量在“目标坐标系”中表示,该坐标系的原点定义在机器人的起始位置。在这个坐标系中,x轴与从起始位置 P s P_s Ps指向目标位置的向量对齐,而y轴平行于地平面。这种目标坐标系变换减少了对全局坐标系的依赖,提高了RL训练的整体收敛速度,并且也将应用于障碍物状态表示的定义中。

动态障碍物由一个2D矩阵表示:
S d y n = [ D 1 , . . . , D N d ] T , S d y n ∈ R N d × M , D i ∈ R M . ( 3 ) S_{dyn} = [D_1, ..., D_{N_d}]^T, \quad S_{dyn} \in \mathbb{R}^{N_d \times M}, D_i \in \mathbb{R}^M. \quad (3) Sdyn=[D1,...,DNd]T,SdynRNd×M,DiRM.(3)
在这个公式中,D_i表示第i个最接近的动态障碍物的状态向量,表示为:
在这里插入图片描述
其中 P o P_o Po V o V_o Vo分别代表动态障碍物的中心位置和速度, d i m ( o t ) dim(o_t) dim(ot)表示障碍物的高度和宽度。动态障碍物的数量 N d N_d Nd是预定义的,如果实际检测到的障碍物数量小于此预定义限制,则状态向量的值设为零。内部状态和障碍物状态的相对位置向量被分解为单位向量和其范数,因为这种方法在我们的实验中显示出稍快的收敛速度。

与动态障碍物相比,静态障碍物被表示为地图体素,不能直接输入到神经网络中。因此,我们从机器人位置对地图进行3D光线投射。在图3a中,光线在最大范围内以用户定义的光线投射角度间隔向所有水平方向投射。类似地,图3b展示了在垂直平面上的相同操作。对于垂直平面中的每个对角光线投射角度 θ i θ_i θi,水平平面中所有光线的长度被记录为一个向量 R θ R_θ Rθ。任何超过最大范围的光线都被赋予一个等于最大范围加上一个小的偏移量的长度,从而可以识别出没有障碍物的情况。静态障碍物的表示是通过堆叠所有垂直平面中对角光线角度的光线长度向量来构建的:
S s t a t = [ R θ 0 , . . . , R θ N v ] , S s t a t ∈ R N h × N v , R θ i ∈ R N h , ( 5 ) S_{stat} = [R_{\theta_0}, ..., R_{\theta_{N_v}}], S_{stat} \in \mathbb{R}^{N_h \times N_v}, R_{\theta_i} \in \mathbb{R}^{N_h}, \quad (5) Sstat=[Rθ0,...,RθNv],SstatRNh×Nv,RθiRNh,(5)
其中 N v N_v Nv N h N_h Nh代表垂直和水平平面中的光线数量,由光线投射角度间隔和垂直视场决定。与使用图像数据作为状态表示不同,提出的RL状态表示在仿真和真实世界之间的差异最小,这对于“仿真到现实”的迁移是有益的。

动作:在每个时间步,向机器人提供速度控制V_ctrl ∈ R³用于导航和碰撞避免。选择速度控制是因为更高层次的控制在不同平台之间提供了更好的可移植性和泛化性,便于“仿真到现实”的迁移。此外,与较低层次的控制相比,速度指令更具可解释性,也更容易由人类监督。该策略不是直接输出速度值,而是被设计为首先推断一个归一化的速度 V_ctrl^norm,最终的输出速度表示为:
在这里插入图片描述
其中 V l i m V_{lim} Vlim是用户定义的最大速度。最终速度在目标坐标系中表示,如状态公式中所述,需要对机器人应用坐标变换。这种方法比其他RL策略必须学习动作限制且不能轻易调整训练好的动作范围的公式提供了更大的灵活性。为了将网络输出限制在[0,1]范围内,模型被设计为生成Beta分布的参数(α, β),如图4所示。当RL动作空间受限时,基于Beta分布的策略已被证明是无偏的,并且与基于高斯分布的策略相比,能实现更快的收敛[45]。在训练过程中,通过使用生成的参数从Beta分布中采样来鼓励探索。在部署时,我们使用Beta分布的均值作为归一化的速度输出。

奖励:设计的RL奖励函数在每个时间步计算,由多个部分组成:
r = λ 1 r v e l + λ 2 r s s + λ 3 r d s + λ 4 r s m o o t h + λ 5 r h e i g h t , ( 7 ) r = \lambda_1 r_{vel} + \lambda_2 r_{ss} + \lambda_3 r_{ds} + \lambda_4 r_{smooth} + \lambda_5 r_{height}, \quad (7) r=λ1rvel+λ2rss+λ3rds+λ4rsmooth+λ5rheight,(7)
其中r_(.)表示由λ加权的一种奖励类型。每种奖励将在以下段落中解释。

a) 速度奖励r_vel:速度奖励鼓励机器人采用能导向目标位置的速度:
r v e l = P g − P r ∣ ∣ P g − P r ∣ ∣ ⋅ V r , 其中  P g , P r , V r ∈ R 3 . ( 8 ) r_{vel} = \frac{P_g - P_r}{||P_g - P_r||} \cdot V_r, \quad \text{其中 } P_g, P_r, V_r \in \mathbb{R}^3. \quad (8) rvel=∣∣PgPr∣∣PgPrVr,其中 Pg,Pr,VrR3.(8)
这个公式奖励那些与朝向目标位置的方向更一致且速度更快的速度。

在这里插入图片描述
图 3. 地图光线投射示意图。仅显示最大范围内的光线。(a) 具有360度投射角度的水平投射光线的俯视图。(b) 显示垂直平面中光线的侧视图。

在这里插入图片描述
图 4. Beta分布的示例RL策略动作可视化。

b) 静态安全奖励r_ss:静态安全奖励确保机器人与静态障碍物保持安全距离。给定式(5)中的静态障碍物状态,其定义为:
r s s = 1 N h N v ∑ i = 1 N h ∑ j = 1 N v log ⁡ S s t a t ( i , j ) . ( 9 ) r_{ss} = \frac{1}{N_h N_v} \sum_{i=1}^{N_h} \sum_{j=1}^{N_v} \log S_{stat}(i, j). \quad (9) rss=NhNv1i=1Nhj=1NvlogSstat(i,j).(9)
该公式使用光线距离计算到静态障碍物的平均对数距离。当机器人与障碍物保持更大距离时,奖励最大化。

c) 动态安全奖励r_ds:与静态安全奖励类似,动态安全奖励鼓励机器人避开动态障碍物,表示为:
r d s = 1 N d ∑ i = 1 N d log ⁡ ∣ ∣ P r − P o i ∣ ∣ . ( 10 ) r_{ds} = \frac{1}{N_d} \sum_{i=1}^{N_d} \log ||P_r - P_{o_i}||. \quad (10) rds=Nd1i=1Ndlog∣∣PrPoi∣∣.(10)

d) 平滑性奖励 r s m o o t h r_{smooth} rsmooth:平滑性奖励惩罚控制输出的突然变化,写作:
r s m o o t h = − ∣ ∣ V r ( t i ) − V r ( t i − 1 ) ∣ ∣ , ( 11 ) r_{smooth} = -||V_r(t_i) - V_r(t_{i-1})||, \quad (11) rsmooth=∣∣Vr(ti)Vr(ti1)∣∣,(11)
其中计算的是当前和前一个时间步机器人速度差异的L2范数。

e) 高度奖励 r h e i g h t r_{height} rheight:高度奖励旨在防止机器人通过飞得过高来避开障碍物。它可以写成:
r h e i g h t = − ( min ⁡ ( ∣ P r , z − P s , z ∣ , ∣ P r , z − P g , z ∣ ) ) 2 , ( 12 ) r_{height} = -(\min(|P_{r,z} - P_{s,z}|, |P_{r,z} - P_{g,z}|))^2, \quad (12) rheight=(min(Pr,zPs,z,Pr,zPg,z))2,(12)
当当前高度 P r , z P_{r,z} Pr,z超出由起始高度P_{s,z}和目标高度P_{g,z}定义的范围时,此奖励适用。

C. 网络设计和策略训练

鉴于我们的状态表示由多个部分组成,在将数据输入RL策略网络之前,需要一个预处理步骤。静态和动态障碍物都表示为2D矩阵,因此我们利用卷积神经网络(CNN)来提取它们的特征,并将其转换为1D特征嵌入,如图2所示。然后将这些嵌入与机器人的内部状态拼接,形成策略和价值网络的完整输入特征。我们采用近端策略优化(PPO)算法[17]来训练演员(策略)和评论家(价值)网络,两者都使用多层感知器实现。训练过程在NVIDIA Isaac Sim中进行,我们通过同时从数千架四旋翼无人机收集数据来实现并行训练。训练环境具有一个森林般的设置,包含静态和动态障碍物。每个机器人都在一个随机位置生成,具有一个随机目标,并在与障碍物碰撞或一集结束时重置。为了提高学习效率,我们采用课程学习策略。环境最初以相对较低的障碍物密度开始,随着成功率超过指定阈值而逐渐增加。我们的实验表明,这种方法允许RL策略在复杂的环境中实现更高的导航成功率。

D. 策略动作安全护盾

由于神经网络的黑盒特性,我们设计了一个安全护盾机制来防止由训练好的策略引起的严重故障。鉴于我们的策略输出用于机器人控制的速度指令,我们结合了速度障碍(VO)[18]的概念来评估策略动作的安全性,并在可能导致碰撞时进行修正。速度障碍表示在指定未来时间范围内会导致碰撞的机器人速度集合。在图5a所示的场景中,机器人遇到障碍物,相应的速度障碍区域在图5b中可视化。在这个例子中,有两个以不同速度移动的障碍物,每个障碍物都与一个基于它们相对于机器人的相对位置和速度的速度障碍区域相关联。每个速度障碍区域结合了一个以C1或C2为中心的圆形区域(其半径等于机器人和障碍物尺寸之和加上用户定义的安全空间),以及一个从原点延伸的锥形区域(不包括虚线)。机器人相对于障碍物1和障碍物2的相对速度(显示为红色和绿色箭头)位于速度障碍区域内,表明未来会发生碰撞。受[46]的启发,我们采用类似的方法来计算退出速度障碍区域所需的速度最小变化量(ΔV₁和ΔV₂)。由网络产生的策略动作为V_rl。如果此动作不在任何速度障碍区域内,我们将安全动作V_safe设置为策略动作。否则,我们构建以下优化问题,将策略动作投影到安全区域:
在这里插入图片描述

其中,式13b定义了一个基于所需速度变化的超平面,以确保安全动作位于速度障碍区域之外,式13c强制执行安全动作的控制限制。当存在许多障碍物时,将安全动作约束在超平面的一侧可能过于保守。然而,由于策略动作只是偶尔失败,这种保守性不会显著影响整体性能,并且在大多数情况下有助于确保安全。对于静态障碍物,我们使用每条投射的光线来确定障碍物的中心位置和半径,并将其速度设为零。对于动态障碍物,我们用一个或多个球体将其包围。

IV. 结果与讨论

为了评估所提出的框架,我们展示了在不同配置下的训练结果,并在各种环境中进行了仿真和物理飞行测试。策略在NVIDIA Isaac Sim中,使用一块NVIDIA GeForce RTX 4090 GPU训练了大约10小时。

在这里插入图片描述
图 5. 使用基于速度障碍的方法确定安全速度区域的示意图。(a) 机器人遇到两个障碍物的示例场景。(b) 对应的速度障碍图,蓝色箭头显示了退出VO区域所需的最小速度变化。

在这里插入图片描述

图 6. 机器人训练环境的可视化。环境大小为50m×50m,动态障碍物的数量在训练期间逐渐增加。(a) 初始环境包含60个动态障碍物。(b) 最终环境包含120个动态障碍物。


表 I
在使用和不使用课程学习的情况下,训练期间最高导航成功率的比较

障碍物数量无课程学习有课程学习
static=350, dynamic=6094.33%94.33%
static=350, dynamic=8074.51%82.71%
static=350, dynamic=10062.30%80.96%
static=350, dynamic=12054.98%68.65%

机器人的最大速度设定为2.0 m/s。仿真实验在RTX 4090台式机上进行,而物理飞行的计算则在我们四旋翼无人机的机载计算机(NVIDIA Jetson Orin NX)上执行。使用Intel RealSense D435i相机进行静态和动态障碍物感知,并采用LIDAR惯性里程计(LIO)算法[47]进行精确的机器人状态估计。静态和动态特征提取器使用3层卷积神经网络,输出大小分别为128和64的嵌入。策略网络由一个双层多层感知器组成,PPO的裁剪率为0.1。使用ADAM优化器,学习率为5 × 10⁻⁴。奖励折扣因子设置为0.99。

A. RL训练结果

我们的框架在RL策略训练中采用课程学习策略,如图6所示的初始和最终训练环境。静态障碍物以红色显示,颜色梯度表示高度,而动态障碍物以绿色表示。根据我们的观察,动态障碍物在训练中比静态障碍物带来更大的挑战。因此,一旦导航成功率(定义为从起点到目标安全导航且无碰撞)超过80%,我们便以20为增量,将环境中动态障碍物的数量从60个逐渐增加到120个。为了证明课程学习的有效性,表I比较了在总训练时间相同的情况下,有无课程学习所达到的最高导航成功率。该表显示,随着动态障碍物数量的增加,没有课程学习的最高导航成功率下降得比有课程学习的训练更急剧,凸显了其有效性。我们在120个动态障碍物时停止了策略训练,并保存了用100个动态障碍物训练出的最佳模型,因为它在具有挑战性的条件下取得了相对较高的成功率(80.96%)。

为了展示使用更多机器人进行训练的重要性,图8比较了部署不同数量机器人训练时获得的平均RL训练回报。该图显示,使用更多机器人进行训练不仅能带来更快的收敛速度,还能获得更高的RL回报。我们的实验使用了1024个机器人,这利用了可用的最大GPU内存。

B. 仿真实验

我们在Gazebo中进行了仿真实验,以评估所提出框架的性能并展示其“仿真到仿真”的可迁移性。在类似真实世界室内场景的动态环境中进行了定量测试,其中机器人需要安全地绕过人类。图7展示了一个安全轨迹的例子。结果证实了机器人成功地进行了无碰撞导航。

为了进行定量评估,我们生成了高障碍物密度的环境,模拟了我们训练环境的条件,其中静态和动态障碍物都是随机放置的。鉴于开源的基于RL的导航基准算法有限,我们将我们的方法与流行的基于优化的静态规划器[48]和为动态环境设计的视觉辅助规划器[20]进行比较。此外,我们还评估了我们的框架在有无安全护盾的情况下的性能,以验证其有效性。具体来说,我们在三种类型的环境中进行测试:纯静态、纯动态和混合环境。每种算法在每个环境中运行20次,计算出的平均每次运行的碰撞次数如表II所示。表II中的百分比值表示相对于基准方法[20]的平均碰撞次数。需要注意的是,这些环境旨在测试算法的极限,并且比真实世界场景要复杂得多。因此,发生碰撞并不一定意味着算法不安全。总的来说,我们的NavRL在动态和混合环境中表现出最低的碰撞次数,同时在静态环境中保持与EGO规划器相当的碰撞率。该表显示,EGO规划器在动态和混合环境中为N/A,因为其低效的地图更新导致它在处理来自动态障碍物的过多噪声时会卡住。在实验中,当障碍物靠近时,ViGO未能为碰撞避免提供足够反应灵敏的轨迹。

在这里插入图片描述
图 7. 模拟走廊环境中安全导航轨迹的可视化。上图展示了Gazebo中的环境,包含静态障碍物和动态障碍物(行人)。下图显示了环境地图和机器人的导航轨迹。

在这里插入图片描述
图 8. 平滑的平均训练回报曲线图。使用更多数量的机器人进行训练可以带来更快的收敛速度和更高的回报。

相比之下,我们的方法可以生成更具反应性的控制,帮助机器人更有效地避免碰撞。通过比较有无安全护盾的框架,我们发现安全护盾持续减少了碰撞,特别是在动态环境中,它减轻了由神经网络故障风险增加引起的错误。

表 II
在20m×40m地图中,从20次样本运行中评估的不同类型环境下平均碰撞次数的基准测试

基准静态环境动态环境混合环境
EGO [48]0.45 (56.3%)N/AN/A
ViGO [20]0.80 (100%)3.15 (100%)4.40 (100%)
我们的(无护盾)0.95 (118.8%)2.70 (85.7%)4.60 (104.5%)
我们的(NavRL)0.65 (81.3%)0.85 (27.0%)2.10 (47.8%)

C. 物理飞行测试

为了展示“仿真到现实”的迁移和安全导航能力,我们在各种设置下进行了物理飞行实验,如图9所示。环境中放置了静态障碍物,并有几名行人被引导走向机器人,要求它在到达目标的同时避免碰撞。结果显示,机器人成功地避开了碰撞并安全到达目的地。

在仿真和真实世界飞行实验期间,我们测量了所提出框架中每个模块的计算时间,如表III所示。该表显示了在NVIDIA GeForce RTX 4090和机载NVIDIA Jetson Orin NX计算机上的运行时间。静态感知模块在RTX 4090上完成需要8毫秒,在Orin NX上需要15毫秒,而动态感知模块分别需要11毫秒和27毫秒。RL策略网络在RTX 4090上运行需要1毫秒,在Orin NX上需要7毫秒,安全护盾模块则分别运行2毫秒和16毫秒。这些测量结果表明,所有模块即使在机载计算机上也能实现实时性能。

[图片:两张物理飞行测试的照片,显示无人机在有静态和动态障碍物(人)的室内环境中飞行]
图 9. 物理飞行测试示例。我们的框架使机器人能够在存在静态和动态障碍物的情况下进行安全飞行和导航。

表 III
所提出系统各组件的运行时间

系统模块GeForce RTX 4090Jetson Orin NX
静态感知8 ms15 ms
动态感知11 ms27 ms
RL策略网络1 ms7 ms
安全护盾2 ms16 ms

V. 结论与未来工作

本文提出了一种新颖的深度强化学习框架NavRL,旨在基于近端策略优化(PPO)算法实现动态环境中的安全飞行。该框架使用量身定制的状态和动作表示,以在静态和动态环境中实现安全导航,支持有效的零样本“仿真到仿真”和“仿真到现实”的迁移。此外,一个基于速度障碍概念的安全护盾减轻了神经网络黑盒特性带来的故障。另外,使用NVIDIA Isaac Sim的并行训练流程加速了学习过程。仿真和物理实验的结果验证了我们的方法在动态环境中实现安全导航的有效性。未来的工作将侧重于改进和调整该框架,以部署到各种机器人平台上。

相关文章:

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) ​遍历字符串​:通过外层循环逐一检查每个字符。​遇到 ? 时处理​: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: ​与…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息&#xff0…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...