0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在NVIDIA Isaac Lab中训练四足机器人运动

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 2024-09-06 14:48 次阅读

由于涉及复杂的动力学,为四足机器人制定有效的运动策略是机器人领域面临的重大挑战。在现实世界中训练四足机器人上下楼梯可能会损坏设备和环境,因此,在学习过程中,仿真器在确保安全和消除时间限制方面都发挥着关键作用。

利用深度强化学习(RL)在仿真环境中训练机器人,这样可以更有效、更安全地执行复杂任务。然而,这种方法带来了一个新的挑战:如何确保在仿真环境中训练的策略能够无缝地切换到现实世界。换句话说,我们如何缩小仿真与现实之间的差距?

要缩小仿真与现实之间的差距,需要一个高保真、基于物理的训练仿真器、一台高性能 AI 计算机(如 NVIDIA Jetson)以及一个具有关节级控制能力的机器人。强化学习研究工具包是波士顿动力公司、NVIDIA 和波士顿动力人工智能研究所合作开发的,它整合了上述能力,实现了四足机器人从虚拟世界到现实世界的无缝部署。它包括 Spot 四足机器人的关节级控制 API(用于控制机器人如何运动)、NVIDIA Jetson AGX Orin 有效载荷运行策略所需的安装硬件(AGX Orin 单独出售),以及在 NVIDIA Isaac Lab 中为 Spot 提供的仿真环境。

Isaac Lab 是一个基于 NVIDIA Isaac Sim 平台开发的轻量级参考应用程序,专为大规模机器人学习进行了优化。它利用 GPU 并行化进行大规模物理并行仿真,以提高最终的策略效果,并减少机器人强化学习的训练时间。凭借其高保真物理和域随机化功能,Isaac Lab 弥合了仿真与现实的差距,使经过训练的模型能够通过零样本无缝部署到物理机器人上。要了解更多信息,请参阅NVIDIA Isaac Sim 4.0 和 NVIDIA Isaac Lab 为机器人工作流和仿真提供强大助力。

本文解释了如何在 Isaac Sim 和 Isaac Lab 中为 Spot 四足机器人创建运动强化学习策略,并使用强化学习研究工具包中的组件在硬件上部署。

在 Isaac Lab 中

训练四足机器人运动

本章节介绍了如何在 Isaac Lab 中训练运动强化学习策略。

wKgZombapeuAeDXoAAFOgDp1hYI227.jpg

图 1. 从 Isaac Sim 到 Isaac Lab的

运动策略训练框架工作流

目标

训练 Spot 机器人在平地上走动时,去追踪目标 x、y 和偏航基本速度。

观察和行动空间

目标速度在每次重置时都会随机分配,并与图 1 所示的其他观察结果一起提供。行动空间仅包括 12 个自由度关节位置,这些位置作为参考关节位置传递给底层关节控制器

域随机化

在关键训练阶段,对各种参数进行随机化处理,如随机化参数下的图 1 所示。这些随机化有助于模型确保现实世界部署的鲁棒性,这个过程被称为域随机化。

网络架构和强化学习算法的详情

运动策略被构建成一个具有三层的多层感知器(MLP),包含 [512、156、128] 个神经元,并使用 RSL-rl 的近端策略优化(PPO)算法进行训练,该算法针对 GPU 计算进行了优化。

必备条件

要想训练运动策略,您需要:

配备 NVIDIA RTX GPU 的系统。详细的最低规格,请参阅 Isaac Sim 文档

NVIDIA Isaac Sim、Isaac Lab 和 RSL-rl。

使用

本章节展示了如何训练策略、回放策略和检查结果。

训练一个策略

cd 
./isaaclab.sh-psource/standalone/workflows/rsl_rl/train.py--taskIsaac-Velocity-Flat-Spot-v0--num_envs4096--headless--video--enable_cameras

--video--enable_cameras 参数记录了智能体在训练过程中的行为视频,它是可选的。

播放经过训练的策略

该步骤将播放经过训练的模型,并将 .pt 策略导出到日志目录下导出文件夹中的 .onnx 中。

cd 
./isaaclab.sh-psource/standalone/workflows/rsl_rl/play.py--taskIsaac-Velocity-Flat-Spot-v0--num_envs64

结果

视频 1 演示了在 Spot 机器人上执行经过训练的策略。机器人能够通过跟踪目标 x、y 和偏航速度在平地上行走。通过 4096 个环境和 15000 次迭代,相当于在 NVIDIA RTX GPU 上大约 4 小时的训练时间,我们实现了每秒 85000 到 95000 帧(FPS)的训练速度。

