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