NavRL

GitHub
1.4k 150 较难 1 次阅读 昨天MIT其他
AI 解读 由 AI 自动生成,仅供参考

NavRL 是一个基于强化学习的开源框架,旨在帮助机器人在动态变化的环境中实现安全、高效的自主导航。虽然其核心研究聚焦于无人机(UAV)的飞行控制,但该框架具有良好的通用性,同样适用于任何采用速度控制系统的移动机器人。它主要解决了传统导航算法在面对突发障碍物或复杂动态场景时反应不够灵活、安全性不足的痛点,让机器人能够像人类一样“学会”如何避障并抵达目标。

该项目由 NVIDIA Isaac Sim 仿真平台驱动,支持 ROS1 和 ROS2 系统,并提供了预训练模型与简易的 Python 演示脚本,用户仅需几分钟即可体验单机导航、随机目标探索及多机协同等精彩功能。对于希望复现前沿学术成果的研究人员,或是需要快速验证导航算法的开发者而言,NavRL 提供了从仿真训练到真机部署的完整链路。其独特的技术亮点在于结合了高保真物理仿真与深度强化学习,不仅降低了实机试错成本,还显著提升了机器人在未知环境中的适应能力。无论是高校科研团队还是机器人工程开发者,都能从中获得宝贵的技术参考与实践工具。

使用场景

某物流仓储团队正致力于部署自主无人机集群,在充满移动叉车和工作人员的动态环境中执行高频次货物盘点任务。

没有 NavRL 时

  • 避障反应迟钝:传统基于规则的路径规划算法难以预测突发移动障碍物的轨迹,导致无人机频繁急停或发生轻微碰撞。
  • 环境适应性差:一旦仓库内人流密度变化或货架布局微调,工程师需花费数天重新手工调整参数和规则代码。
  • 多机协同困难:在多无人机同时作业时,缺乏有效的分布式协调机制,极易出现路径死锁或空中拥堵。
  • 开发周期漫长:从仿真测试到真机部署需要重写大量底层控制代码,且仿真与现实的物理差异(Sim2Real)导致调试风险极高。

使用 NavRL 后

  • 智能动态避障:NavRL 利用强化学习让无人机学会“预判”移动物体轨迹,在高速飞行中也能平滑绕开突然出现的叉车或行人。
  • 零代码自适应:无需修改任何规则代码,训练好的模型能直接泛化到不同密度和布局的动态场景,显著降低维护成本。
  • 高效集群调度:内置的多智能体协作机制使无人机群能自主协商路径,在狭窄通道中有序交错通行,彻底消除死锁。
  • 无缝仿真部署:依托 NVIDIA Isaac Sim 的高保真训练与 ROS1/ROS2 原生支持,实现了从虚拟训练到真机落地的无缝衔接,将部署时间从数周缩短至数小时。

NavRL 通过端到端的强化学习,将原本僵硬的规则驱动导航升级为具备高度适应性和安全性的智能决策系统,真正释放了动态环境下无人机集群的作业潜力。

运行环境要求

操作系统
  • Linux (Ubuntu 20.04 LTS
  • Ubuntu 22.04 LTS)
GPU
  • 必需 NVIDIA GPU
  • 训练阶段明确需要 RTX 4090(用于大规模并行仿真)
  • 仿真基于 NVIDIA Isaac Sim,需支持 CUDA 的显卡
内存

未说明(建议根据并发机器人数量配置,大规模训练需大内存)

依赖
notes1. 训练必须使用特定版本的 Isaac Sim (2023.1.0-hotfix.1),版本不兼容会导致错误,且需通过 Docker 拉取旧版本。 2. 项目提供两种部署路径:ROS1 + Gazebo(适用于四旋翼,需 Ubuntu 20.04)和 ROS2 + Isaac Sim(适用于 Unitree Go2 四足机器人,需 Ubuntu 22.04)。 3. 快速演示和训练均需创建名为 'NavRL' 的 Conda 环境。 4. 若在真实机器人上使用 ROS2 Foxy 版本,需切换至 'ros2-foxy' 分支。
python3.10
NVIDIA Isaac Sim (2023.1.0-hotfix.1)
ROS1 Noetic (仅 ROS1 部署)
ROS2 Humble (仅 ROS2 部署)
Conda
Gazebo (仅 ROS1 部署)
MAVROS (仅 ROS1 部署)
NavRL hero image

快速开始

NavRL:在动态环境中学习安全飞行

Python ROS1 ROS2 IsaacSim Linux平台

欢迎来到NavRL仓库!本仓库提供了NavRL框架的实现,该框架旨在利用强化学习使机器人能够在动态环境中安全导航。尽管原始论文专注于无人机导航,但NavRL可以扩展到任何采用基于速度控制系统的机器人。

