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

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

3天内不再提示

如何通过NVIDIA ISAAC ROS GEMs

星星科技指导员 来源:NVIDIA 作者:Raffaello Bonghi 2022-04-15 16:42 次阅读

NVIDIA ISAAC GEMs for ROS 为您的 ROS2 应用程序提供了一套 GPU 加速包,提高了图像处理和基于 DNN 的感知模型的吞吐量。这些 ROS2 软件包是由 ROS2 Foxy 构建的,这是机器人社区推出的第一个长稳定版本( LTS )。

这篇文章研究如何通过实现 NVIDIA ISAAC ROS GEMs 来加速机器人的部署。本文的重点是使用nanosaur检测 AprilTags ,这是一种基于 NVIDIA Jetson 平台的简单开源机器人。

在详细介绍此应用程序之前,这里是 ROS 、 NVIDIA ISAAC GEMs 的历史,以及 nanosaur 是如何构建的。

ROS 和 ROS2 的历史

Willow Garage 于 2007 年开发了机器人操作系统( ROS )。 2012 次移交给新的开放机器人基金会是为了维护框架的发展。起初,该框架主要由机器人研究社区使用。最终,它在包括机器人制造商和公司在内的更广泛的开发者群体中赢得了欢迎。

2015 年, ROS 社区注意到生产版本的弱点,缺乏单机器人支持( roscore )安全性、实时支持缓慢以及其他核心问题。在这一点上,社区开始奠定第二代 ROS 的基础,为研究社区和公司重新设计它,着眼于安全性、内部通信和可靠性。

在最后一次 ROS 官方发布( Noetic )后, ROS2 正在成为新的机器人发行版,并且在第一次 LTS 发布后,社区的支持正在增加。

nanosaur

nanosaur 是一款基于NVIDIA Jetson的简单开源机器人。这款机器人完全可以 3D 打印,能够在你的办公桌上自主漫游,使用一个简单的摄像头和两个 OLED ,它们就像一对眼睛。它的尺寸为 10x12x6cm ,重量仅为 500 克。

nanosaur 的硬件与 NVIDIAJetBot类似,使用两个 I2C OLED 显示器并共享相同的 I2C 电机驱动器。然而, nanosaur 的软件是直接在 ROS2 上开发的,完全是 GPU 加速的,基于 Docker 。

nanosaur 有许多节点来驱动和显示机器人的状态。所有节点均按包排列。

nanosaur_base

nanosaur_base启用电机控制器和显示器。

joy2eyes将操纵杆信息转换为眼睛的主题。当您想要测试眼睛的主题时,此节点起作用。

nanosaur_camera

nanosaur_camera将相机拖缆从 MIPI 相机运行到 ROS2 主题。

ros2_jetson_stats

ros2_jetson_stats是jetson-statspackage的包装,用于监视和控制您的 NVIDIA Jetson Xavier NX 、 Jetson AGX Xavier 、 Nano 、 TX1 或 TX2]。

有关更多信息,请参阅主nanosaurGitHub 存储库。

这是启动 nanosaur 时常见的 ROS2 图表。

poYBAGJZMJ2AF14dAADQdSBkRgo884.png

图 2 。 ROS2 纳米龙图,按存储库和包划分

nanosaur 从 NVIDIA Jetson ROS Foxy Docker 图像开始发布。还支持 ROS2 Galactic 、 ROS2 Elotent 、 ROS Melodic 和 ROS Noetic 以及 PyTorch 、 TensorRT 和 DeepStream SDK 等人工智能框架。

ROS2 Foxy 在nanosaur_camera中与 Jetson -UTIL 一起编译和使用,以加快摄像头访问速度。

poYBAGJZMKOANhRjAADYWcJAo0I441.png

图 3 。 Docker 概述。纳米龙是根据dusty-nv/jetson-containers指南建造的.

当 nanosaur 运行时,有一组可用的主题,例如image_raw topic、移动显示器上绘制的眼睛的眼睛主题以及驱动机器人的导航命令。

NVIDIA ISAAC 玫瑰宝石

简化 GPU 加速算法的部署是这些新 ROS2 软件包的核心目的。这些软件包是机器人社区的开源软件包,可以利用 CPU 并直接在 GPU 上使用 AI 和机器人感知来提高机器人的能力。所有这些 gem 都是为 rosfoxy 部署的,并与 NVIDIA 引擎配合使用。

pYYBAGJZMKiAepzVAACqDq3W8nQ915.png

图 4 . ISAAC GEMs for ROS 是一套 GPU – 加速 ROS2 软件包,为机器人社区发布,是 NVIDIA Jetson 平台的一部分

NVIDIA ISAAC GEMs 在 ROS 软件包中提供硬件加速的机器人功能,在其他 ROS 软件包中结合本机节点时,保持 ROS2 中间件的集成。 NVIDIA ISAAC ROS GEMs 用于 x86 _ 64 / d GPU ( Ubuntu 20 . 04 )和 Jetson Xavier NX / AGX Xavier 以及最新的 NVIDIA JetPack 4 . 6 发行版。

新的NVIDIA ISAAC 玫瑰宝石包括:

isaac_ros_common

