簡介
本文是AMR ROS2光達搬運機器人的延伸應用分享,延續上一篇完成的ZED深度攝影機設定,利用擷取到的影像在機器人上執行深度學習推論,我們使用Jetson Inference專案結合ROS2,讓機器人在移動時也能夠進行影像辨識、物件偵測等深度學習應用。
如果還沒有閱讀過上一篇文章,以及之前部落格中AMR ROS2搬運機器人系列文章的讀者,可以看看之前的文章,會更容易了解這篇所要分享的內容:
AMR ROS2光達搬運機器人-分段路徑規劃與即時影像串流-使用NVIDIA Orin Nano-連結點這裡
AMR ROS2光達搬運機器人-使用NVIDIA Orin Nano系列文章清單-連結點這裡
攝影/撰寫 | 楊子賢 | 材料表 | RK-AMR ROS2 光達搬運機器人
場地圍牆 筆電電腦 (連入 ROS2 搬運機器人 編寫程式)
|
時間 | 1小時 | ||
難度 | 3(滿分5) |
軟硬體背景
NVIDIA Jetson Orin Nano
StereoLabs ZED 2i
Jetpack 5.1.1
L4T 35.3.1
Ubuntu 20.04 LTS
在ROS2上執行深度學習專案
有了上一篇文章中設定好的影像來源後,就能開始進行有關影像的深度學習推論,這邊使用Jetson Inference的ROS2套件ros_deep_learning,它提供了影像辨識imagenet、物件偵測detectnet以及圖像分割segnet三個不同的推論選項。
Jetson Inference:https://github.com/dusty-nv/jetson-inference
Jetson Inference ROS2套件 – ros_deep_learning:
https://github.com/dusty-nv/ros_deep_learning
ros_deep_learning套件會使用從ZED套件發送的ROS2影像訊息獲得用來辨識的圖像,完成推論後再將結果以ROS2訊息傳送出來,接著就能在Rviz上看到辨識完成的結果。
平時使用Jetson Inference時會直接使用攝影機作為來源,並且直接將結果輸出到外接螢幕上,但在機器人上運行時,因為使用了CUDA與OpenGL,無法傳送辨識完成的畫面至遠端的電腦上,所以使用ROS2訊息作為輸出方式,這樣只要在同一個網域下,使用Rviz就能接收到來自ZED深度攝影機的影像,還有來自Jetson Inference的辨識結果。
在開始操作前,要先開一個新的終端機,把ZED的Docker容器打開,並執行ZED ROS2套件,發送影像到ROS2系統中,記得不要把Rviz的視窗關掉,等一下會用它來看Jetson Inference的辨識結果
跟ZED ROS2套件一樣,首先要將Jetson Inference下載到Orin Nano上,同樣會用到–recursive指令,把關聯的程式也一起下載下來,Jetson Inference的檔案較多,會花一點時間
再來要開啟Jetson Inference的Docker容器,因為作者尚未更新映像檔的名稱,所以要手動指定現在使用的版本,執行之後會自動下載映像檔
在ROS2上執行影像辨識
進到Docker容器內後,就可以執行Jetson Inference的ROS2套件,第一個是影像辨識imagenet,預設使用googlenet模型,第一次執行會下載模型並對模型進行優化,大概需要數分鐘,開始執行後就會輸出辨識的結果
回到前面在ZED容器開啟的Rviz視窗,在左邊的Display區域中找到ROI Mask,把裡面的Topic改成/imagenet/overlay
接著就能在右上角看到Jetson Inference的輸出影像,影像左上角會有辨識的結果,包含代表結果可信度的信心指數百分比,與辨識出來的分類類別
在ROS2上執行物件偵測
第二個是物件偵測detectnet,預設使用ssd-mobilenet-v2模型,第一次執行也會下載模型並對模型進行優化,會花費數分鐘,開始執行後就會輸出偵測的結果
回到前面在ZED容器開啟的Rviz視窗,在左邊的Display區域中找到ROI Mask,把裡面的Topic改成/detectnet/overlay
接著就能在右上角看到Jetson Inference的偵測結果影像,影像中會將辨識到的物體框出,並標示信心指數百分比與辨識出來的分類類別
在ROS2上執行圖像分割
第三個是圖像分割segnet,預設使用fcn-resnet18-cityscapes-1024×512模型,第一次執行也會下載模型並對模型進行優化,會花費數分鐘
回到前面在ZED容器開啟的Rviz視窗,在左邊的Display區域中找到ROI Mask,把裡面的Topic改成/segnet/overlay
接著就能在右上角看到Jetson Inference的推論結果影像,影像中會使用顏色標記區域內的物體種類
這些算是一些基礎的AI人工智慧應用,之後會結合前面提到的各種功能,在ROS2搬運機器人上做出一些更為實際的應用,敬請期待。