該項目旨在創(chuàng)建一個開放的,制造商友好的機器人平臺,提供實時的,完全在設(shè)備上的手部檢測和跟蹤,所有這些都完全由邊緣計算驅(qū)動。它在設(shè)備內(nèi)置的神經(jīng)處理單元上運行Edge Impulse優(yōu)化的YOLO-Pro對象檢測模型,以極低的功耗提供超過60 FPS的低延遲推理。ROS 2作為實時編排主干,清晰地分離感知、控制和驅(qū)動節(jié)點,這使得系統(tǒng)在手勢識別、遠程操作或協(xié)作機器人等應(yīng)用程序中具有高度可擴展性。
硬件
我們使用的是帶有高通Dragonwing QCM6490 SoC的Rubik Pi 3。Dragonwing QCM6490采用八核高通Kryo CPU,高通Adreno 643 GPU和高通Hexagon 770 DSP,其中包含能夠提供12 TOPS的AI加速器。
為了驅(qū)動,機器人使用由SparkFun servo pHAT驅(qū)動的伺服電機,通過I2C連接為多個伺服器提供方便的控制。
對于平移和傾斜運動,機器人使用兩個DFRobot DSS-P05標(biāo)準(zhǔn)伺服電機:一個專用于平移,另一個專用于傾斜。
泛傾斜機構(gòu)是建立使用DFRobot泛傾斜支架容易和堅固的組裝。
我們將使用Elecom 500萬像素的網(wǎng)絡(luò)攝像頭。
我們3d打印了一個安裝支架,將機器人牢固地固定在底板上,確保機器人運動穩(wěn)定安全。
完全組裝的系統(tǒng)如下所示。
設(shè)置《魯比克Pi 3》
完成后,通過WiFi對設(shè)備的SSH訪問應(yīng)該完全啟用并可操作。
ROS 2爵士樂安裝
按照下面的說明安裝必要的軟件包。
設(shè)置語言環(huán)境
設(shè)置ROS 2 Apt存儲庫
安裝開發(fā)工具
安裝ROS 2基礎(chǔ)包
由于我們將在無頭模式下使用Rubik Pi 3,因此運行以下命令來安裝裸機ROS 2基本包,而不使用任何GUI工具。
URDF
一個精確的統(tǒng)一機器人描述格式(URDF)對于保證相機、平移和傾斜幀之間精確可靠的坐標(biāo)轉(zhuǎn)換至關(guān)重要。
機器人模型可以在RViz2中使用Joint State Publisher gui進行可視化和手動驗證。啟動腳本可以在代碼一節(jié)中引用的GitHub存儲庫中獲得。
數(shù)據(jù)采集
我們需要在Edge Impulse工作室注冊一個賬戶然后創(chuàng)建一個新項目。
運行以下命令并按照屏幕上的說明將設(shè)備連接到Edge Impulse Studio進行數(shù)據(jù)收集。
我們捕獲了357張不同距離和照明設(shè)置的圖像,并使用Edge Impulse Studio的數(shù)據(jù)采集頁面中的標(biāo)簽隊列標(biāo)簽來標(biāo)記它們。
脈沖設(shè)計
對于模型開發(fā),我們需要創(chuàng)建一個脈沖,一個集成圖像處理和機器學(xué)習(xí)模型的定制管道。導(dǎo)航到“脈沖設(shè)計>創(chuàng)建脈沖”頁面,選擇“添加處理塊”,并選擇“圖像”對圖像數(shù)據(jù)進行預(yù)處理和歸一化。在同一頁面中選擇“添加學(xué)習(xí)塊”,選擇“目標(biāo)檢測(圖像)”。我們使用224x224的圖像大小。然后,單擊Save Impulse按鈕。
特征提取
接下來,進入脈沖>圖像頁面,設(shè)置顏色深度參數(shù)為RGB。
點擊Save parameters按鈕,重定向到另一個頁面,我們應(yīng)該點擊Generate Feature按鈕。
模型訓(xùn)練
要訓(xùn)練模型,請導(dǎo)航到Impulse > ObjectDetection頁面。我們選擇的對象檢測設(shè)置如下所示。
我們在高級訓(xùn)練設(shè)置中選擇了基本的空間和色彩空間增強。
我們選擇了最新的YOLO-Pro型號,它非常適合檢測由于與相機距離不同而產(chǎn)生的不同大小的手,并且能夠在高通人工智能加速器上高效運行。點擊Save & train按鈕開始訓(xùn)練。
訓(xùn)練結(jié)束后,訓(xùn)練效果如下圖所示。量化(int8)模型對訓(xùn)練數(shù)據(jù)的精度得分為94.4%。
模型試驗
要評估模型在測試數(shù)據(jù)集上的性能,導(dǎo)航到模型測試頁面并單擊“分類所有”按鈕。該模型在未見過的數(shù)據(jù)集上顯示出更高的性能,準(zhǔn)確率達到97.1%。
生活分類
我們可以在Impulse > Live分類頁面中測試模型推理。
模型部署
由于模型將使用Qualcomm AI Accelerator在Rubik Pi 3上運行推理,因此我們在部署頁面上選擇了Linux (AARCH64 with Qualcomm QNN)選項。
為模型優(yōu)化選擇Quantized (int8)選項,因為高通AI加速器與float32模型不兼容。
點擊Build按鈕編譯并下載EIM(邊緣脈沖模型)二進制文件。
應(yīng)用程序開發(fā)
應(yīng)用程序構(gòu)建為分布式ROS 2節(jié)點,遵循關(guān)注點分離原則。它從相機捕獲圖像,處理它們,通過PID控制檢測和跟蹤手。結(jié)果通過HTTP流傳輸以進行實時監(jiān)控。這種模塊化的設(shè)計保證了任務(wù)的清晰劃分,提高了效率和可維護性。每個節(jié)點處理一個特定的功能,從圖像捕獲到平移傾斜驅(qū)動,同時無縫集成以實現(xiàn)應(yīng)用程序的目標(biāo)。
Edge Impulse Linux SDK for Python
我們利用Edge Impulse Linux SDK進行設(shè)備上模型推斷,可以通過運行下面列出的命令來安裝。
高通AI運行時
Qualcomm AI運行時及其所需的依賴關(guān)系可以通過運行下面的命令來安裝。
下面是object_detection節(jié)點的代碼。
下面是hand_tracker節(jié)點的代碼。
我們采用ros2_control框架提供實時控制,并與機器人的硬件無縫接口。
這是控制器管理器配置文件。
下面是硬件接口代碼。硬件接口是用c++編寫的,以確保低延遲性能和最高效率。
啟動應(yīng)用程序
執(zhí)行以下命令設(shè)置ROS 2工作空間環(huán)境。
下面是啟動文件腳本。
執(zhí)行以下命令啟動應(yīng)用程序。
結(jié)論
該項目成功地證明,復(fù)雜的實時手部跟蹤可以在低成本的開源硬件上實現(xiàn),而不依賴于云服務(wù)或高功率gpu,為機器人領(lǐng)域的無障礙邊緣人工智能設(shè)定了新的基準(zhǔn)。通過將優(yōu)化后的YOLO-Pro模型、ROS 2模塊化和高效的傾斜伺服相結(jié)合,該平臺為資源受限環(huán)境下響應(yīng)式人機交互提供了堅實的基礎(chǔ)。
本文編譯自hackster.io





