chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

利用 NVIDIA Isaac Transport for ROS 提升自定義 ROS 圖形性能

NVIDIA英偉達企業(yè)解決方案 ? 來源:未知 ? 2023-11-30 19:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

NVIDIA Isaac Transport for ROS(NITROS)是隨 ROS 2 Humble 加入的兩項硬件加速功能——類型適配和類型協(xié)商。

類型適配使 ROS 節(jié)點能夠使用針對特定硬件加速器優(yōu)化的數(shù)據(jù)格式進行工作。經(jīng)過適配的類型用于處理圖形,以消除 CPU 和內(nèi)存加速器之間的內(nèi)存拷貝。

通過類型協(xié)商,處理圖中的不同 ROS 節(jié)點可以公布其支持的類型,ROS 框架也可以選擇數(shù)據(jù)格式,從而實現(xiàn)理想的性能。

wKgZomVodJWAeXJdAAkJ84lYbsg408.gif

圖 1. NITROS 通過減少 CPU 和

GPU之間的內(nèi)存拷貝,實現(xiàn)高效加速

當兩個支持 NITROS 的 ROS 節(jié)點在圖中相鄰時,它們可以通過類型協(xié)商發(fā)現(xiàn)對方,然后使用類型適配共享數(shù)據(jù)。通過消除不必要的內(nèi)存拷貝,類型適配和類型協(xié)商可共同顯著提高基于 ROS 的應用中的 AI計算機視覺任務性能。

這不僅減少了 CPU 開銷,還優(yōu)化了底層硬件的性能。圖 1 顯示了使用 NITROS 的高效硬件加速。數(shù)據(jù)可以從 GPU 內(nèi)存中訪問,而不需要頻繁地復制 CPU。

由于 ROS 框架與不支持協(xié)商的傳統(tǒng)節(jié)點保持兼容,因此可在處理圖中結合使用基于 NITROS 的 Isaac ROS 節(jié)點和其他 ROS 節(jié)點。支持 NITROS 的節(jié)點在與非 NITROS 節(jié)點通信時,其功能與典型的 ROS 2 節(jié)點相同。大多數(shù) Isaac ROS GEM 都是通過 NITROS 加速的。

請通過NVIDIA NITROS 文檔進一步了解關于 NITROS 和系統(tǒng)假設的更多信息:https://nvidia-isaac-ros.github.io/concepts/nitros/index.html

搭載 NITROS 的 NVIDIA CUDA

NVIDIA CUDA是一種并行計算編程模型,可大幅提高搭載 GPU 的機器人系統(tǒng)的運行速度。自定義 ROS 2 節(jié)點可通過代管式 NITROS 發(fā)布器和代管式 NITROS 訂閱器,使用搭載 NITROS 的 CUDA。

wKgZomVodJWAKAtyAACvuMpL7mo501.png

圖 2. 搭載 NITROS 的 CUDA 概覽

ROS 節(jié)點中的 CUDA 代碼可以使用代管式 NITROS 發(fā)布器,并與支持 NITROS 的 Isaac ROS 節(jié)點共享 GPU 內(nèi)存中的輸出緩沖區(qū)。這樣就省去了昂貴的 CPU 內(nèi)存拷貝步驟,從而提高了性能。NITROS 還能通過發(fā)布與普通 ROS 2 消息相同的數(shù)據(jù),來保持與非 NITROS 節(jié)點的兼容性。

wKgZomVodJWAYk7KAABS6gN1uac064.png

圖 3. ROS 2 節(jié)點中的 NITROS 發(fā)布器

在訂閱器方面,ROS 節(jié)點中的 CUDA 代碼可以使用代管式 NITROS 訂閱器來接收 GPU 內(nèi)存中的輸入。輸入既可以來自于支持 NITROS 的 Isaac ROS 節(jié)點,也可以來自于使用 NITROS 發(fā)布器的其他支持 CUDA 的 ROS 節(jié)點。與代管式 NITROS 發(fā)布器一樣,這也能通過增加 GPU 和 CPU 之間的并行計算來提高性能。

wKgZomVodJWAEGNfAAAixdRscCw562.png

圖 4.ROS 2 節(jié)點中的 NITROS 訂閱器