isaac_ros_image_pipeline

isaac_ros_apriltag

isaac_ros_dnn_inference(新)

isaac_ros_visual_odometry(新)

isaac_ros_argus_camera(新)

AprilTag

AprilTag 是一种独特的 QR 码,经过优化,可用于摄像机快速解码和远距离读取。这些标记是基准点,用于驱动机器人或操纵器从特定点开始动作或完成作业。它们还用于增强现实中,以校准遮阳板的里程计。这些标签在许多家庭中都有,但都很容易用台式打印机打印。

poYBAGJZMK2AXZ18AADVCVfQi28498.png

图 5 。不同类型的人名和姓氏

ROS2 AprilTag 软件包使用 NVIDIA GPU 来加速图像中的检测,并发布姿势、 ID 和其他元数据。该软件包与CPU AprilTag 检测的 ROS2 节点相当。

包依赖项包括:

isaac_ros_common

isaac_ros_image_pipeline

image_common

vision_cv

OpenCV 4.5+

熟悉存储库中提供的教程后,您可以在 ROS2 robotics 项目中定义和配置它。

poYBAGJZMNeAGVPUAABHQhpPqTo189.png

图 6 . NVIDIA ISAAC ROS 示例管道,从摄像机流开始,到图像校正,最后是 AprilTag 检测

通常,从相机或立体相机输出的流开始定义管道,其中发布了两个主题:第一个主题,其中输出为原始相机流;以及camera_info,其中所有校准和配置都定义了流。

完成此步骤后,您可以使用ros_image_proc来加速 ROS2 应用程序,以校正图像以及可能的标签和角的姿势估计。

isaac_ros_apriltag是一个 ROS2 主题,其中包含从流中检测到的 AprilTags 数组。对于列出的每个点,都有许多数据点,例如摄影机世界中的中心、所有角点、 ID 和姿势。默认情况下,主题名为/tag_detections。下面是tag_detections消息的示例。

---
header:
  stamp:
    sec: 1631573373
    nanosec: 24552192
  frame_id: camera_color_optical_frame
detections:
- family: 36h11
  id: 0
  center:
    x: 779.4064331054688
    y: 789.7901000976562
    z: 0.0
  corners:
  - x: 614.0
    y: 592.0
    z: 0.0
  - x: 971.0
    y: 628.0
    z: 0.0
  - x: 946.0
    y: 989.0
    z: 0.0
  
- x: 566.0
    y: 970.0
    z: 0.0
  pose:
    header:
      stamp:
        sec: 0
        nanosec: 0
      frame_id: ''
    pose:
      pose:
        position:
          x: -0.08404197543859482
          y: 0.11455488204956055
          z: 0.6107800006866455
        orientation:
          x: -0.10551299154758453
          y: -0.10030339658260345
          z: 0.04563025385141373
          w: 0.9882935285568237
      covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

nanosaur 和 AprilTag 探测

nanosaur_follower节点使用一个配置文件初始化,其中所有选定的参数都是 PID 增益、要遵循的 AprilTag ID 和其他参数。在主循环中,该节点解码来自Isaac_ros_apriltag的消息,当它出现在摄影机流中时,开始跟随它,生成线性速度和扭曲。

在图 8 中,Isaac_ros_apriltag为每一帧生成一个新的标签检测输出,nanosaur_follower节点驱动机器人。

poYBAGJZMOiAK_PYAADzkU5F1ug288.png

图 8 。 AprilTag 闭环导航和检测

在这种情况下,单轮机器人,纳米龙运动学模型的第一个近似值,可以使用解耦 PID 控制器跟踪标签。在图 9 中,第一个控制器( A )将从中心 AprilTag 角到中心垂直线的误差减小为零。此错误驱动 ROS2 twist 消息。同时,来自摄像机距离的第二个错误驱动机器人速度( B )。

pYYBAGJZMMOAHGRXAAEkx80Uo5Y143.png

图 9 。在 AprilTag 检测后, nanosaur 产生一个扭曲输出来驱动电机

实时 web 界面

nanosaur 提供了第二张 Docker 图像,其中所有主题和相机流都可以实时查看,并且您可以实时看到机器人移动时发生的情况。图 10 显示了一个用户界面示例。

poYBAGJZMMqAGHBQAACXT_Y_aIs551.png

图 10 。机器人运行时的 ROS2 web 界面示例

概括

在这篇文章中,我讨论了如何使用 NVIDIA ISAAC ROS GEMs 加速机器人部署。解决方案的重点是使用nanosaur检测 AprilTags ,这是一种基于 NVIDIA Jetson 平台的简单开源机器人。

关于作者

Raffaello Bonghi 是 AI & Robotics 的开发者关系经理。自 2015 年以来,他一直是 NVIDIA Jetson 冠军,设计用于户外导航和教育应用的多 ROS / ROS 机器人。此外,他还参与为零售和机器人领域的众多国际客户开发人工智能解决方案。拉斐洛拥有博士学位。在控制理论和工业自动化领域,专注于机器人技术。

审核编辑:郭婷

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

    关注

    210

    文章

    28199

    浏览量

    206514
  • NVIDIA
    +关注

    关注

    14

    文章

    4936

    浏览量

    102814
