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

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

3天内不再提示

将Nav2堆栈与NVIDIA ISAAC ROS GEMs集成

星星科技指导员 来源:NVIDIA 作者:Asawaree Bhide 2022-04-27 17:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

NVIDIA GPU ROS GEMs 是一个 ROS 软件包,用于优化基于人工智能机器人应用程序,使其在 NVIDIA ISAAC 和 Jetson 平台上运行。人们越来越有兴趣将这些软件包与 Nav2 项目集成,以帮助自主机器人在动态环境中成功导航。

这项工作完全是在仿真中完成的,可以作为将机器人能力从仿真转移到现实世界的起点( Sim2Real )。

在这篇文章中,我将关注一个现实世界中的问题,即机器人因与仓库中的叉车叉齿发生碰撞而受损。叉车是一种用于短距离搬运重物的工业卡车。它有一个被称为尖头(或叉子)的延伸部分,可以在物体下方滑动并提升物体。

主要使用的机器人传感器( lidar )可以检测叉车的车身,但不能检测靠近地面的叉齿。在这种情况下,还需要其他传感器来检测这些弹齿。在本项目中,您将在模拟中的机器人上使用两个 RGB 摄像头。来自这些相机的图像用于使用 Isaac ROS stereo GEM 。

根据视差,立体宝石生成一个点云,其中包含有关相机视野中的所有对象在环境中的位置的信息。该信息用于更新导航节点,以便在可能发生碰撞时更改机器人的路径。

图 3 显示了该项目的基本工作流程。

poYBAGJpDeyABnPYAABYXsw9wkc227.png

图 3 工作流程图

NVIDIA ISAAC 是的设置

在 NVIDIA ISAAC Sim 卡中使用仓库环境,其中包括 Carter robot 和叉车。按照 ROS2 导航示例 生成占用地图,供 Nav2 堆栈使用,以避免货架等静态障碍物。创建占用地图后,动态或移动障碍物(包括叉车和手推车)将添加到环境中。这是为了模拟现实世界,在没有机器人知识的情况下,物体在环境中发生变化。

重要的是要注意卡特机器人的左、右立体摄像机在NVIDIA ISAAC SIM 之间的偏移,以 NVIDIA ISAAC ROS 立体声宝石来正确地产生视差。在开始模拟之前,确保 NVIDIA ISAAC Sim 卡中的 ROS2 bridge 已启用,以便可以在 NVIDIA ISAAC Sim 卡之外传输 ROS2 消息。

NVIDIA ISAAC ROS 立体声宝石和导航 2

Nav2 堆栈使用 全球和本地成本图 引导机器人避开障碍物。本地成本图根据环境中新的移动障碍物进行更新,并可以将激光扫描和点云作为机器人传感器的输入。

由于激光雷达的激光扫描无法在真实场景中拾取叉齿,所以可以通过使用立体图像中的点云来解决这个问题,这些点云会被传递到 Nav2 。这些点云是使用 NVIDIA ISAAC ROS 立体声宝石产生的。

pYYBAGJpDe2AezyNAAO04pYtT0M775.png

图 4 当机器人在叉车前面时,使用NVIDIA ISAAC ROS 立体声宝石产生点云

在图 4 的右侧,弹齿下方的浅蓝色区域显示, Nav2 本地成本地图已经更新,以表示那里的障碍物,机器人现在可以避开。 NVIDIA ISAAC Sim 卡的图像平均速率为 20 FPS ,而 stereo GEM 的点云图像平均速率为 16 FPS 。

stereo GEM 生成一个视差图像,然后为机器人相机的左右图像中看到的所有对象生成一个点云。使用 ISAAC ROS 分割 GEM ,可以过滤此差异以生成仅包含属于感兴趣对象(例如叉车叉齿)的点的点云。

下一节将更详细地解释这种过滤。

使用NVIDIA ISAAC ROS 分割 GEM 的视差滤波

下面介绍了如何将基于合成生成数据训练的深度学习模型与 NVIDIA ISAAC ROS 推理机结合使用。您可以实现同样的目标:使用 GEMs 和 Nav2 堆栈,帮助机器人在模拟中避免叉车叉齿。

