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