為了更好地理解這一點,讓我們來看一個基于 DNN 的點云分割示例圖。總的來說,有三個主要的組件使用搭載 NITROS 的 CUDA:

  1. 搭載代管式 NITROS 發(fā)布器的編碼器節(jié)點:可將 sensor_msgs/PointCloud2 消息轉換為 NitrosTensorList

  2. Isaac ROS TensorRT 節(jié)點:可執(zhí)行 DNN 推理,接收輸入 NitrosTensorList 并生成輸出 NitrosTensorList

  3. 搭載代管式 NITROS 訂閱器的解碼器節(jié)點:可將輸出的 NitrosTensorList 轉換為分段的 sensor_msgs/PointCloud2 消息

代管式 NITROS 發(fā)布器和訂閱器提供了一個可與標準的 rclcpp::Publisher 和 rclcpp::Subscriber API 相媲美的熟悉界面,使與現(xiàn)有 ROS 2 節(jié)點的集成更加直觀。搭載 NITROS 的 CUDA 還能實現(xiàn)更加模塊化的軟件設計。借助代管式 NITROS 發(fā)布器和訂閱器,CUDA 節(jié)點可以在圖中的任何位置與 Isaac ROS 節(jié)點和其他 CUDA 節(jié)點一起使用,從而在每個節(jié)點上獲得加速計算的優(yōu)勢。

再深入一點來看,NITROS 是基于 NVIDIA 圖執(zhí)行框架(GXF)開發(fā)的,它是一個用于構建高性能計算圖的可擴展框架。NITROS 利用 GXF 實現(xiàn)了高效的 ROS 應用圖。通過搭載 NITROS 的 CUDA,開發(fā)者無需了解使其節(jié)點支持 NITROS 的前提條件——GXF 的底層工作原理。GXF 層已被抽象化,用戶只需進行簡單的調整就能啟用 NITROS,從而像往常一樣輕松、快速地編寫 ROS 2 節(jié)點。

訪問網(wǎng)址進一步了解搭載 NITROS 的 CUDA 的核心概念:https://nvidia-isaac-ros.github.io/concepts/nitros/cuda_with_nitros.html#core-concepts

目前,代管式 NITROS 發(fā)布器和訂閱器僅與 Isaac ROS NitrosTensorList 消息類型兼容。請訪問isaac_ros_nitros_type,查看完整的 NITROS 數(shù)據(jù)類型列表:https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_nitros/tree/main/isaac_ros_nitros_type

使用搭載 NITROS 的 CUDA

和 YOLOv8 進行對象檢測

Isaac ROS 提供了一個YOLOv8 示例:https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_object_detection/tree/main/isaac_ros_yolov8,展示了如何使用代管式 NITROS 實用程序和自定義 ROS 解碼器來充分運用 NITROS。該示例使用來自 Isaac ROS DNN Inference 的軟件包,通過 YOLOv8 來執(zhí)行 TensorRT 加速的對象檢測。代管式 NITROS 發(fā)布器和訂閱器使用 NITROS 類型的消息,目前只與 Isaac ROS NitrosTensorList 消息類型兼容。這種消息類型用于在節(jié)點和 Isaac ROS DNN Inference 節(jié)點之間共享張量。

wKgZomVodJaAeQLEAA93AQWEHPU502.png

圖 5. 使用 Isaac ROS DNN Inference

檢測 YOLOv8 對象

假設您想使用由 Isaac ROS DNN Inference 和 CUDA NITROS 加速的自定義對象檢測模型,檢測流程涉及輸入圖像編碼、DNN 推理以及輸出解碼三個主要步驟。Isaac ROS DNN Inference 實現(xiàn)了前兩個步驟。

在解碼步驟中,必須從推理結果(即張量)中提取相關信息。對于像 2D 物體檢測這樣的任務,相關信息包括邊界框以及圖像中每個檢測到的輸出的類別得分。

下面讓我們來詳細了解各個步驟。

第 1 步:編碼

在輸入方面,Isaac ROS 提供了一個由 NITROS 加速的 DNN 圖像編碼器。它會對輸入圖像進行預處理,并將其轉換為張量,然后通過 isaac_ros_tensor_list 類型將張量傳遞給 TensorRT 或 Triton 節(jié)點進行推理。

您可以為各種預處理功能(如調整大小等)指定圖像大小和網(wǎng)絡期望的輸入大小等參數(shù)。請注意,根據(jù)任務的不同,您需要使用不同的編碼器。例如,由于網(wǎng)絡期望的輸入編碼不同,您不能在語言模型中使用這種圖像編碼器。

wKgZomVodJaAVvPgAADREc7WRe0517.png

圖 6. Isaac ROS DNN 圖像編碼器節(jié)點概覽

第 2 步:推理

