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