OriginBot智能機器人開源套件| 26.小車踢足球
操作環(huán)境及軟硬件配置如下:
OriginBot機器人(視覺版/導航版)
PC:Ubuntu (≥20.04) + ROS2 (≥Foxy)
應用介紹
在世界杯的足球賽場上,大家見識到了球員們馳騁在足球場上的種種場面。不知道大家會不會也幻想有一天機器人也能真正的上足球賽場進行一場驚心動魄的較量呢?接下來就讓我們來以 OriginBot 為例,開發(fā)一項踢足球的新功能吧!
首先有兩個必須的要素,一個是足球,另一個是球門。小車實現(xiàn)踢足球項目則可以通過識別足球和球門,讓小車運球前往球門即可。這里我們就總結出了這個項目的三要素,識別足球、小車運球、小車射門。
硬件配置
場景說明
在 OriginBot 的應用代碼中,我們已經(jīng)為大家訓練好了一套識別足球的模型。足球大小為直徑4cm。效果如下。

如果大家身邊也有類似的環(huán)境,即可直接進行部署環(huán)節(jié),測試一下深度學習的物體識別跟蹤效果。
硬件說明
為了實現(xiàn)更好的一個踢球的效果,我們將攝像頭拉到最低,同時我們給OriginBot小車增添了一個幫助我們更好的運球
此鏈接(https://pan.baidu.com/s/1wGVY3VhiqjIHO8ooZ8KTnQ?pwd=gyh1)可以將夾爪的3D模型下載下來,如果可以的話,大家可以將夾爪通過3D打印的方式打印出來,安裝如下:

當然了,如果不方便3D打印,同樣可以用身邊的東西制作一個。這里我們采用了硬紙版,如下圖所示:

運行方法
啟動足球識別和運球功能
首先將 OriginBot 放置到相近似的場景中。接下來啟動功能。
啟動機器人
SSH連接OriginBot成功后,在終端中輸入如下指令,啟動機器人底盤和相機:
運行后,即可看到機器人開始追蹤足球了。
射門
在射門前需要做一些準備工作,此處我們沒有去識別球門,那么如何去射門呢?Navigation!所以需要我們先建立一張地圖,在地圖上明確球門的位置。
啟動導航節(jié)點,設置起點(小車當前位置)和終點(球門位置)同時啟動運球節(jié)點,小車即可前往球門位置。
效果展示
射門:

運球:

YoLov5 訓練足球識別模型
1. 模型選擇
此處我們選擇的是大家常用的YOLOv5算法。此處我們簡單介紹一下它的工作原理。
用官方的話來講,YOLOv5實現(xiàn)了一種叫做單階段目標檢測的方法,它可以在一次前向傳播過程中完成物體檢測、識別和定位的任務,那么它具體是如何實現(xiàn)的呢?
首先,YOLOv5采用了一種稱為自適應非極大值抑制(A-NMS)的算法,它可以通過動態(tài)調(diào)整非極大值抑制的閾值來提高檢測精度。
然后,YOLOv5使用了一種叫做深度可分卷積神經(jīng)網(wǎng)絡(DCNN)的模型來提取圖像特征,并使用多個不同大小的卷積核來進行特征提取,以便捕捉多尺度的目標。
最后,YOLOv5使用了一種叫做多尺度預測的方法,它可以對不同大小的目標進行單獨的檢測,并且通過對比不同尺度的預測結果來提高檢測精度。
清楚這些,才能幫助我們更好的去寫代碼,做算法解析。
2. 準備模型訓練環(huán)境
這里提供兩種方式供大家選擇。
PC端訓練模型
PC 端訓練即可按照正常步驟進行。
云端訓練模型
此處模型訓練為了方便大家,我們選用了云端訓練模型,避免因為顯卡的原因訓練耗時過長。云服務器我們選用的是谷歌的 Colab。
選擇 My Drive 文件夾,點擊New新建一個文件夾,并取名為 play_football.

然后右擊選擇 Google Colaboratory。
點擊修改,可以更改筆記本運行卡為 GPU 。

此外,大家可以嘗試使用一些指令查看相應的參數(shù)。
將 google drive 掛載進云電腦。
下載Yolov5算法包
接下來就可以按照訓練Yolov5的流程正常進行了。
額外補充:
(1)在環(huán)境使用上,colab默認下載最新的 pytorch 版本,但是2.0版本使用的版本不能過高,推薦大家使用此版本。
(2)不論使用云端還是PC端,在網(wǎng)絡架構上,為了匹配旭日x3派的使用,需要將網(wǎng)絡架構(yolo.py)改成如下:
(3)模型導出,需要將 ONNX opset 改成 10 或者 11;torch.onnx.export 部分的默認輸入名稱參數(shù)由 'images'改為 'data';parser.add_argument 改為672x672即可。
3. AI 工具鏈轉換
此處可參見視覺巡線部分,使用2.2.3a版本工具鏈。接下來,給大家介紹一些核心要點。
首先大家需要配置好ai工具鏈的環(huán)境,此處可以參見地平線資源中心。
配置環(huán)境后,可以看到在此目錄下有關于 YOLOV5 相關的一些轉換工具。
在這個目錄下,大家可以同視覺巡線般,依次執(zhí)行如下命令。
此時大家會發(fā)現(xiàn)有一個報錯,此處需要大家對執(zhí)行文件做一個更改,首先到04_inference.sh更改圖片路徑,其次需要更改postprocess.py內(nèi)容,更改如下:
此時會生成一張demo圖片,驗證我們模型的效果。

4. 板端部署
將編譯生成的定點模型play_football.bin,拷貝到OriginBot端playfootball_node功能包下的config文件夾中,替換原有的模型,并且重新編譯工作空間。
5. 控制方式
在運球示例中,我們采用的方式和巡線是類似的,追蹤球并且跟運球,執(zhí)行方式如下:
而在射球過程中,則使用到了導航的方式使得機器向目標點運行。
值得一提的是,不同的機器可能會存在不同的差異,需要大家做一些在運動控制參數(shù)上的微調(diào)。