今天小編給大家帶來的是來自B-AROL-O團隊帶來的基于樹莓派的四足噴水機器人,該機器人可以在農場環境中自主導航,識別需要澆水的植物并自動澆水,視覺系統采用的是 Luxonis 的 OAK-D-Lite相機,可以在專用硬件上運行計算機視覺算法,從而不會消耗樹莓派控制機器人運動的計算資源。
材料清單
硬件列表:
Mini Pupper 2 機器狗套裝
OAK-D Lite 相機
Raspberry Pi 4 Model B
TL-MR3220 路由器
軟件列表:
Open CV
LearnOpenCV
Roboflow
其他工具
3D打印機
應用場景
我們原計劃使用葡萄園作為我們的測試場地,與我們的名字 FREISA 保持一致。然而,這種選擇帶來了一定的挑戰。首先,藤蔓葉子生長在離地面至少 40 厘米的高度,明顯高于我們計劃使用的狗機器人的預期高度。其次,通常種植葡萄樹的地形,特別是在意大利,往往不平坦,給機器人帶來導航困難。
考慮到所有因素,我們選擇了一個更“可控”的環境——一個種有番茄植物的家庭花園。盡管如此,這一決定并不排除繼續我們的項目的可能性,并可能在未來將我們的MiniPupper引入葡萄園!
FREISA 是什么?
該項目的目標是創建一個利用計算機視覺給植物澆水的狗機器人原型。
四足平臺
在選擇MiniPupper 2之前, 我們探索了機器人系統的各種其他選項。選擇MiniPupper 2機器人也是出于我們團隊中一名成員對MiniPupper項目的熟悉程度以及開源社區對該項目的興趣。
攝像頭系統
我們在實現中使用的相機是 Luxonis 的 OAK-D-Lite,它允許我們在專用硬件上運行計算機視覺管道,而不會消耗控制機器人運動的 Raspberry Pi 的資源。這需要考慮到 MiniPupper 2 和 3D 打印定制支架支撐的額外重量開銷。按照這種方法,機器人可以獨立于任何外部基礎設施,例如用于執行“更重”任務的專用計算機。
我們考慮的唯一另一種選擇是 Raspicam V2,但這需要我們在 Raspberry Pi CPU 上運行推理,從而導致計算開銷和整體系統速度變慢。
噴水和瞄準系統
討論較多的方面之一是灑水器的位置及其機制。我們最終將灑水器放置在骨盆位置,儲水器正上方,因為所有其他替代方案在重量分布或物理設計方面都存在問題。
導航系統
我們決定開發一種FSM來控制機器人的運動。這種方法非常適合與提供推理結果的相機一起工作,并允許我們定義相機觀察特定目標時的狀態變化。
另一種選擇是集成用于機器人導航的ROS2 SLAM工具箱,這需要在集成應用程序的不同部分方面進行額外的工作。
FREISA 系統架構
FREISA 作為不同的軟件和硬件組件進行通信。在對整體體系結構進行詳細說明后,本節將討論所有這些組件。
該架構已使用Eclipse Capella準備的SysML圖進行記錄。
下圖顯示了系統的主要參與者:
導航系統(OS)
迷你 Pupper 2
視覺系統(OAK-D-Lite)
灑水器
各設備實體之間的連接
在此圖中,顯示了操作實體之間的不同互連:Mini Pupper 必須有一個在本地 Raspberry Pi 4 上運行的導航系統,以便在競技場周圍移動并識別目標,一個視覺系統(通過 USB 連接的攝像頭)來查看不同的目標,以及一個通過 Raspberry Pi 的 GPIO 控制的機械噴水器, 給需要它的目標澆水。
? ?
系統需要執行的活動如下:
目標識別(通過計算機視覺)
檢查數據
配置
識別目標的位置(解釋CV結果)
對外溝通
噴水(決定激活灑水器)
噴頭控制(驅動)
機器狗的運動控制
邏輯架構
如上所述,我們在項目中使用了 Raspberry Pi、Docker 和不同的 OAK-D-Lite 相機。以下是系統的一般邏輯體系結構,以及它必須執行的功能:
檢查數據:外部用戶可以查看HTTP服務器和其他部分代碼的結果,以檢查系統是否正常工作。
配置:代碼可以由外部用戶配置,使其適應不同種類的植物。
小狗的運動控制:運動控制對于確保木偶的良好工作非常重要。
識別目標:通過視覺和導航系統,小狗必須在競技場上走動,并識別他需要照顧的植物。
識別目標的位置:一旦發現目標,它必須識別目標的位置,以便更有效地澆水。
噴頭的控制:如果植物被識別為“有需要”,小狗將移動噴頭噴水。
噴水:通過灑水,如果他注意到目標需要,它會澆水。
外部通信:通過藍牙或 Wi-Fi 或 Raspberry Pi 上可用的任何其他無線通信協議,小狗可以通知其主人植物已被稀釋。
物理架構
下圖詳細介紹了 FREISA 項目的主要物理組件。
迷你Pupper
FREISA團隊認為,四足腿平臺非常適合各種非結構化的戶外應用,因為它能夠在復雜的地形中導航。下表列出了移動平臺的優勢和劣勢。
四足平臺的最小電機數量(旨在作為自由度 – DoF)為 8 DoF,以實現四足運動。至少需要 12 個自由度才能實現完整的四足運動,從而允許在身體上實現橫滾軸以及各種側向運動。
簡單的四足機器人有一個簡單的開環控制器,可以設置電機的角度。這種控制器總是有腿在移動,障礙物清除和運動精度很差。
動態閉環控制器非常復雜,因為它需要釋放腿式平臺的障礙清除能力,能夠感覺到不同表面的打滑、跌落和干擾,并做出相應的補償。
對于這個項目,我們堅持使用開環控制器,但我們正在探索在MiniPupper中集成適當的閉環控制器的方法。
與其他平臺相比,這種復雜性阻礙了四足機器人的使用,目前正在機器人領域探索許多軍事、工業和開源四足設計。
對于這個項目的范圍,我們有一系列的要求:
負擔成本(< 500 美元)
開源
12 自由度
帶反饋的高品質伺服電機
樹莓派
ROS2的
至少 10 分鐘的電池續航時間
足夠的有效載荷間隙來安裝附件
我們的一位團隊成員對使用常規 PPM 開環電機的 MiniPupper 平臺的第一個版本有經驗,第二個版本將電機升級為具有位置反饋的數字版本。
平臺的選擇
MiniPupper 2 附帶一個 Ubuntu (22.04) 映像和一個基于 UDP 的編排器,該映像用于為本次比賽范圍構建應用程序。MiniPupper 2 還有一個 ROS2 映像,作者計劃將其用于未來的應用。
市場上有更便宜的四足平臺,但據我們所知,它們通過削減自由度、伺服質量、反饋或移除板載 SBC 來實現其價格點。
按照組裝說明 https://www.youtube.com/watch?v=-TDyncSvzI8
仔細映射具有正確 ID 的電機,并確保它們處于空檔位置。500Kb UART鏈路,來自FeeTech的SCS(智能控制伺服)協議。
通過 USB-C 端口通過 SSH 串口 115200 波特連接到 ESP32。通過 WiFi 對 ESP32 固件進行 OTA 更新。ESP 現在列出了所有 12 個伺服器。
MiniPupper的完成組裝
校準和測試
執行校準工具,目標是使電機接近其中立位置,并使 Mini Pupper 與地形平行。請記住按住箭頭鍵以移動電機,因為這是一個小而精確的運動。如果電機太接近極端,請拆下支腿,將電機置于中立位置并重新安裝支腿。
在以下語言中執行測試程序:/demos
display
haptic_demo:拉動右前腿應該讓其他腿做相反的動作。它告訴您校準正常,電機 ID 正常
按照說明安裝 Web 控制器。
轉到,您應該會看到通過 UDP 命令控制機器人的 MiniPupper Web 控制器。http://IP_ADDRESS:8080
激活控制器和電機。在“跳舞”頁面中設置機器人的高度。現在,步行頁面中的滑塊應該可以工作了。檢查MiniPupper的步行步態。
迷你Pupper成年體
簡而言之,FREISA 狗與 MiniPupper 的區別有兩件事:第一是視力強
安裝 OAK-D-Lite
為了添加 OAK-D-Lite 相機,我們 3D 打印了一個定制的支撐支架。
需要使用適當長度的高帶寬、直角 USB-A 轉 USB-C 數據線將相機連接到樹莓派 4。
相機需要大量帶寬,因此低質量的電纜可能無法工作。
freisa-sprinker的設計
FREISA 團隊感謝Gianfranco Poncini,他是 freisa 噴頭機械設計背后的思想家。
所有必需部件的 STL 文件以及有關如何將部件組合在一起的一些說明可在 https://github.com/B-AROL-O/FREISA 下找到。
添加噴水滅火軸
我們的應用需要一個額外的軸來控制噴頭。有許多選項可以添加更多軸:
在 ESP32 上使用 PPM 通道:需要 ESP32 的固件升級和其他命令
向 GPIO 添加一個 PPM 通道:可能的路由,GPIO 上有有限的可用 IO,限制了 PPM 控制的質量
在伺服總線上增加第 13 個通道:不可能,通道的帶寬需要用于伺服的位置、位置反饋和扭矩反饋
為GPIO的第13通道添加新的SCS伺服總線:最佳解決方案,Pupper具有映射到GPIO的串行端口,并且易于訪問/dev/ttyAMA1
我們在RPi GPIO上創建了一個額外的伺服總線,作為最具前瞻性的選擇。它可以輕松向平臺添加多個附加軸,而無需額外的工作。
中的測試程序允許通過僅實現設置位置命令來測試第 13 軸,以便于使用。/demos
3D打印和噴水滅火裝置
我們對設計進行了幾次迭代,這需要改進伺服電機的支撐和活塞 O-RIng 的密封性。
3D打印后,使用烙鐵將螺母和滾珠軸承嵌入塑料中,然后更換原來的背板。
為軟件開發做好準備
MiniPupper 2 基礎組件、基礎軟件和自定義硬件擴展已完成并經過測試。接下來是 Vision 和 Demo 軟件組件的開發。
計算機視覺
本節介紹了應用程序的“視覺”部分,該部分為機器人提供了有關其周圍環境的信息。
該應用組件控制 OAK-D-Lite 相機,可以在該相機上部署預先訓練的計算機視覺模型(基于深度神經網絡)來定位目標植物并分析葉子的狀況。
計算機視覺模型
該組件的基礎是兩個神經網絡,允許定位植物(執行樹干分割),并檢測葉子并將其分類為健康或不健康。這兩個模型都基于YOLOv8架構,并在我們上傳到Roboflow的自定義數據集上進行了訓練。
番茄樹干分割
番茄葉健康檢測
訓練模型
可以在 Roboflow 的服務器上進行模型訓練。然而,我們選擇在本地訓練我們的神經網絡,因為免費的 Roboflow 計劃只提供有限數量的“積分”,用于在我們自己的計算機上訓練和試驗深度學習框架。
我們的設置包括一臺運行 Ubuntu 23.04(AMD Ryzen 2600X CPU、48 GB RAM 和 NVidia GTX 1660 super GPU)的臺式計算機,使用顯卡通過帶有 JupyterLab 的容器進行遠程訪問。
借助 Roboflow API,導出數據集非常容易,并且可以輕松地在遠程硬件上進行訓練。
這兩個神經網絡分別經過了 200 個時期的訓練,最終模型已被保存以備后用 OAK-D-Lite 相機使用。
OAK-D-Lite 模塊
一旦神經網絡經過訓練,就必須將它們部署到OAK-D-Lite相機上。
本節介紹執行這些操作的軟件。源代碼在 GitHub 上公開提供,網址為https://github.com/B-AROL-O/FREISA/tree/main/code
視覺控制器
第一個軟件是,這是一個 Python 類,用于通過提供加載模型、啟動管道和收集結果的方法來控制相機。這些操作是使用 Luxonis 的 DepthAI 庫執行的,該庫允許定義管道,通過這些管道使用自定義神經網絡處理來自 OAK-D-Lite 中攝像機的信息,最重要的是,通過 USB 連接以直接的方式檢索這些信息。VisionController
要供 OAK-D-Lite 相機使用,需要將模型從 YOLOv8 轉換為 ,以及一個包含實例化視覺管道所需的設置信息的 JSON 文件。此步驟是使用 Luxonis 提供的轉換工具執行的。.blob
VisionWeb服務器
為了提供對這些方法的訪問,我們實現了一個 HTTP 服務器,該服務器提供標準 (REST) API 來通過端口 9090 控制相機。這樣,其他應用程序組件只需執行 HTTP 請求即可在相機上執行操作。VisionController
Docker容器
REST API 定義的另一個重要優點是 OAK-D-Lite 模塊可以作為 Docker 容器獨立于其他組件運行。
事實上,我們還提供了定義映像(基于映像)的 Dockerfile,該映像可用于將整個模塊作為容器運行,前提是它可以訪問 USB 總線以便能夠與相機通信。python:3.10-bullseye
可能的后續行動
由于我們的可用時間有限,我們不得不在選擇上做出妥協。然而,該項目的開源性質允許外部貢獻者進行大量增強。
最初要解決的主要挑戰是選擇一個替代設置,稱為“競技場”來放置機器人。
計算機視覺模塊的設計使相機能夠利用正確格式化的模型在各種目標上發揮作用。這種能力擴展了機器人在處理各種類型植物方面的多功能性。
選擇不同競技場的困難主要與潛在的地形條件有關。這個問題可以通過實現一個更復雜的框架來控制機器人的運動來解決,例如ROS Nav2(SLAM),或者通過將網格導航與Move Base Flex結合使用。這些框架還可以提供其他好處,例如環境映射。
提高應用程序性能的另一種途徑是利用 OAK-D-Lite 的立體攝像頭來估計目標的距離。這些數據可用于為運動控制系統提供更精確的指令,從而實現更快、更準確的操作。
審核編輯:湯梓紅
-
機器人
+關注
關注
211文章
28379瀏覽量
206914 -
計算機
+關注
關注
19文章
7488瀏覽量
87849 -
樹莓派
+關注
關注
116文章
1706瀏覽量
105607
原文標題:創客項目秀|基于樹莓派的四足滅火機器人
文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創客空間】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論