收藏 人收藏

    评论

    相关推荐

    NVIDIA Isaac Sim满足模型的多样化训练需求

    光轮智能借助 NVIDIA Isaac Sim,通过 3D 生成与建模技术构建高度逼真的虚拟场景,将现实世界的复杂场景抽象并转化为高质量的训练数据源,从而更有效地满足模型的多样化训练需求。 AI
    的头像 发表于 11-23 14:55 357次阅读

    日本企业借助NVIDIA产品加速AI创新

    日本领先企业和大学正在使用 NVIDIA NeMo、NIM 微服务和 NVIDIA Isaac 加速 AI 创新。
    的头像 发表于 11-19 14:34 169次阅读

    NVIDIA与学术研究人员联合开发手术机器人

    利用 NVIDIA Isaac Sim 和 NVIDIA Omniverse 开发的 ORBIT-Surgical 正在 ICRA 机器人大会上展出。
    的头像 发表于 10-10 10:00 338次阅读

    Foxconn利用NVIDIA AI和Omniverse训练机器人

    全球最大电子制造商 Foxconn 正准备制造 NVIDIA 最复杂的产品之一,并开始使用 NVIDIA Omniverse 和 Isaac 平台驱动的数字孪生。
    的头像 发表于 10-10 09:40 355次阅读

    NVIDIA Isaac 机器人平台利用最新的生成式 AI 和先进的仿真技术,加速 AI 机器人技术的发展

    NVIDIA 发布了 Isaac Manipulator 和 Isaac Perceptor 等一系列基础模型、机器人工具和 GPU 加速库。 NVIDIA 创始人兼首席执行官黄仁勋在
    的头像 发表于 06-04 18:00 7637次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b> 机器人平台利用最新的生成式 AI 和先进的仿真技术,加速 AI 机器人技术的发展

    电子制造商采用NVIDIA AI和 Omniverse助力工厂提高运营效率并降低成本

    NVIDIA Omniverse 基于物理学的渲染与模拟以及 NVIDIA Isaac AI 机器人开发与部署。 通过使用该工作流构建数字孪生以实时模拟不同工厂布局,制造商无须进行昂
    的头像 发表于 06-04 10:22 581次阅读

    NVIDIA Isaac Manipulator助力让下一代机器人技术触手可及

    两家公司在芝加哥 Automate 展会上宣布将围绕 NVIDIA AI、Isaac Manipulator 和 Intrinsic 平台的使用展开合作。
    的头像 发表于 05-13 14:15 855次阅读

    NVIDIA Isaac机器人平台升级,加速AI机器人技术革新

    NVIDIA Isaac机器人平台近期实现重大升级,通过引入最新的生成式AI技术和先进的仿真技术,显著加速了AI机器人技术的发展步伐。该平台正不断扩展其基础模型、机器人学习框架、AI工作流编排以及机器人感知工具等功能,以应对日益
    的头像 发表于 03-27 10:36 632次阅读

    NVIDIA入局人形机器人!Isaac平台迎来重要更新

    NVIDIA Isaac 机器人平台利用最新的生成式 AI 和先进的仿真技术,加速 AI 机器人技术的发展。
    的头像 发表于 03-26 09:07 998次阅读
    <b class='flag-5'>NVIDIA</b>入局人形机器人!<b class='flag-5'>Isaac</b>平台迎来重要更新

    NVIDIA Isaac将生成式AI应用于制造业和物流业

    NVIDIA Isaac 机器人平台利用最新的生成式 AI 和先进的仿真技术,加速 AI 机器人技术的发展。
    的头像 发表于 03-22 10:06 497次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b>将生成式AI应用于制造业和物流业

    生成式AI通过NVIDIA Isaac平台提高机器人的智能化水平

    今日,NVIDIA 机器人和边缘计算副总裁 Deepu Talla 在 CES 上的特别演讲中,详细介绍了 NVIDIA 及合作伙伴是如何将生成式 AI 与机器人技术相结合的。
    的头像 发表于 01-09 10:27 1105次阅读
    生成式AI<b class='flag-5'>通过</b><b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b>平台提高机器人的智能化水平

    ros怎么设置环境变量

    设置ROS环境变量是使用ROS的重要步骤之一。本文将详细介绍如何设置ROS环境变量,包括什么是环境变量、为什么要设置ROS环境变量、如何设置ROS
    的头像 发表于 12-28 13:52 1959次阅读

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

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

    利用 NVIDIA Isaac Transport for ROS 提升自定义 ROS 图形性能

    NVIDIA Isaac Transport for ROS(NITROS) 是随 ROS 2 Humble 加入的两项硬件加速功能——类型适配和类型协商。 类型适配 使
    的头像 发表于 11-30 19:35 597次阅读
    利用 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Isaac</b> Transport for <b class='flag-5'>ROS</b> 提升自定义 <b class='flag-5'>ROS</b> 图形性能

    ros的基本概念是什么

    基本概念: ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。 ROS2系统的核心部分是ROS网络(ROS Graph)。 ROS
    的头像 发表于 11-27 11:21 1746次阅读