但是,您没有为机器人相机视野中的所有对象生成点云,而是只为叉车尖头过滤并生成聚焦点云。

pYYBAGJpDe6Ae0yIAAC2c2bDGk0815.png

图 5 使用 NVIDIA ISAAC ROS 分割和立体宝石执行视差过滤的工作流程

我使用了一个在叉车叉齿图像上训练的分割模型。 NVIDIA ISAAC ROS 分割 GEM 在模拟中从机器人获取 RGB 图像,并使用给定模型生成相应的分割图像。

任何模型都可以与此管道一起使用,以根据用例过滤特定对象。只需在感兴趣的数据上生成( Replicator Composer )和训练( TAO )即可!

poYBAGJpDfSAcwJNAAPXpzFXUm4323.png

图 6 训练模型根据机器人摄像头的图像以 39 FPS 的速度生成彩色分割图像。 ( top left ) 机器人的左摄像头视图。 ( top right ) 分割掩模; ( bottom ) 叉车齿的过滤点云。

原始分割图像中的每个像素代表图像中该位置的对象的类别标签。例如,知道感兴趣的标签,如果 2 代表叉齿,则在立体宝石生成的相应视差图像中将非感兴趣点设置为 invalid 。结果生成的点云不包括这些点。这有助于减少点云中的噪波。

pYYBAGJpDfWAdpi6AAKivlwEk_A834.png

图 7 视差滤波后生成的点云

与图 4 中的点云不同,它只包含属于叉车叉齿的点。

ROS 域 ID

随着NVIDIA ISAAC ROS GEMS 在容器内运行, NVIDIA ISAAC SIM 在主机上运行,必须确保 ROS 主题可以在主机和容器之间传递。

为此,请将所有进程的 ROS 域 ID 设置为相同的编号。使用相同域 ID 的所有 ROS2 节点都可以通信;那些使用不同域 ID 的人不能。有关更多信息,请参阅 The ROS_DOMAIN_ID 。

笔记

本项目中介绍的工作流程避免了激光雷达和摄像头可以检测到的障碍物。对于太小或被遮挡的障碍物,探索其他传感器。

该方法对视差计算和由此产生的点云质量非常敏感。由于计算视差是一项具有挑战性的任务,因此可能会得到噪声点云,从而导致 Nav2 错误地更新成本图。

视差滤波取决于分割模型的性能。无法生成精确分割遮罩的模型会导致视差和点云过滤效果不佳。

关于作者

Asawaree Bhide 是 NVIDIA 的 AI 嵌入式工程实习生,致力于优化和部署边缘设备上的深度学习模型。她目前正在乔治亚理工学院攻读计算机科学硕士学位,她对解决由具体代理自主导航的复杂感知任务感兴趣。Tomasz Lewicki 是 NVIDIA 的嵌入式工程实习生。他拥有圣何塞州立大学计算机工程硕士学位,华沙工业大学华沙工业大学机器人工程学学士学位。他的兴趣集中在计算机视觉和机器人应用的深度学习上。