有关更多详细信息,请参阅此处提供的相关论文:

Zhefan Xu, Xinming Han, Haoyu Shen, Hanyu Jin 和 Kenji Shimada,“NavRL:在动态环境中学习安全飞行”,IEEE机器人与自动化快报(RA-L),2025年。[IEEE Xplore] [预印本] [YouTube] [BiliBili]

新闻

  • 2025年4月6日: 我们发布了易于运行的Python脚本,允许用户快速运行演示。
  • 2025年2月23日: 我们的NavRL框架的GitHub代码、视频演示和相关论文已发布。作者将积极维护和更新此仓库!

目录

NavRL三分钟快速演示

我们提供了一个预训练模型和易于运行的Python脚本,用于NavRL框架的快速演示。

要开始使用,请按照部署虚拟环境中的步骤设置Conda环境。设置完成后,您可以使用以下命令运行三个演示:

conda activate NavRL
cd NavRL/quick-demos

# 演示一:导航至预定义的目标点
python simple-navigation.py

# 演示二:导航至动态/随机分配的目标点
python random-navigation.py

# 演示三:多机器人导航
python multi-robot-navigation.py

I. 在NVIDIA Isaac Sim中训练

本节提供了在Isaac Sim中使用NavRL框架训练您自己的强化学习智能体的步骤。如果您不打算自己训练智能体,请跳过本节直接进入部署部分。

Isaac Sim安装

本项目是使用2023年11月发布的Isaac Sim 2023.1.0-hotfix.1版本开发的。请务必下载并使用此确切版本,因为使用其他版本可能会因版本不兼容而出现错误。 此外,请确保已安装conda

如果您已经下载了Isaac Sim 2023.1.0-hotfix.1版本,可以跳过以下步骤。否则,请按照以下说明下载Isaac Sim的旧版,因为官方安装不支持旧版下载。

要下载Isaac Sim 2023.1.0-hotfix.1版本:

a. 首先,按照此链接上的步骤完成Docker容器的设置。

b. 然后,将Isaac Sim下载到您的Docker容器中:

docker pull nvcr.io/nvidia/isaac-sim:2023.1.0-hotfix.1

docker run --name isaac-sim --entrypoint bash -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
    -e "PRIVACY_CONSENT=Y" \
    -v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
    -v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
    -v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
    -v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
    -v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
    -v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
    -v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
    -v ~/docker/isaac-sim/documents:/root/Documents:rw \
    nvcr.io/nvidia/isaac-sim:2023.1.0-hotfix.1

c. 将下载的Isaac Sim从Docker容器移动到您的本地机器上:

bash docker ps # 在另一个终端中查看您的容器ID

# 将<id_container>替换为上一条命令的输出
docker cp <id_container>:isaac-sim/. /path/to/local/folder # 绝对路径

现在,Isaac Sim 2023.1.0-hotfix.1版本已安装在您的本地机器上。

NavRL训练设置

要设置NavRL框架,请克隆仓库并按照以下步骤操作(此过程可能需要几分钟):

# 设置ISAACSIM_PATH环境变量
echo 'export ISAACSIM_PATH="path/to/isaac_sim-2023.1.0-hotfix.1"' >> ~/.bashrc

cd NavRL/isaac-training
bash setup.sh

设置完成后,您应该已经创建了一个名为NavRL的虚拟环境。

验证安装并运行一个训练示例

使用默认参数运行一个包含2个机器人的训练示例,以验证安装是否正确。

# 激活NavRL虚拟环境
conda activate NavRL

# 使用默认设置运行一个训练示例
python training/scripts/train.py

如果仓库安装正确,您应该能够看到如下所示的Isaac Sim窗口:

isaac-training-window

训练您自己的强化学习智能体

训练环境设置和超参数可以在 NavRL/isaac-training/training/cfg 中找到。

以下示例演示了使用 1024 个机器人、350 个静态障碍物和 80 个动态障碍物进行训练(需要 RTX 4090 显卡)。我们建议使用 Wandb 来监控您的训练和评估统计信息。

python training/scripts/train.py headless=True env.num_envs=1024 env.num_obstacles=350 \
env_dyn.num_obstacles=80 wandb.mode=online

经过足够长时间的训练后,您应该会观察到机器人学会避免碰撞:

https://github.com/user-attachments/assets/2294bd94-69b3-4ce8-8e91-0118cfae9bcd

II. 部署虚拟环境

本节提供了部署 NavRL 所需的最小 Conda 环境设置(包括在真实机器人上运行)。如果您已经在 Isaac 训练步骤 中创建了 NavRL 的 Conda 环境,则可以跳过本节。要创建 Conda 环境,请运行以下命令:

cd NavRL/isaac-training
bash setup_deployment.sh