Isaac ROS 為 DNN 推理提供兩個 ROS 節(jié)點——TensorRT 節(jié)點和 Triton 節(jié)點。YOLOv8 樣本目前使用其中的 TensorRT 節(jié)點。將訓練好的模型提供給 TensorRT 節(jié)點,它就能執(zhí)行推理并輸出包含檢測結果的張量。

輸出的張量列表將傳遞給解碼器節(jié)點。您可以指定網(wǎng)絡所期望的維度和張量名稱等參數(shù),并且可以使用 Netron 等工具在 ONNX 模型中輕松找到這些信息。

wKgZomVodJaAa-FQAAA1vagN2WE365.png

圖 7. Isaac ROS TensorRT 推理節(jié)點概覽

第 3 步:解碼

從 TensorRT 或 Triton 節(jié)點推理出的輸出張量必須解析為所需的邊界框和類信息。比方說,您把模型的解碼器寫成了 ROS 2 節(jié)點(而且還不支持 NITROS)。

解碼器節(jié)點并不支持 NITROS 類型的信息,而是期望從推理節(jié)點獲得典型的 ROS 2 信息。由于 NITROS 保持了與非 NITROS 節(jié)點的兼容性,因此這種方法仍然有效。

不過在這種情況下,推理節(jié)點(位于 GPU 內(nèi)存中)輸出的 NITROS 類型消息會被轉換成 ROS 2 消息,并被傳送到 CPU 內(nèi)存中供解碼器使用。這將帶來一些開銷,因為數(shù)據(jù)現(xiàn)在位于 CPU 內(nèi)存中,導致在與下游 ROS 節(jié)點協(xié)同工作時需要復制 CPU 內(nèi)存。

現(xiàn)在,假設您想升級解碼器,以便通過 NITROS 與推理節(jié)點(以及其他 NITROS 加速節(jié)點)進行通信,而不需要承擔 CPU 內(nèi)存復制的成本。在這種情況下,所有數(shù)據(jù)都會保留在 GPU 內(nèi)存中。

在解碼器節(jié)點中使用代管式 NITROS 訂閱器就能輕松實現(xiàn)這一需求。該訂閱器能夠訂閱來自推理節(jié)點的 NITROS 類型輸出消息,并使用 NITROS 視圖獲取包含檢測輸出的 CUDA 緩沖區(qū)。然后,您就可以對這些數(shù)據(jù)執(zhí)行解碼邏輯,并通過適當?shù)?ROS 消息類型發(fā)布結果。

YOLOv8 解碼器可設置 NMS 閾值和置信閾值等參數(shù)以過濾候選檢測結果??墒褂靡粋€簡單的可視化節(jié)點訂閱產(chǎn)生的 ROS 消息,并在輸入圖像上繪制邊界框。請注意,代管式 NITROS 只能與 CPP ROS 2 節(jié)點集成。

wKgZomVodJaAMNyrAADoOpPuEvY556.png

圖 8. YOLOv8 解碼器節(jié)點概覽

Isaac ROS NITROS 橋接器

如果您的機器人應用目前基于 ROS 1,仍可以使用新發(fā)布的 Isaac ROS NITROS 橋接器來獲得加速計算的紅利。這對使用 ROS 2 版本(Humble 之前的版本)的開發(fā)者來說也很有幫助,因為 ROS 2 版本不提供類型適配和協(xié)商功能。

NITROS 橋接器在 ROS 1 Noetic 和 NITROS 軟件包之間傳輸 1080p 圖像的速度比 ROS 1 橋接器快 2.5 倍,充分凸顯了所實現(xiàn)的提速效果。

ROS 橋接器會產(chǎn)生基于 CPU 的內(nèi)存復制成本,而 Isaac ROS NITROS 橋接器通過將數(shù)據(jù)從 CPU 轉移到 GPU 消除了這一成本。這些數(shù)據(jù)可以在 GPU 內(nèi)存中就地使用。

NITROS 橋接器由兩個轉換器節(jié)點組成。一個用于 ROS(例如 Noetic)一側,另一個用于 ROS 2(例如 Humble)一側。在不使用 NITROS 轉換器的情況下,使用 ROS 橋接器會導致圖像從 Noetic 發(fā)送到 Humble,然后再通過 CPU 內(nèi)存中的 ROS 進程副本發(fā)送回來,從而增加延遲。這個問題在發(fā)送大量數(shù)據(jù)(如分割點云)的節(jié)點之間尤為明顯。

wKgZomVodJaAFm_1AABWwSk1FFE841.png

圖 9. 不使用 NITROS 轉換器情況下的 ROS 橋接器