视频 1. 经过训练的策略在 Isaac Lab

仿真的 Spot 机器人上进行了测试

使用 Jetson Orin 在 Spot 机器人

上部署经过训练的强化学习策略

将经过仿真训练的模型部署到机器人应用的现实世界中会带来一些挑战,包括实时控制、安全约束和其他现实世界的条件。Isaac Lab 具有精确的物理和域随机化功能,使其能够将仿真环境中训练的策略部署到基于 Jetson Orin 零样本的真实 Spot 机器人上,从而在虚拟和现实世界中实现类似的性能。

图 2 显示了真实的 Spot 机器人框架策略部署,将策略神经网络加载到实际机器人上并进行推理。与仿真中相同的观察结果是使用波士顿动力的 State API 来计算的。

wKgZombapgSAMvIcAAEZ6hKJw2o335.jpg

图 2. 真实 Spot 机器人框架策略部署

将训练好的模型转移到 Spot 机器人需要将模型部署到边缘,并低延迟、高频率地控制机器人。NVIDIA Jetson AGX Orin 的高性能计算能力和低延迟 AI 处理确保了快速的推理和响应,这对现实世界的机器人应用至关重要。仿真的策略可以直接部署并进行推理,简化了部署流程。

必备条件

部署时需要:

Spot 机器人与 Jetson Orin 连接,并配置为使用以太网端口电源线和安装支架的自定义有效载荷,按照所提供的安装说明进行操作。

Spot 强化学习研究工具包中的部署代码和 Spot Python SDK。

通过蓝牙连接到 Jetson Orin 的 PS4 游戏手柄控制器。

外部 PC 通过 SSH 进入 Jetson 并运行代码。

来自 Isaac Lab 的经过训练的模型和配置文件。

Jetson Orin 上的硬件和网络设置

在配备 Ubuntu 22.04 的外部 PC 上安装 SDK Manager。

按照“如何使用 SDK Manager 对 L4T BSP 进行刷新”的说明,使用 SDK Manager,将配备 JetPack 6 的 Jetson Orin 进行刷新。完成后重新启动。

把 Jetson Orin 连接到显示器端口、键盘和鼠标。

使用步骤 2 中设置的用户名和密码登录 Jetson Orin。

为了实现 Jetson Orin 和 Spot 之间的通信,请手动设置 Jetson Orin 上以太网端口的有线网络配置,并阅读有关选择 IP 地址的说明。

a) 进入 Settings -> Network -> Wired -> + 在 IPv4(Routes)下添加信息:地址 – Jetson IP 地址(选择 192.168.50.5)、 网络掩码 – 255.255.255.0,和默认网关 -192.168.50.3。

b) 点击“Add”按钮。

wKgaombaphaAfYPiAABamUm4Ioc991.png

图 3. Spot 的 Jetson Orin 有线网络配置

Jetson 上的软件设置

首先,将仿真中的训练策略从 .pt 转换为 .onnx 格式,并导出环境配置。这是在训练 PC 上完成的。

cd 
./isaac_lab.sh-psource/standalone/workflows/rsl_rl/play.py--taskIsaac-Velocity-Flat-Spot-v0

结果将在该模型的训练日志目录中的导出文件夹中,该文件夹包含 env_cfg.json 和 .onnx 文件。

在训练 PC 上创建一个文件夹,并将 env.yaml 文件和 .onnx 文件复制到该文件夹中。请注意:env.yaml 在 params 文件夹中,.onnx 文件在训练日志目录的导出文件夹中。

在训练 PC 上使用 SSH,将步骤 1 中的文件夹复制到 Jetson Orin。确保 PC 和 Jetson 处在同一网络,比如 Spot 本地 wifi。在 PC 的终端上运行以下命令:

