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