NVIDIA ISAAC GEMs for ROS 為您的 ROS2 應用程序提供了一套 GPU 加速包,提高了圖像處理和基于 DNN 的感知模型的吞吐量。這些 ROS2 軟件包是由 ROS2 Foxy 構(gòu)建的,這是機器人社區(qū)推出的第一個長穩(wěn)定版本( LTS )。
這篇文章研究如何通過實現(xiàn) NVIDIA ISAAC ROS GEMs 來加速機器人的部署。本文的重點是使用nanosaur檢測 AprilTags ,這是一種基于 NVIDIA Jetson 平臺的簡單開源機器人。
在詳細介紹此應用程序之前,這里是 ROS 、 NVIDIA ISAAC GEMs 的歷史,以及 nanosaur 是如何構(gòu)建的。
ROS 和 ROS2 的歷史
Willow Garage 于 2007 年開發(fā)了機器人操作系統(tǒng)( ROS )。 2012 次移交給新的開放機器人基金會是為了維護框架的發(fā)展。起初,該框架主要由機器人研究社區(qū)使用。最終,它在包括機器人制造商和公司在內(nèi)的更廣泛的開發(fā)者群體中贏得了歡迎。
2015 年, ROS 社區(qū)注意到生產(chǎn)版本的弱點,缺乏單機器人支持( roscore )安全性、實時支持緩慢以及其他核心問題。在這一點上,社區(qū)開始奠定第二代 ROS 的基礎,為研究社區(qū)和公司重新設計它,著眼于安全性、內(nèi)部通信和可靠性。
在最后一次 ROS 官方發(fā)布( Noetic )后, ROS2 正在成為新的機器人發(fā)行版,并且在第一次 LTS 發(fā)布后,社區(qū)的支持正在增加。
nanosaur
nanosaur 是一款基于NVIDIA Jetson的簡單開源機器人。這款機器人完全可以 3D 打印,能夠在你的辦公桌上自主漫游,使用一個簡單的攝像頭和兩個 OLED ,它們就像一對眼睛。它的尺寸為 10x12x6cm ,重量僅為 500 克。
nanosaur 的硬件與 NVIDIAJetBot類似,使用兩個 I2C OLED 顯示器并共享相同的 I2C 電機驅(qū)動器。然而, nanosaur 的軟件是直接在 ROS2 上開發(fā)的,完全是 GPU 加速的,基于 Docker 。
nanosaur 有許多節(jié)點來驅(qū)動和顯示機器人的狀態(tài)。所有節(jié)點均按包排列。
nanosaur_base
nanosaur_base啟用電機控制器和顯示器。
joy2eyes將操縱桿信息轉(zhuǎn)換為眼睛的主題。當您想要測試眼睛的主題時,此節(jié)點起作用。
nanosaur_camera
nanosaur_camera將相機拖纜從 MIPI 相機運行到 ROS2 主題。
ros2_jetson_stats
ros2_jetson_stats是jetson-statspackage的包裝,用于監(jiān)視和控制您的 NVIDIA Jetson Xavier NX 、 Jetson AGX Xavier 、 Nano 、 TX1 或 TX2]。
有關更多信息,請參閱主nanosaurGitHub 存儲庫。
這是啟動 nanosaur 時常見的 ROS2 圖表。
圖 2 。 ROS2 納米龍圖,按存儲庫和包劃分
nanosaur 從 NVIDIA Jetson ROS Foxy Docker 圖像開始發(fā)布。還支持 ROS2 Galactic 、 ROS2 Elotent 、 ROS Melodic 和 ROS Noetic 以及 PyTorch 、 TensorRT 和 DeepStream SDK 等人工智能框架。
ROS2 Foxy 在nanosaur_camera中與 Jetson -UTIL 一起編譯和使用,以加快攝像頭訪問速度。
圖 3 。 Docker 概述。納米龍是根據(jù)dusty-nv/jetson-containers指南建造的.
當 nanosaur 運行時,有一組可用的主題,例如image_raw topic、移動顯示器上繪制的眼睛的眼睛主題以及驅(qū)動機器人的導航命令。
NVIDIA ISAAC 玫瑰寶石
簡化 GPU 加速算法的部署是這些新 ROS2 軟件包的核心目的。這些軟件包是機器人社區(qū)的開源軟件包,可以利用 CPU 并直接在 GPU 上使用 AI 和機器人感知來提高機器人的能力。所有這些 gem 都是為 rosfoxy 部署的,并與 NVIDIA 引擎配合使用。
圖 4 . ISAAC GEMs for ROS 是一套 GPU – 加速 ROS2 軟件包,為機器人社區(qū)發(fā)布,是 NVIDIA Jetson 平臺的一部分
NVIDIA ISAAC GEMs 在 ROS 軟件包中提供硬件加速的機器人功能,在其他 ROS 軟件包中結(jié)合本機節(jié)點時,保持 ROS2 中間件的集成。 NVIDIA ISAAC ROS GEMs 用于 x86 _ 64 / d GPU ( Ubuntu 20 . 04 )和 Jetson Xavier NX / AGX Xavier 以及最新的 NVIDIA JetPack 4 . 6 發(fā)行版。
新的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 碼,經(jīng)過優(yōu)化,可用于攝像機快速解碼和遠距離讀取。這些標記是基準點,用于驅(qū)動機器人或操縱器從特定點開始動作或完成作業(yè)。它們還用于增強現(xiàn)實中,以校準遮陽板的里程計。這些標簽在許多家庭中都有,但都很容易用臺式打印機打印。
圖 5 。不同類型的人名和姓氏
ROS2 AprilTag 軟件包使用 NVIDIA GPU 來加速圖像中的檢測,并發(fā)布姿勢、 ID 和其他元數(shù)據(jù)。該軟件包與CPU AprilTag 檢測的 ROS2 節(jié)點相當。
包依賴項包括:
isaac_ros_common
isaac_ros_image_pipeline
image_common
vision_cv
OpenCV 4.5+
熟悉存儲庫中提供的教程后,您可以在 ROS2 robotics 項目中定義和配置它。
圖 6 . NVIDIA ISAAC ROS 示例管道,從攝像機流開始,到圖像校正,最后是 AprilTag 檢測
通常,從相機或立體相機輸出的流開始定義管道,其中發(fā)布了兩個主題:第一個主題,其中輸出為原始相機流;以及camera_info,其中所有校準和配置都定義了流。
完成此步驟后,您可以使用ros_image_proc來加速 ROS2 應用程序,以校正圖像以及可能的標簽和角的姿勢估計。
isaac_ros_apriltag是一個 ROS2 主題,其中包含從流中檢測到的 AprilTags 數(shù)組。對于列出的每個點,都有許多數(shù)據(jù)點,例如攝影機世界中的中心、所有角點、 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節(jié)點使用一個配置文件初始化,其中所有選定的參數(shù)都是 PID 增益、要遵循的 AprilTag ID 和其他參數(shù)。在主循環(huán)中,該節(jié)點解碼來自Isaac_ros_apriltag的消息,當它出現(xiàn)在攝影機流中時,開始跟隨它,生成線性速度和扭曲。
在圖 8 中,Isaac_ros_apriltag為每一幀生成一個新的標簽檢測輸出,nanosaur_follower節(jié)點驅(qū)動機器人。
圖 8 。 AprilTag 閉環(huán)導航和檢測
在這種情況下,單輪機器人,納米龍運動學模型的第一個近似值,可以使用解耦 PID 控制器跟蹤標簽。在圖 9 中,第一個控制器( A )將從中心 AprilTag 角到中心垂直線的誤差減小為零。此錯誤驅(qū)動 ROS2 twist 消息。同時,來自攝像機距離的第二個錯誤驅(qū)動機器人速度( B )。
圖 9 。在 AprilTag 檢測后, nanosaur 產(chǎn)生一個扭曲輸出來驅(qū)動電機
實時 web 界面
nanosaur 提供了第二張 Docker 圖像,其中所有主題和相機流都可以實時查看,并且您可以實時看到機器人移動時發(fā)生的情況。圖 10 顯示了一個用戶界面示例。
圖 10 。機器人運行時的 ROS2 web 界面示例
概括
在這篇文章中,我討論了如何使用 NVIDIA ISAAC ROS GEMs 加速機器人部署。解決方案的重點是使用nanosaur檢測 AprilTags ,這是一種基于 NVIDIA Jetson 平臺的簡單開源機器人。
關于作者
Raffaello Bonghi 是 AI & Robotics 的開發(fā)者關系經(jīng)理。自 2015 年以來,他一直是 NVIDIA Jetson 冠軍,設計用于戶外導航和教育應用的多 ROS / ROS 機器人。此外,他還參與為零售和機器人領域的眾多國際客戶開發(fā)人工智能解決方案。拉斐洛擁有博士學位。在控制理論和工業(yè)自動化領域,專注于機器人技術。
審核編輯:郭婷
-
機器人
+關注
關注
210文章
28219瀏覽量
206583 -
NVIDIA
+關注
關注
14文章
4946瀏覽量
102821
發(fā)布評論請先 登錄
相關推薦
評論