scp-P20022-r/path/to/folder/*orinusername@network_IP:

接下来,在 Orin 的终端上从主目录运行以下命令:

mkdir spot-rl-deployment && cd spot-rl-deployment && mkdir models 
git clone https://github.com/boston-dynamics/spot-rl-example.git 
cd spot-rl-example && mkdir external && cd external && mkdir spot_python_sdk

下载具有联合级 API 的 Spot Python SDK,并将内容解压缩到步骤 3 中的 spot_python_sdk 文件夹中。

安装部署代码需要的东西:

cd ~/spot-rl-deployment/spot-rl-example
sudo apt update
sudo apt install python3-pip
cd external/spot_python_sdk/prebuilt
pip3 install bosdyn_api-4.0.0-py3-none-any.whl
pip3 install bosdyn_core-4.0.0-py3-none-any.whl
pip3 install bosdyn_client-4.0.0-py3-none-any.whl
pip3 install pygame
pip3 install pyPS4Controller
pip3 install spatialmath-python
pip3 install onnxruntime

把 env.yaml 文件转换为 env_cfg.json 文件:

cd ~/spot-rl-deployment/spot-rl-example/python/utils/
python env_convert.py 
#input the path to the .yaml file e.g ~/env.yaml
#Thefileoutputsaenv_cfg.jsonfileinthesamedirectoryasthe.yamlfile

将步骤 6 中的 env_cfg.json 和步骤 2 中经过训练的模型 policy.onnx 文件移动到 models 文件夹中:

mv env_cfg.json policy.onnx ~/spot-rl-deployment/models

运行策略

1. 启动 Spot,然后按下机器人背面的电机锁定按钮,并确保 Jetson Orin 已通电。

wKgaombapiiAG22HAAaaInQ6XI4759.png

图 4. Spot 的背面

2. 在 Spot 平板电脑控制器上打开 Spot 应用。选择一个机器人,按照提示登录并操作 Spot。确保从平板电脑解除控制以运行策略:打开“Motor Status”菜单(电源图标),导航到高级设置,然后选择“Release Control”。

3. 将 PC 连接到 Spot 本地 wifi,并从终端通过 SSH 连接到 Orin。Spot 将端口 20022 转发到其有效载荷,以便可以打开与 Spot IP 和该端口的 SSH 连接来访问 Orin。IPv4 地址 192.168.50.3 是 Spot 的 IP 地址。

ssh @ -p 20022 
e.g
ssh @192.168.50.3 -p 20022

4. 使用 bluetoothctl 把无线游戏手柄连接到 Orin:

bluetoothctl
scan on  // wait for devices populate ~5s
scan off
devices

在列出的设备中找到游戏手柄的 Mac 地址。将游戏手柄置于配对模式,按住“Select”和“PlayStation”按钮约 5 秒,然后继续使用 bluetoothctl。如果在完成后续步骤之前退出了配对模式,您可能需要重复此过程。

trust {MAC} 
pair {MAC} 
connect {MAC} 
exit

5. 运行强化学习策略:

cd ~/spot-rl-deployment/spot-rl-example/python
pythonspot_rl_demo.py~/spot-rl-deployment/models--gamepad-config./gamepad_config.json

根据提示输入 Spot 的用户名和密码。Spot 将保持不变,但在按下回车键之前,策略不会控制它。现在,您可以使用游戏手柄驱动机器人。再次按下回车键,让 Spot 关闭并退出。 6. 使用 PS4 游戏手柄进行控制。

wKgaombapjiAZOErAAQ0Xfe1wpQ873.png

图 5. 用户可以使用游戏手柄控制 Spot 机器人

如游戏手柄图所示,使用左操纵杆进行 x、y 移动,使用右操纵杆进行旋转。请注意,使用另一个游戏手柄(如 PS5 手柄)将需要不同的轴映射。axis_mapping 是指基于 pygame 的轴索引

来自 ~/spot-rl-deployment/spot-rl-example/python/utils/test_controller.py 的脚本 test_controller.py 可用来打印每个轴的值,以确定不同手柄的恰当映射。

7. 使用游戏手柄配置选项来运行策略:

pythonspot_rl_demo.py~/spot-rl-deployment/models--gamepad-config/home/gamepad_config.json

视频 2 展示了经过仿真训练后真实的 Spot 机器人的运行情况。

视频 2. Spot 机器人根据 NVIDIA Isaac Lab 的训练行走

开始开发您的自定义应用

Spot 强化学习研究套件中提供的代码库是您在仿真环境中创建自定义强化学习任务并将其部署到硬件上的起点。为了开发自定义应用,您可以通过添加自己的机器人模型、环境、奖励函数、课程学习、域随机化等,来修改和扩展当前的代码库。

请参阅文档了解有关如何使用 Isaac Lab 为特定任务训练策略的详细指导。在其他机器人上部署经过训练的策略是专属于该机器人架构的;但是,如果应用需要进行额外的观察,Spot 用户则可以修改当前的部署代码

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4952

    浏览量

    102861
  • 仿真器
    +关注

    关注

    14

    文章

    1016

    浏览量

    83676
  • AI
    AI
    +关注

    关注

    87

    文章

    30348

    浏览量

    268602
  • 四足机器人
    +关注

    关注

    1

    文章

    90

    浏览量

    15191

原文标题:消除仿真与现实之间的差距:使用 NVIDIA Isaac Lab 训练 Spot 四足机器人运动

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    NVIDIA 加速人形机器人发展

    开发者可以访问新的 NVIDIA NIM 微服务,用于 Isaac LabIsaac Sim
    发表于 07-30 09:15 716次阅读
    <b class='flag-5'>NVIDIA</b> 加速人形<b class='flag-5'>机器人</b>发展

    什么是龙机器人

    机器人是一种仿生机器人,由Openduino控制板控制,有条腿,每条腿两个自由度,由两
    发表于 03-24 16:17

    仿生机器人

    本帖最后由 红尘。破 于 2016-8-19 14:59 编辑 今天整理资料时发现了一年前做的仿生机器人,当时买了一个仿生
    发表于 08-19 14:59

    机器人

    `这是创客集结号的作品机器人身体和都是通过3D打印技术打印出来的,通过自己安装连接上超声波传感器,制作成功的
    发表于 09-29 09:55

    机器人的机构设计

    机器人属于复杂机电系统,需要综合生物、机械、电子、控制等学科内容,具体涉及仿生机构设计、灵巧运动机构设计、高性能驱动器制造,行走稳定性控制、强化学习等在内的多个研究方向。其中,机构
    发表于 09-15 06:54

    如何完整的组装机器人

    如何完整的组装机器人
    发表于 09-24 07:00

    ANYmal机器人的相关资料推荐

    去年 1 月份,瑞士公司 ANYbotics 放出来一款灵活的机器人——ANYmal,它可以对抗各种恶劣的现实环境,适用于危险的工业场景
    发表于 12-31 06:28

    DIY设计蜘蛛机器人

    描述“迈尔斯”开源蜘蛛机器人它使用 8 个 SG90 / MG90 伺服电机 作为腿部的执行器,由一个定制的 PCB 组成,用于为伺服系统供电和控制,而 Arduino Nano.PCB 具有
    发表于 08-09 06:30

    腿+轮式动力!瑞士机器人展示最佳混合步态、运动更灵活

    腿+轮式动力!瑞士机器人ANYmal展示最佳混合步态,运动更灵活,机器人,
    发表于 02-20 13:44 2458次阅读
    腿+轮式动力!瑞士<b class='flag-5'>四</b><b class='flag-5'>足</b><b class='flag-5'>机器人</b>展示最佳混合步态、<b class='flag-5'>运动</b>更灵活

    NVIDIA AI机器人开发— NVIDIA Isaac Sim入门

    NVIDIA 最新公开课来了,本次将围绕用于开发和训练智能机器人的模拟平台—— NVIDIA Isaac Sim 。
    的头像 发表于 10-19 15:58 1775次阅读

    NVIDIA 公开课 | AI 机器人开发第二讲 — Isaac Sim 高阶开发

    提供逼真的模拟效果,其模组化设计旨在解决多数常见的机器人用例,包括操作、导航和生成用于训练数据的合成数据,并可以进行自定义并扩展到许多新用例。通过 Isaac SDK 和 ROS/
    的头像 发表于 11-10 11:00 919次阅读

    CES | 用 NVIDIA Isaac Sim 2022.2 模拟未来智能机器人

    NVIDIA 宣布推出  NVIDIA Isaac Sim  的  2022.2 版本 。作为机器人仿真和 合成数据 生成( SDG )工具,该 
    的头像 发表于 01-06 22:30 876次阅读

    使用 ROS 2 MoveIt 和 NVIDIA Isaac Sim 创建逼真的机器人模拟

    MoveIt 2 与 NVIDIA Isaac Sim 模拟的机器人进行集成的过程。本教程需要一台安装了 Isaac Sim 2022.
    的头像 发表于 05-12 10:45 1519次阅读
    使用 ROS 2 MoveIt 和 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b> Sim 创建逼真的<b class='flag-5'>机器人</b>模拟

    NVIDIA Isaac 平台先进的仿真和感知工具助力 AI 机器人技术加速发展

     ROSCon 2023 上,NVIDIA 发布了  NVIDIA Isaac Robotics  平台的重大更新。该平台可为全球机器人
    的头像 发表于 10-20 02:00 962次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b> 平台先进的仿真和感知工具助力 AI <b class='flag-5'>机器人</b>技术加速发展

    使用 NVIDIA Isaac 仿真并定位 Husky 机器人

    如何使用 ROS 2 Husky 官方软件包将该机器人导入 NVIDIA Isaac Sim 并创建仿真。 本 Demo 的 Husky 机器人
    的头像 发表于 12-26 18:05 1270次阅读
    使用 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b> 仿真并定位 Husky <b class='flag-5'>机器人</b>