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 圖表。
圖 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 一起編譯和使用,以加快攝像頭訪問速度。
圖 3 。 Docker 概述。納米龍是根據dusty-nv/jetson-containers指南建造的.
當 nanosaur 運行時,有一組可用的主題,例如image_raw topic、移動顯示器上繪制的眼睛的眼睛主題以及驅動機器人的導航命令。
NVIDIA ISAAC 玫瑰寶石
簡化 GPU 加速算法的部署是這些新 ROS2 軟件包的核心目的。這些軟件包是機器人社區的開源軟件包,可以利用 CPU 并直接在 GPU 上使用 AI 和機器人感知來提高機器人的能力。所有這些 gem 都是為 rosfoxy 部署的,并與 NVIDIA 引擎配合使用。
圖 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 碼,經過優化,可用于攝像機快速解碼和遠距離讀取。這些標記是基準點,用于驅動機器人或操縱器從特定點開始動作或完成作業。它們還用于增強現實中,以校準遮陽板的里程計。這些標簽在許多家庭中都有,但都很容易用臺式打印機打印。
圖 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 項目中定義和配置它。
圖 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節點驅動機器人。
圖 8 。 AprilTag 閉環導航和檢測
在這種情況下,單輪機器人,納米龍運動學模型的第一個近似值,可以使用解耦 PID 控制器跟蹤標簽。在圖 9 中,第一個控制器( A )將從中心 AprilTag 角到中心垂直線的誤差減小為零。此錯誤驅動 ROS2 twist 消息。同時,來自攝像機距離的第二個錯誤驅動機器人速度( B )。
圖 9 。在 AprilTag 檢測后, nanosaur 產生一個扭曲輸出來驅動電機
實時 web 界面
nanosaur 提供了第二張 Docker 圖像,其中所有主題和相機流都可以實時查看,并且您可以實時看到機器人移動時發生的情況。圖 10 顯示了一個用戶界面示例。
圖 10 。機器人運行時的 ROS2 web 界面示例
概括
在這篇文章中,我討論了如何使用 NVIDIA ISAAC ROS GEMs 加速機器人部署。解決方案的重點是使用nanosaur檢測 AprilTags ,這是一種基于 NVIDIA Jetson 平臺的簡單開源機器人。
關于作者
Raffaello Bonghi 是 AI & Robotics 的開發者關系經理。自 2015 年以來,他一直是 NVIDIA Jetson 冠軍,設計用于戶外導航和教育應用的多 ROS / ROS 機器人。此外,他還參與為零售和機器人領域的眾多國際客戶開發人工智能解決方案。拉斐洛擁有博士學位。在控制理論和工業自動化領域,專注于機器人技術。
審核編輯:郭婷
-
機器人
+關注
關注
211文章
28524瀏覽量
207538 -
NVIDIA
+關注
關注
14文章
5025瀏覽量
103266
發布評論請先 登錄
相關推薦
評論