2025年1月初,在參加這次比賽之前,我正在看有關南加州野火的新聞。當時,數(shù)十萬人被疏散??吹饺藗兊姆课莺拓敭a(chǎn)被燒毀,而他們卻站在一旁,無助地看著,這是毀滅性的。消防隊員已經(jīng)筋疲力盡,日以繼夜地工作,但大火仍在蔓延,吞噬了它所能到達的每一寸土地。
在想要在消防行業(yè)有所作為的強烈愿望的驅使下,我開始研究野外消防是如何工作的。令我驚訝的是,我了解到,由于長途徒步旅行和崎嶇的地形,大多數(shù)消防員只能使用手動工具。推土機和鏈鋸等重型設備在這些條件下使用有限。這大大減緩了火線的建設,而且依賴空中支援可能要花費數(shù)千到數(shù)百萬美元。據(jù)估計,運營一架747超級油輪每天的成本高達25萬美元!
出于一種緊迫感,我開始考慮設計一種自動地面漫游車,它可以直接幫助消防員,提高他們的態(tài)勢感知能力。最終,盡管這是一項困難而復雜的挑戰(zhàn),但開發(fā)一種能夠自主構建防火線的系統(tǒng)可以顯著降低消防員的生命風險。
1. 研究與開發(fā)(R&D)
2024年,美國面臨6萬多場野火,燒毀了800多萬英畝土地。美國國家航空航天局的數(shù)據(jù)顯示,燒焦的地區(qū)逐年攀升。由于工作人員人手不足,我開始問自己一個簡單的問題:一個小型的便攜式機器人能減輕他們的工作量,讓他們更安全嗎?
當我深入研究野火戰(zhàn)術時,一種方法不斷涌現(xiàn)——建立一條火線。消防員剝去植被,使火焰耗盡燃料,停止蔓延。它是有效的,但它需要重型機械或累人的手工工具。
這引發(fā)了一個想法。如果一個自主機器人可以卷到火場邊緣,發(fā)現(xiàn)熱點,并雕刻出一個迷你火線,甚至可以自己撲滅小火焰,那會怎么樣?
在閱讀農(nóng)民如何在土壤中挖洞的過程中,我意識到同樣的挖掘技巧可以幫助機器人挖出一條狹窄的防火溝,而且只要幾個噴嘴,甚至可以沿著這條路噴灑水或阻燃劑。
2. 認識一下《衛(wèi)報》
“守護者”是我的自動地面漫游車,專為野外工作人員設計。即使在這個早期的原型中,它也可以:
?自動駕駛到GPS航路點,
?用機載視覺發(fā)現(xiàn)一個火源或熱點,然后
?解決火災有兩種方法:一種是劃出一條細細的火線,另一種是用內置的水泵撲滅小的火苗。
探測器的核心是粒子硼404X。多虧了它的5G調制解調器,我可以在手機網(wǎng)絡覆蓋的任何地方查看機器人。粒子云儀表板可以讓我在一個地方觀看遙測、發(fā)送命令和推送無線固件更新。
更好的是,硼的GPIO引腳和片上微控制器讓我可以直接控制馬達、傳感器和泵——不需要額外的電子設備堆棧。
說得夠多了,讓我們深入研究一下構建過程。
我最初計劃從頭開始3d打印整個履帶式底盤。后來,一位朋友給了我一套他不再需要的備用曲目,于是我抓住了它,節(jié)省了幾周的工作。動力傳動系統(tǒng)安裝完畢后,我所要設計的就是一個堅固的3d打印平臺,電子設備和車載電腦可以整齊地固定在上面。(如果你感興趣的話,我之前發(fā)現(xiàn)了一些3D打印的:3D打印機器人坦克底盤,GrabCAD的3D打印坦克底盤)
然后我可以使用PCBWay或其他打印服務來做平臺的3D打印,以容納我的傳感器和電子設備。
底盤準備好了,我跳到有趣的部分,使一切都與粒子硼404X移動。我首先拿了一個舊的Arduino來快速測試每個電機、伺服和水泵;眨眼和旋轉幾下后,我知道線路是可靠的。從那里,將草圖移植到硼幾乎是一個復制和粘貼的工作-編碼風格非常接近Arduino的IDE,轉換需要幾分鐘。
以下是總體流程:
?杰森·奧林——“大腦”。它處理來自攝像頭、GPS和IMU的數(shù)據(jù),找出下一步行動,并將這些命令傳遞給下游。
?粒子硼404X——“手和腳”。它接受Orin的指令,驅動馬達,控制伺服系統(tǒng),啟動水泵。
?5G鏈路——反向通道。當硼忙于運行硬件時,它也通過5g LTE與粒子云保持聯(lián)系,所以我可以在任何地方通過手機服務推動機器人或更新其固件。
簡而言之:奧林認為,硼在行動,而云讓我們保持聯(lián)系。
下面是它的簡要介紹和接線圖:
兩個11.1V的LiPo電池為驅動履帶車輪的電機控制器供電。該系統(tǒng)還提供5V電源,為4通道繼電器、水泵和伺服供電,因為硼只提供3.3V電源。硼通過TX引腳發(fā)送TTL信號到電機控制器來調節(jié)車輪的速度和方向。它還通過數(shù)字引腳(高或低)發(fā)送數(shù)字信號來控制操作水泵和伺服的繼電器通道。
2.1使用粒子控制臺設置云解決方案
硼控制臺是提供的網(wǎng)絡平臺,以監(jiān)測您的粒子設備。
登錄后,您必須設置鏈接您的產(chǎn)品,在我的情況下,硼404x,然后您將獲得一個產(chǎn)品ID鏈接到Visual Studio代碼。以下是登錄后的界面片段,您將看到設備的“健康”和連接情況。它甚至為你提供地理位置。
您還可以執(zhí)行無線代碼更新,以及觸發(fā)專用函數(shù)。這里我創(chuàng)建了兩個函數(shù)Command Movement和Send Waypoint,當被調用時,它將發(fā)送命令邏輯給Guardian上的硼來執(zhí)行任務。
通過智能手機控制臺指揮守護者的現(xiàn)場演示
除此之外,控制臺還內置了其他一些指標,如手機數(shù)據(jù)使用量(每月100 mb免費!)、電池壽命等等。它還帶有webhook集成,我非常興奮將來能在其他項目中使用它。
使用Visual Studio Code中的現(xiàn)有擴展,我們可以快速設置設備并開始在此頁面內開發(fā):
以下是要遵循的一般順序:
登錄并設置設備后,您將將本地項目設備名稱鏈接到控制臺上的相同設備名稱,然后您可以創(chuàng)建項目,該項目將為您提供與Arduino平臺相同的所需庫。(更多安裝說明:Manual setup, Getting Started)
代碼總結:
?云鉤子。兩個粒子函數(shù)——用于快速操縱桿式命令的manualmove()和用于緯度/經(jīng)度的sendWaypoint()——可以讓你從粒子控制臺或杰森的高級規(guī)劃器中戳機器人。
?路標的傳遞。當一個新的航路點到達時,硼會通過它的USB串口向杰森噴射一個很小的JSON數(shù)據(jù)包(^{…}$)。這使得高性能計算機負責全球導航。
?電機控制。Jetson然后回復單字符驅動代碼(如b / l / s),硼的autoMove()將其轉換為serial1 (Sabertooth電機驅動器的封裝串行接口)上的一字節(jié)速度命令,因此不需要在微型上進行PWM時序。
?挖掘和噴灑。一對GPIO線翻轉一個用于挖掘電機的繼電器和另一個用于水泵的繼電器;輔助函數(shù)(shouldDig(), shouldWater())切換它們并強制30秒的安全超時。
?心跳故障保險。如果硼在半秒內沒有聽到驅動角色的聲音,或者在30秒內沒有聽到挖/噴刷新,它就會把所有東西都降到安全的停止狀態(tài)。
到目前為止,你應該已經(jīng)能夠通過粒子控制臺指揮機器人!!
2.2編程杰森·奧林
現(xiàn)在我們已經(jīng)介紹了硼,我們的二號人物,讓我們介紹我們的一號人物:杰森奧林Nano。這個主要的大腦控制著整個機器人,從感知到導航。從今年開始,Orin (Super) Developer Kit的性能升級了一倍,而價格卻降到了原來的一半。
?Jetson Orin上有三個節(jié)點在運行
?攝像頭(Oak-D Pro W),通過ROS 2中間件發(fā)送RGB圖像,用于火災探測
?操縱桿控制器,接收操縱桿輸入,用于手動駕駛守護者和控制水泵,傾斜伺服器
?Guardian導航節(jié)點,接收來自GNSS/IMU的傳感器數(shù)據(jù),通過比較目標航路點來執(zhí)行導航校正
joy_to_serial_node.py
完整的代碼:
guardian_nav_node.py
camera_detect_node.py
3. 讓它自治!
最初,我打算使用Arduino Giga板,因為它已經(jīng)有可用的GPS和IMU庫進行開發(fā)。但是,由于我無法獲得一個,所以我使用了我自己的ESP32并對其進行了修改。
簡而言之,它通過ESP32將實時GNSS和IMU數(shù)據(jù)發(fā)送到我們的主大腦(Jetson Orin Nano),我們將利用它來告訴機器人如何到達指定的航路點。
3.1航路點任務
為了讓機器人明白從當前位置到下一個航路點要走到哪里。它需要知道它目前的位置(當前的緯度和經(jīng)度),以及機器人在地球上的方向(方位角)。
(方位角是一個更具體的絕對方向,而方位可以相對于一個點或一條線)
通過這些測量從GPS/IMU傳感器。我們只要在守護者的當前位置和航路點的位置之間畫一條假想的線。這條線與守護者當前的標題相比較,告訴我們我們需要轉向多少才能面對航點,然后我們只需命令它向前移動,直到我們到達航點位置(當守護者的經(jīng)緯度=航點的經(jīng)緯度)。
您可以從前面發(fā)布的guardian_nav_node.py中引用確切的代碼。
3.2訓練AI探測火災
我最初認為我可以利用北歐nrf9151-DK并運行邊緣脈沖進行視覺分類(檢測邊緣設備上的火),但經(jīng)過進一步研究,似乎邊緣脈沖是通過云運行的,我找不到關于如何實現(xiàn)它的進一步信息。由于時間有限,我決定在Jetson Orin上運行。
通過Jetson Orin上的YOLO11進行目標檢測
利用人工智能的目標是識別煙霧和火災等危險。值得慶幸的是,YOLO和RoboFlow社區(qū)已經(jīng)擁有數(shù)千個數(shù)據(jù)集,我們可以訓練我們的人工智能模型來識別和部署。
YOLO (You Only Look Once)是一系列以速度和準確性著稱的目標檢測模型。它們是單鏡頭探測器,這意味著它們一次處理整個圖像來識別和定位物體。YOLO使用卷積神經(jīng)網(wǎng)絡(CNN)對對象邊界框和類概率進行預測。
Roboflow是一個可視化人工智能工具平臺,它簡化了模型部署并增強了特定用例的性能。我們將利用社區(qū)標記的可用數(shù)據(jù)集。
該數(shù)據(jù)集由帶有火焰和煙霧的圖像組成,并為訓練目的進行了標記。
然后,我們將轉到數(shù)據(jù)集并選擇下載數(shù)據(jù)集。
解壓縮數(shù)據(jù)集,您應該看到數(shù)據(jù)。Yaml和其他testtrainvliad文件夾
配置數(shù)據(jù)Yaml有前3行來硬編碼全局路徑。(您可以通過在該文件夾的終端上運行pwd來找到全局路徑)
到:
然后我們將通過YoLo 11開始訓練
對于我來說,我在速度和準確性之間找到了一些平衡:
4.1遷移到nRF9151-DK
北歐的nRF9151-DK與硼404x相比是一個超級升級。它還包括一個機載GNSS,以及大量的GPIO和核心訪問,使其強大而強大,適用于各種應用。然而,設置它是相當具有挑戰(zhàn)性的。
4.2粒子硼404x與北歐nRF9151-DK
當比較兩種硬件時,硼很容易設置和已經(jīng)可用的arduino風格的開發(fā)。粒子控制臺非常適合在任何我喜歡的地方監(jiān)控設備,所以我總是知道守護者在哪里!
另一方面,nRF9151-DK在開發(fā)方面具有挑戰(zhàn)性,而且現(xiàn)成的功能也少得多,但如果時間允許,它絕對是非常強大的。
本文編譯自hackster.io