機器人技術正在采用深度學習技術來精確導航室內環境,檢測并跟蹤感興趣的物體,以及在沒有碰撞的情況下進行移動。然而,深度學習的復雜性日益增加,使得在嵌入式系統上適應這些工作負載具有挑戰性。雖然您可以在精度和深度學習模型大小之間進行權衡,但在大多數機器人應用程序中,為了滿足實時需求而犧牲精度通常會適得其反。
易于使用和部署使得NVIDIAJetson平臺成為開發人員、研究人員和制造商制造和部署機器人(如JetBot、MuSHR和MITRaceCar)的合理選擇。在這篇文章中,我們在Jetson上提出了用于分類、目標檢測和人體姿勢估計的深度學習模型。我們還提供了一個ROS2節點,用于在部署中監控Jetson的各種資源和操作參數。ros2提供了輕量級實現,因為它消除了網橋節點的依賴性,并在嵌入式系統中提供了各種優勢。
我們利用現有的NVIDIA框架進行深度學習模型部署,如TensorRT,以提高模型推理性能。我們還集成了NVIDIADeepStreamSDK和ROS2,以便您可以執行流聚合和批處理,并部署各種AI模型用于分類和對象檢測,包括ResNet18、MobileNetV1/V2、SSD、YOLO、FasterRCNN。此外,我們還為世界各地的開發者基于Jetson的流行項目(如trt_pose和jetson_stats)實現ros2節點。最后,我們為上面提到的每個應用程序提供了一個GitHub存儲庫,包括ros2節點和Docker文件,這樣您就可以輕松地在Jetson平臺上部署節點。有關每個項目的詳細信息,請參閱以下部分。
用于人體姿態估計的ROS2節點
ros2_trt_pose包是基于trt_pose實現的,它可以在Jetson平臺上進行姿態估計。存儲庫使用resnet18和densenet121為姿勢估計提供了兩個經過訓練的模型。為了了解人體姿勢,預訓練模型根據COCO數據集的類別推斷出17個身體部位。
圖1ros2\utrt_pose軟件包的描述和輸出。
以下是ros2_trt_posepackage的主要功能:
發布pose_msgs,如countofperson和person_id。對于每個person_id,它發布17個身體部位。
提供啟動文件以便于Rviz2上的使用和可視化:
圖像消息
視覺標記:body_joints,body_skeleton
包含基于Jetson的Docker映像,便于安裝和使用。
PyTorch和TensorRT的ROS2包
圖2。ros2trt_分類和trt_檢測節點的包描述。
使用PyTorch有兩個用于分類和檢測的包,每個包都實現了相應的TRT版本。這四個軟件包是使用ros2的機器人專家開始使用PyTorch進行深度學習的良好起點。
TensorRT已經在torch2trt的幫助下集成到包中,以加速推斷。它生成一個運行時引擎,該引擎根據網絡架構和部署設備進行優化。
這些軟件包的主要特點如下:
國內分揀機器人分揀機器人涉及領域對于分類,您可以從各種ImageNet預訓練模型中進行選擇,包括Resnet18、AlexNet、squezenet和Resnet50。
對于檢測,目前支持基于MobileNetV1的SSD,在COCO數據集上進行訓練。
相對于直接在GPU上執行推理的PyTorch模型,TRT包在執行推理方面提供了顯著的加速。
推理結果以視覺圖形的形式公布。
在運行該節點時,還將顯示一個窗口,其中可視化了推理結果。
提供了基于Jetson的Docker映像和啟動文件,以便于使用。
用于DeepStreamSDK的ROS2節點
圖3ROS2DeepStream發布服務器節點的包說明。
DeepStreamSDK提供了一個完整的流分析工具包,用于使用多傳感器處理、視頻和圖像理解構建端到端基于人工智能的解決方案。它支持流行的對象檢測和分割模型,如最先進的SSD、YOLO、FasterRCNN和MaskRCNN。
NVIDIA根據DeepStreamPythonApps項目提供執行兩個推理任務的ROS2節點,如下所示:
快遞分揀機器人目標檢測:檢測到四類對象:Vehicle、Person、RoadSign和TwoWheeler。
屬性分類:車輛類的對象有三種類型的屬性:Color、Make和Type。
這些發布服務器節點從攝像機或文件接收單個或多個視頻流作為輸入。它們執行推理,并將檢測和分類的結果發布到不同的主題。我們還提供了訂閱這些主題并以vision_msgs格式顯示結果的ros2訂戶節點示例。每個推理任務還生成一個可視化窗口,在檢測到的對象周圍有邊界框和標簽。附加的推理任務和定制模型可以與本項目中提供的DeepStream軟件架構集成。
vision_msgsClassification2D格式的示例分類輸出:
[vision_(id=’silver’,score=0.14),vision_(id=’toyota’,score=0.33),vision_(id=’sedan’,score=0.75)]
ROS2Jetson統計
ros2_jetson_stats包是一個社區構建包,用于監視和控制您的Jetson設備。它可以在您的終端上運行,并提供一個Python包,以便于在Python腳本中集成。利用ros2_jetson_stats庫,構建ROS2診斷消息和服務。
ros2_jetson_stats軟件包具有以下ROS2診斷消息:
GPU/CPU使用百分比
EMC/交換/內存狀態
SoC的功率和溫度
分揀機器人介紹現在您可以通過ROS2命令行控制以下內容:
(EZX29和Speed:
電源型號
jetson_clocks
您還可以提供一個參數來設置讀取診斷消息的頻率。
有關詳細信息,請參閱NVIDIA-AI-IOT/ros2_jetson_statsGitHubrepo。
物流分揀機器人公司分揀機器人設備用于Jetson的ROS2容器
為了在Jetson上輕松運行ROS2的不同版本,NVIDIA發布了各種dockerfile,并為ROS2Eloquent和Foxy構建了腳本,此外還有ROSMelodic和Noetic。這些容器提供了在Jetson上安裝ROS或ROS2并構建自己的基于ROS的應用程序的自動化和可靠的方法。
因為Elocquent和Melodic已經為Ubuntu18。04提供了預構建的包,所以這些版本的ROS被Dockerfiles安裝到容器中。另一方面,Foxy和Noetic是從容器內部的源代碼構建的,因為這些版本都是為ubuntu20。04預構建的。對于容器,使用這些版本的ROS或ROS2是相同的,不管底層的OS發行版如何。
要構建容器,請在運行Jetpack4。4或更新版本的Jetson設備上克隆repo,然后啟動ROS構建腳本:
此命令創建具有以下標記的容器:
ros:
ros:
ros:
ros:
例如,要啟動ROS2Foxy容器,請運行以下命令:
$sudodockerrun–runtimenvidia-it–rm–networkhostros:
除了Jetson設備上的其他硬件加速器,使用–runtimenvidia標志會自動啟用容器中的GPU直通。要在容器中傳輸MIPICSI攝影機,請包含以下標志:
–volume/tmp/argus_socket:/tmp/argus_socket
要在容器中傳輸V4L2USB攝像頭,請在啟動容器時安裝所需的/dev/video*設備:
–device/dev/video0
NVIDIAOmniverseISAAC面向ROS開發者的仿真平臺
在OmniverseNVIDIA平臺上構建的NVIDIAISAAC模擬仿真工具包比現有的機器人工作流程帶來了一些有用的改進:
它利用了Omniverse高度精確的物理模擬和逼真的光線跟蹤圖形,直接與業界領先的物理框架集成,如用于剛體動力學的NVIDIAPhysXSDK。
它重新關注互操作性、與NVIDIAISAACSDK的深度集成以及ROS的擴展。
它很容易擴展。通過其基于Python的腳本接口,它允許您適應自己獨特的用例。
它是為可部署而構建的,其體系結構支持本地工作站上的工作流,并通過云與NVIDIANGC一起工作。
AmeyKulkarni是NVIDIA的開發技術工程師,專注于將深度學習解決方案有效地部署到邊緣。在2019年加入NVIDIA之前,他完成了馬里蘭大學計算機工程博士學位。他的研究興趣是在嵌入式平臺上部署數字信號處理、計算機視覺和深度學習系統。
RishabhChadha是NVIDIA的嵌入式工程實習生——AI,他專注于為NVIDIAJetson平臺集成深度學習和機器人技術框架。他將于2021年畢業于伍斯特理工學院,獲得機器人學碩士學位。他的興趣主要包括深度學習、醫學成像和機器人感知。
AsawareeBhide是NVIDIA的AI嵌入式工程實習生,致力于優化和部署邊緣設備上的深度學習模型。她目前正在喬治亞理工學院攻讀計算機科學碩士學位,她對解決由具體代理自主導航的復雜感知任務感興趣。TomaszLewicki是NVIDIA的嵌入式工程實習生。他擁有圣何塞州立大學計算機工程碩士學位,華沙工業大學華沙工業大學機器人工程學學士學位。他的興趣集中在計算機視覺和機器人應用的深度學習上。
審核
物流分揀機器人方案廣州分揀機器人價格多少分揀機器人展示交易