NITROS 橋接器的設計目標是減少跨 ROS 版本的端到端延遲。請看同一個例子,這次使用的是 NITROS 轉換器。Noetic 一側的轉換器(圖 10)將圖像移至 GPU 內(nèi)存,避免了通過橋接器復制 CPU 內(nèi)存。Humble 側的轉換器(圖 10)將 GPU 內(nèi)存中的圖像轉換為 NITROS 圖像類型,該類型與其他 NITROS 加速節(jié)點兼容。

反之亦然——圖像數(shù)據(jù)作為 NITROS 圖像通過兩側中任何一側的轉換器從 Humble 發(fā)送到位于 Noetic 的 CPU 可訪問內(nèi)存中的圖像。

更多關于性能提升的信息,請訪問NITROS 橋接器:https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/scripts/isaac_ros_nitros_bridge.py和 ros1 橋接器的Isaac ROS 基準:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_benchmark/index.html。請注意,Isaac ROS NITROS 橋接器尚不支持 NVIDIA Jetson 平臺。

wKgZomVodJaAGVigAABrYrFUbxk913.png

圖 10. NITROS 橋接器概覽

將 ROS 2 節(jié)點與 NITROS 集成的益處

下面總結了將 ROS 2 節(jié)點與 NITROS 集成的諸多益處:

  • 通過減少 CPU 內(nèi)存拷貝以提高性能。

  • 與 RViz 等其他非 NITROS ROS 節(jié)點兼容。

  • 通過代管式 NITROS 發(fā)布器和訂閱器,可輕松將自定義的 ROS 2 節(jié)點與硬件加速的 Isaac ROS 節(jié)點集成。

  • 使用搭載 NITROS 的 CUDA 進行模塊化軟件設計

  • 使用 NITROS 橋接器提高基于早期 ROS 版本的應用程序的性能。

嘗試使用 Isaac ROS NITROS 和 YOLOv8 對象檢測樣本,加速您的 ROS 節(jié)點吧!

訪問NVIDIA Isaac ROS 文檔頁面了解有關我們硬件加速軟件包的更多信息:https://nvidia-isaac-ros.github.io/index.html

您還可以登陸開發(fā)者論壇了解更多有關 Isaac ROS 的最新信息:https://forums.developer.nvidia.com/c/agx-autonomous-machines/isaac/isaac-ros/600

GTC 2024 將于 2024 年 3 月 18 至 21 日在美國加州圣何塞會議中心舉行,線上大會也將同期開放。點擊“閱讀原文”掃描下方海報二維碼,立即注冊 GTC 大會。


原文標題:利用 NVIDIA Isaac Transport for ROS 提升自定義 ROS 圖形性能

文章出處:【微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關注!文章轉載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 英偉達
    +關注

    關注

    23

    文章

    4069

    瀏覽量

    98733