审核编辑:郭婷

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

    关注

    5209

    文章

    20655

    浏览量

    336949
  • NVIDIA
    +关注

    关注

    14

    文章

    5687

    浏览量

    110112
  • AI
    AI
    +关注

    关注

    91

    文章

    41101

    浏览量

    302576
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ROS2 SLAM建图与导航实战--基于米尔RK3576开发板

    框架,继承了ROS1 Navigation Stack的优点并进行了完全的重构,支持行为树、更灵活的插件化架构和更好的实时性保障。SLAM Toolbox与Nav2结合,我们可以基于RK3576
    发表于 03-12 17:55

    基于NVIDIA Isaac库开发的机器人调酒师ADAM亮相国际赛场

    基于 NVIDIA Isaac 库开发的机器人调酒师 ADAM,为维加斯黄金骑士队的冰球粉丝带来了身临其境的未来式服务体验。
    的头像 发表于 12-24 10:05 606次阅读

    EtherCAT主站协议EC-Master在ROS(机器人操作系统)中的应用

    EtherCAT主站协议EC-Master在ROS(机器人操作系统)中的应用
    的头像 发表于 12-10 14:46 643次阅读
    EtherCAT主站协议<b class='flag-5'>栈</b>EC-Master在<b class='flag-5'>ROS</b>(机器人操作系统)中的应用

    的区别

    一个由C/C 编译的程序占用的内存分为以下几个部分: 区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的区(heap):一般由
    的头像 发表于 11-27 18:13 1230次阅读

    堆栈的定义,堆栈的使用方法

    和使用; 对于8086CPU,进出堆栈的只能是2字节的数据。 2 堆栈的使用方法 常用的堆栈相关指令包括PUSH POP PUSHF和POP
    发表于 11-21 06:49

    仅使用智能手机在NVIDIA Isaac Sim中重建场景

    使用 iPhone 拍摄照片,到利用 3DGUT 进行 3D 场景重建,再到重建的场景导入 NVIDIA Isaac Sim 并添加机器人。若要跳过重建步骤(步骤 1–3),直接在 Isaa
    的头像 发表于 11-10 14:03 1152次阅读

    空闲线程堆栈出现内存溢出的问题,怎么解决?

    rtthread版本: 5.1.0 硬件: stm32f407vgt6 具体我也不知道什么原因引起的, 目前堆栈调到1024后能为稳定运行 更新 设置1024堆栈, 运行久了也不行 我有什么操作会影响到空闲线程?
    发表于 10-11 10:36

    NVIDIA Isaac Lab多GPU多节点训练指南

    NVIDIA Isaac Lab 是一个适用于机器人学习的开源统一框架,基于 NVIDIA Isaac Sim 开发,其模块化高保真仿真适用于各种训练环境,可提供各种物理 AI 功能和
    的头像 发表于 09-23 17:15 2623次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b> Lab多GPU多节点训练指南

    NVIDIA Jetson + Isaac SDK 人形机器人方案全面解析

    NVIDIA Jetson + Isaac SDK 人形机器人方案全面解析 一、方案概述 Jetson 硬件平台 :提供 AI + GPU 运算能力,配合多传感器、视觉、传动控制体系 Isaac
    的头像 发表于 07-30 16:12 2453次阅读

    NVIDIA Jetson + Isaac SDK 在人形机器人领域的方案详解

    NVIDIA Jetson + Isaac SDK 在人形机器人领域的 方案详解 ,涵盖芯片型号、软件平台、开发工具链、应用场景与典型客户等。 一、方案概述:Jetson + Isaac SDK
    的头像 发表于 07-30 16:05 3922次阅读

    NVIDIA Isaac Lab可用环境与强化学习脚本使用指南

    NVIDIA Isaac Sim 是一款基于 NVIDIA Omniverse 构建的参考应用,使开发者能够在基于物理的虚拟环境中模拟和测试 AI 驱动的机器人开发解决方案。NVIDIA
    的头像 发表于 07-14 15:29 2619次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b> Lab可用环境与强化学习脚本使用指南

    NVIDIA Isaac Sim和Isaac Lab现已推出早期开发者预览版

    NVIDIA 发布了机器人仿真参考应用 Isaac Sim 和机器人学习框架 Isaac Lab 的开发者预览版。开发者现在可以通过 GitHub 访问早期版本,抢先体验先进功能,用于在基于物理的仿真环境中构建、训练和测试 AI
    的头像 发表于 07-04 14:23 2028次阅读

    NVIDIA Isaac Sim 4.5.0与lsaac Lab 2.0的安装教程

    Isaac Sim 和 Isaac Lab 目前开放下载的版本是 Isaac Sim 4.5.0 以及 Isaac Lab 2.0,本篇文章将为大家带来这两个软件的安装教程。
    的头像 发表于 06-19 15:00 3288次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b> Sim 4.5.0与lsaac Lab 2.0的安装教程

    NVIDIA Isaac Sim与NVIDIA Isaac Lab的更新

    在 COMPUTEX 2025 上,NVIDIA 宣布了机器人仿真参考应用 NVIDIA Isaac Sim 和机器人学习框架 NVIDIA Isa
    的头像 发表于 05-28 10:06 2393次阅读

    ros2教程

    电子发烧友网站提供《ros2教程.pdf》资料免费下载
    发表于 05-23 09:12 1次下载