设置完成后,应会创建一个名为 NavRL 的 Conda 环境。您可以通过激活该环境来验证安装是否成功:

conda activate NavRL

III. NavRL ROS1 部署

本节演示了使用 ROS1 和 Gazebo,以四旋翼无人机为例部署 NavRL 的示例。请确保您的系统满足以下要求:

  • Ubuntu 20.04 LTS
  • ROS1 Noetic

首先,安装依赖项并将此仓库中的 ros1 文件夹复制到您的 catkin 工作空间。

sudo apt-get install ros-noetic-mavros*

cp -r ros1 /path/to/catkin_ws/src
catkin_make

然后,设置 Gazebo 模型的环境变量。

echo 'source /path/to/ros1/uav_simulator/gazeboSetup.bash' >> ~/.bashrc

请注意,环境变量应在 catkin_ws 内设置。例如,正确的 ~/.bashrc 脚本应该是 source ~/catkin_ws/src/ros1/uav_simulator/gazeboSetup.bash,而不是 source path/to/NavRL/ros1/uav_simulator/gazeboSetup.bash)。

最后,启动仿真并部署 NavRL 导航。

# 启动 Gazebo 模拟器
roslaunch uav_simulator start.launch

# 启动感知与安全模块
roslaunch navigation_runner safety_and_perception_sim.launch

# 运行导航节点
conda activate NavRL
rosrun navigation_runner navigation_node.py

Gazebo 窗口将显示环境,而 RViz 窗口则会呈现数据。使用 RViz 的 2D Nav Goal 工具设置导航目标,如下方视频所示(注意:默认环境和设置可能与视频不同):

https://github.com/user-attachments/assets/b7cc7e2e-c01d-4e44-87e3-97271a3aaa0f

要更改环境设置,请查看 ros1/uav_simulator/launch/start.launch 中的启动文件。各模块的参数位于 ros1/navigation_runner/cfg/*.yaml 配置文件中。

IV. NavRL ROS2 部署

本节演示了使用 ROS2 和 Isaac Sim,以 Unitree Go2 四足机器人为例部署 NavRL 的示例。请确保您的系统满足以下要求:

  • Ubuntu 22.04 LTS
  • ROS2 Humble

在开始之前,请根据 此链接 安装模拟器。

首先,将此仓库中的 ros2 文件夹复制到您的 ROS2 工作空间。

cp -r ros2 /path/to/ros2_ws/src
colcon build --symlink-install

然后,启动仿真并部署 NavRL 导航。

# 启动 Isaac Go2 模拟器
conda activate isaaclab
cd /path/to/isaac-go2-ros2
python isaac-go2-ros2.py

# 启动感知和安全模块
ros2 launch navigation_runner perception.launch.py
ros2 launch navigation_runner safe_action.launch.py # 可选

# 打开 Rviz2 可视化
ros2 launch navigation_runner rviz.launch.py

# 运行导航启动
conda activate NavRL
ros2 launch navigation_runner navigation.launch.py

Isaac Sim 窗口将显示环境,而 RViz 窗口则会呈现数据。使用 RViz 的 2D Nav Goal 工具设置导航目标。导航示例如下视频所示:

https://github.com/user-attachments/assets/4787f503-d8a3-4d7b-9d17-7057b2cff1eb

请注意,如果您希望在配备 ros2 foxy 的真实机器人上部署,请切换到 ros2-foxy 分支。

git checkout ros2-foxy

V. 引用与参考文献

如果我们的工作对您的研究有所帮助,请考虑引用我们的论文。

@ARTICLE{NavRL,
  author={Xu, Zhefan and Han, Xinming and Shen, Haoyu and Jin, Hanyu and Shimada, Kenji},
  journal={IEEE Robotics and Automation Letters}, 
  title={NavRL: 在动态环境中学习安全飞行}, 
  year={2025},
  volume={10},
  number={4},
  pages={3668-3675},
  keywords={导航;机器人;避障;训练;安全;车辆动力学;启发式算法;探测器;自主飞行器;学习系统;空中系统:感知与自主性;强化学习;避障},
  doi={10.1109/LRA.2025.3546069}}

VI. 致谢

作者谨向 Kenji Shimada 教授表示诚挚的感谢,感谢他给予的大力支持,并感谢所有为本研究发展做出贡献的 CERLAB 无人机团队成员。

NavRL 框架中的 Isaac Sim 训练组件基于 OmniDrones 构建。

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.3k|★★☆☆☆|2天前
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|1周前
语言模型数据工具其他

cs-video-courses

cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。

79.8k|★☆☆☆☆|1周前
其他图像数据工具

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2周前
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

75.9k|★★★☆☆|今天
语言模型图像开发框架

awesome-machine-learning

awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。

72.1k|★☆☆☆☆|2周前
开发框架其他