原文標題:利用 NVIDIA Isaac Transport for ROS 提升自定義 ROS 圖形性能

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    米爾RK3576成功上車!ROS2 Humble生態(tài)系統(tǒng)體驗

    性能x86平臺 生態(tài)完整:Ubuntu+ROS2+豐富外設驅動 未來計劃 進一步優(yōu)化GPU驅動,提升3D渲染性能 集成SLAM、導航等實際機器人應用棧 推動在AGV、服務機器人
    發(fā)表于 01-15 18:30

    圖形界面模式下自定義檢查工具的應用

    此前文章已介紹 ANSA 中的自定義檢查工具。本文將探討該功能在無圖形界面(No-GUI)模式下的應用,旨在滿足標準化工作流程的需求,適用于需要高度自動化的前處理場景。通過集成自定義檢查,用戶可實現(xiàn)工作流程的高效自動化運行。
    的頭像 發(fā)表于 11-30 14:13 ?493次閱讀
    無<b class='flag-5'>圖形</b>界面模式下<b class='flag-5'>自定義</b>檢查工具的應用

    軟硬件協(xié)同技術分享 - 任務劃分 + 自定義指令集

    利用定時器中斷,率先判斷該FIFO的值不為空,并且保證一次讀取一個幀長(即10個周期)的數(shù)據(jù),能夠實現(xiàn)該FIFO內(nèi)數(shù)據(jù)即寫即讀,數(shù)據(jù)寫入不久便能取走的效果。 自定義指令集設計 E203
    發(fā)表于 10-28 08:03

    如何使用menuconfig添加配置micro-ros軟件包?

    請問有沒有最新的rtthread移植micro-ros移植使用教程,使用menuconfig添加配置micro-ros軟件包?
    發(fā)表于 09-25 06:37

    如何基于翼輝信息SylixOS開發(fā)ROS 2應用

    ROS 2(Robot Operating System 2)是機器人操作系統(tǒng)(ROS)的升級版,是一套開源的專為機器人開發(fā)而設計的軟件庫與工具集。作為構建機器人應用的強大框架,提供從硬件驅動到先進
    的頭像 發(fā)表于 08-14 15:44 ?1938次閱讀
    如何基于翼輝信息SylixOS開發(fā)<b class='flag-5'>ROS</b> 2應用

    大彩講堂:VisualTFT軟件如何自定義圓形進度條

    VisualTFT軟件如何自定義圓形進度條
    的頭像 發(fā)表于 07-07 17:10 ?1418次閱讀
    大彩講堂:VisualTFT軟件如何<b class='flag-5'>自定義</b>圓形進度條

    KiCad 中的自定義規(guī)則(KiCon 演講)

    設計規(guī)則 展開,重點探討了 那些復雜卻強大的特性。 由于這些規(guī)則本質上是基于文本表達的,需要用戶細致入微的理解。演講的 核心目標 是引導用戶有效實施這些規(guī)則,從而 規(guī)避布線問題、提升制造良率,并優(yōu)化設計流程 。 討論 始于對自定義設計規(guī)則的
    的頭像 發(fā)表于 06-16 11:17 ?1841次閱讀
    KiCad 中的<b class='flag-5'>自定義</b>規(guī)則(KiCon 演講)

    HarmonyOS應用自定義鍵盤解決方案

    自定義鍵盤是一種替換系統(tǒng)默認鍵盤的解決方案,可實現(xiàn)鍵盤個性化交互。允許用戶結合業(yè)務需求與操作習慣,對按鍵布局進行可視化重構、設置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護層面,自定義鍵盤可以
    的頭像 發(fā)表于 06-05 14:19 ?2206次閱讀

    NVIDIA Isaac Sim與NVIDIA Isaac Lab的更新

    在 COMPUTEX 2025 上,NVIDIA 宣布了機器人仿真參考應用 NVIDIA Isaac Sim 和機器人學習框架 NVIDIA Isa
    的頭像 發(fā)表于 05-28 10:06 ?1994次閱讀

    ros2教程

    電子發(fā)燒友網(wǎng)站提供《ros2教程.pdf》資料免費下載
    發(fā)表于 05-23 09:12 ?1次下載

    【「# ROS 2智能機器人開發(fā)實踐」閱讀體驗】+ROS2應用案例

    的應用。書中詳細介紹了如何在ROS 2中實現(xiàn)二維碼識別,包括二維碼掃描庫Zbar的使用,以及如何通過相機識別二維碼。 通過學習這一部分,我了解到二維碼識別的基本原理和實現(xiàn)步驟。首先,需要通過相機獲取環(huán)境圖像
    發(fā)表于 04-27 11:42

    LabVIEW運動控制(三):EtherCAT運動控制器的高效加工指令自定義封裝

    LabVIEW高效加工指令自定義封裝
    的頭像 發(fā)表于 04-08 13:49 ?3483次閱讀
    LabVIEW運動控制(三):EtherCAT運動控制器的高效加工指令<b class='flag-5'>自定義</b>封裝

    如何添加自定義單板

    在開發(fā)過程中,用戶有時需要創(chuàng)建自定義板配置。本節(jié)將通過一個實例講解用戶如何創(chuàng)建屬于自己的machine,下面以g2l-test.conf為例進行說明。
    的頭像 發(fā)表于 03-12 14:43 ?1283次閱讀

    名單公布!【書籍評測活動NO.58】ROS 2智能機器人開發(fā)實踐

    手機為平臺的移動互聯(lián)網(wǎng)時代,下一個以機器人為核心的智能機器人時代,是否也會遵循這樣的邏輯? 隨著ROS 2的誕生,智能機器人開發(fā)迎來新篇章 ,它不僅為開發(fā)者提供了更為強大、靈活的工具,也為智能機器人
    發(fā)表于 03-03 14:18

    如何快速創(chuàng)建用戶自定義Board和App工程

    概述自HPM_SDKv1.7.0發(fā)布開始,在HPM_ENV中新增了user_template文件夾,以方便用戶快速創(chuàng)建自定義的Board和App工程。user_template是用戶模板工程,用戶
    的頭像 發(fā)表于 02-08 13:38 ?1285次閱讀
    如何快速創(chuàng)建用戶<b class='flag-5'>自定義</b>Board和App工程