資料介紹
描述
抽象的
Air Strategist Companion 是一個由四旋翼無人機、Web 服務(wù)器和 Android 應(yīng)用程序組成的系統(tǒng),旨在提高森林消防人員的態(tài)勢感知能力。該系統(tǒng)實時跟蹤火點和消防人員,并在在線地圖上顯示他們的位置,該地圖可以通過網(wǎng)絡(luò)瀏覽器和安卓應(yīng)用程序訪問。無人機飛越火區(qū),并使用帶有計算機視覺的紅外攝像機識別火點。它選擇視野中最大的三個,以自主地遵循由它們組成的模式。如果火災(zāi)模式改變了形狀、大小或位置,無人機將跟蹤它并在沒有人工干預(yù)的情況下重新定位。它還可以單獨跟蹤圖案中的每個火點。每隔幾秒,無人機將要在地圖上繪制的檢測到的火點的多邊形近似值以及從其頂視圖拍攝的相機照片上傳到網(wǎng)絡(luò)服務(wù)器。它還上傳自己的 GPS 坐標(biāo)、地速和全球/相對高度;笛卡爾坐標(biāo)和每個火點的計算表面積和主要火災(zāi)模式,以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個控制面板,可以從中選擇多達七種無人機的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時的預(yù)報天氣數(shù)據(jù)。以及從其頂視圖拍攝的相機照片。它還上傳自己的 GPS 坐標(biāo)、地速和全球/相對高度;笛卡爾坐標(biāo)和每個火點的計算表面積和主要火災(zāi)模式,以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個控制面板,可以從中選擇多達七種無人機的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時的預(yù)報天氣數(shù)據(jù)。以及從其頂視圖拍攝的相機照片。它還上傳自己的 GPS 坐標(biāo)、地速和全球/相對高度;笛卡爾坐標(biāo)和每個火點的計算表面積和主要火災(zāi)模式,以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個控制面板,可以從中選擇多達七種無人機的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時的預(yù)報天氣數(shù)據(jù)。以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個控制面板,可以從中選擇多達七種無人機的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時的預(yù)報天氣數(shù)據(jù)。以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個控制面板,可以從中選擇多達七種無人機的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時的預(yù)報天氣數(shù)據(jù)。
定制開發(fā)的 Android 應(yīng)用程序旨在安裝在消防隊員的移動設(shè)備中。該應(yīng)用程序跟蹤設(shè)備的 GPS 坐標(biāo)并將其上傳到 Web 服務(wù)器。系統(tǒng)檢測到的所有機組人員的位置通過在線地圖上的標(biāo)記進行可視化,以及他們的姓名、ID 代碼、GPS 坐標(biāo)和當(dāng)前狀態(tài)。該應(yīng)用程序在 GUI 中有一個“SOS 按鈕”,機組成員可以在他們認(rèn)為有必要的任何時候按下以向服務(wù)器發(fā)送“幫助”信號。可以從網(wǎng)絡(luò)瀏覽器訪問包含地圖的網(wǎng)頁,并且還顯示在 Android 應(yīng)用程序的 GUI 中。雖然這個原型使用紅外攝像機來識別火點,但系統(tǒng)可以升級為使用熱成像攝像機,只需極少的改動,以獲得更強大的火災(zāi)探測系統(tǒng)。
框圖、硬件和功能描述
![poYBAGNxJO-AWnFtAARR5t0kk1E256.jpg](https://file.elecfans.com/web2/M00/7A/40/poYBAGNxJO-AWnFtAARR5t0kk1E256.jpg)
圖 1 顯示了系統(tǒng)的主要功能組件。用于原型的無人機是 NXP 的 RDDRONE-FMUK66 HoverGames 四旋翼飛行器,帶有 NXP RDDRONE-FMUK66 飛行管理單元 (FMU)。它配備了 Raspberry Pi 3 B+ 作為配套計算機和 Raspberry Pi NoIR V2.0 紅外攝像頭。為該原型選擇了紅外 (IR) 攝像頭,因為火災(zāi)通常會發(fā)出紅外輻射,可用于通過檢測紅外光而不是可見顏色來檢測火災(zāi),理論上即使在煙霧或灰塵后面也能檢測到火點(假設(shè)相機能夠檢測給定燃燒類型發(fā)射的特定紅外輻射波段)。
配套電腦自帶獨立電源,可在無人機關(guān)機換電池時保持運行。一個基于 OpenCV 的程序在其中運行,以訪問攝像機的視頻源并檢測火點。攝像機安裝在四旋翼的框架下方,向下指向地面。一旦檢測到火點,算法就會選擇三個最大的火點,并計算每個火點的幾何近似多邊形,以及它們在局部笛卡爾坐標(biāo)中的對應(yīng)位置以及它們對應(yīng)的表面積。它還計算主火圖案幾何中心或質(zhì)心的局部笛卡爾坐標(biāo)。每隔幾秒鐘,還會從當(dāng)前無人機的位置拍攝火區(qū)的頂視圖,
![pYYBAGNxJPSAFsyiAAYRkmzr4yo141.jpg](https://file.elecfans.com/web2/M00/7A/CF/pYYBAGNxJPSAFsyiAAYRkmzr4yo141.jpg)
![poYBAGNxJPmAS3JRAAigapiu6CI284.jpg](https://file.elecfans.com/web2/M00/7A/40/poYBAGNxJPmAS3JRAAigapiu6CI284.jpg)
配套計算機通過 MAVLink 協(xié)議通過串行端口連接從飛行控制器接收無人機遙測數(shù)據(jù)(當(dāng)前 GPS 坐標(biāo)、全球和相對高度、地速等)。這些數(shù)據(jù)以及來自計算機視覺系統(tǒng)的火災(zāi)跟蹤數(shù)據(jù)通過 HTTP 協(xié)議發(fā)送到 Web 服務(wù)器。配套計算機使用機器人操作系統(tǒng) (ROS) 中間件“粘合”其所有軟件組件:傳感器接口、計算機視覺、自主飛行、與服務(wù)器的 HTTP 通信以及與無人機飛行控制器的 MAVLink 接口。兩個用 Python 編寫的 ROS 節(jié)點和兩個用 C++ 編寫的節(jié)點負責(zé)所有必需的任務(wù)。出于“概念驗證”的目的,無人機依靠 WiFi 連接向服務(wù)器上傳/下載所有數(shù)據(jù),但它可以通過 GPRS 蜂窩調(diào)制解調(diào)器輕松升級,以便在相對偏遠的地區(qū)運行。圖 2 顯示了完整的無人機構(gòu)建,圖 3 顯示了完整的系統(tǒng),包括指揮中心計算機和幾個移動設(shè)備。圖 4 顯示了安裝在四軸飛行器底盤上的配套計算機,以及攝像頭和溫度傳感器。圖 5 顯示了連接圖,包括與飛控的接口。
![pYYBAGNxJP2AepsHAAW20wZClL4104.jpg](https://file.elecfans.com/web2/M00/7A/CF/pYYBAGNxJP2AepsHAAW20wZClL4104.jpg)
![poYBAGNxJQCAdXeEAAJoVQIHT2Q015.jpg](https://file.elecfans.com/web2/M00/7A/40/poYBAGNxJQCAdXeEAAJoVQIHT2Q015.jpg)
在從無人機和機組成員的移動設(shè)備接收到所有上述數(shù)據(jù)后,服務(wù)器將執(zhí)行額外的計算和數(shù)據(jù)轉(zhuǎn)換,以準(zhǔn)備提供上述網(wǎng)頁(見圖 6)。網(wǎng)頁中的所有信息每隔幾秒就會自動刷新一次。
![pYYBAGNxJQOAc-xMAAHoovNLJ2o053.jpg](https://file.elecfans.com/web2/M00/7A/CF/pYYBAGNxJQOAc-xMAAHoovNLJ2o053.jpg)
如前所述,已經(jīng)為消防人員開發(fā)了一個定制的 Android 應(yīng)用程序(參見圖 7)。該應(yīng)用程序從機組成員的移動設(shè)備中讀取 GPS 坐標(biāo),并將這些數(shù)據(jù)連同他的姓名、身份 (ID) 代碼和當(dāng)前狀態(tài)一起發(fā)送到網(wǎng)絡(luò)服務(wù)器。它還在其 GUI 中顯示來自網(wǎng)絡(luò)服務(wù)器的地圖,并有一個“SOS 按鈕”,消防員可以在認(rèn)為必要的任何時間向服務(wù)器發(fā)送 SOS 信號。它還有一個“開始位置跟蹤”按鈕來啟動設(shè)備的 GPS 位置跟蹤和一個“停止位置跟蹤”按鈕來停止它,以及一些用于監(jiān)控輔助數(shù)據(jù)的額外文本視圖。
![pYYBAGNxJQWAU5l8AAMQKcyxmn8643.jpg](https://file.elecfans.com/web2/M00/7A/CF/pYYBAGNxJQWAU5l8AAMQKcyxmn8643.jpg)
在指揮中心,負責(zé)人員可以監(jiān)控系統(tǒng)提供的所有信息,同時控制無人機的自主跟蹤任務(wù)模式,所有這些都來自同一個網(wǎng)頁。可以從世界任何地方通過 Internet 連接訪問該網(wǎng)頁(因此系統(tǒng)應(yīng)該授予訪問權(quán)限,但這在此原型中被忽略了)。現(xiàn)場行動開始時,指揮中心的工作人員必須將無人機部署在火區(qū)周圍;然后,他們必須激活無人機的“自主火力追蹤模式”,讓它完成任務(wù)。無人機被編程為在沒有人為干預(yù)的情況下跟蹤火點和機組人員。從網(wǎng)頁(以及 Android 應(yīng)用程序)可以命令它并將其置于七種不同的跟蹤模式:
- 追蹤火紋:追蹤主火紋的質(zhì)心。
- 跟蹤火點 1:跟蹤檢測到的最大火點。
- 跟蹤火點 2:跟蹤第二個火點的大小。
- Track Fire Spot 3:跟蹤第三個火點的大小。
- 跟蹤所有火點:在巡邏模式下跟蹤所有三個火點,一個接一個,在每個火點暫停,然后再移動到下一個。
- Track Crew Member:跟蹤給定的消防人員,該成員也是從網(wǎng)頁中選擇的。
- 跟蹤所有船員:在巡邏模式下跟蹤所有船員,一個接一個,在移動到下一個之前在每個船員中暫停。
無論火災(zāi)向哪個方向前進或撤退,無人機都會根據(jù)從其視覺傳感器獲取的數(shù)據(jù),通過將自身重新定位在主要火災(zāi)區(qū)域上來自主跟蹤火點。一旦電池耗盡,無人機將返回起飛位置并著陸以更換電池,而無需關(guān)閉配套計算機,之后可以再次重新部署。
在無線電控制 (RC) 發(fā)射器的幫助下,指揮中心始終可以重新獲得對無人機的手動控制,并再次將其切換到自主跟蹤模式。此外,通過使用 PX4 自動駕駛儀的軟件生態(tài)系統(tǒng),無人機的完整遙測數(shù)據(jù)可通過使用地面站軟件(例如 QGroundControl)在指揮中心計算機上獲得,該軟件通過遙測模塊永久連接到無人機。地面站軟件還顯示了無人機當(dāng)前位置及其描述的軌跡以及無數(shù)遙測數(shù)據(jù)的地圖,如果需要,還可用于在手動控制和自主模式之間切換。因為該系統(tǒng)基于 ROS、實時視頻源、原始火災(zāi)跟蹤數(shù)據(jù)、消防人員的數(shù)據(jù)和來自飛行控制器的遙測數(shù)據(jù)也可以通過默認(rèn)的 ROS 工具從任何安裝了 ROS 的 Linux 計算機上實時訪問。例如,來自相機圖像處理算法的所有視頻輸入都可以作為 ROS 主題實時獲得。
配套電腦軟件
Raspberry Pi 配套計算機運行安裝了 ROS Kinetic 的 Ubuntu MATE 16.04。以下 ROS 節(jié)點負責(zé)所有必需的任務(wù):
'opencv_node':用 Python 編寫,負責(zé)訪問 Raspberry Pi NoIR 攝像頭的實時視頻源,并運行火災(zāi)檢測算法以找到火點。隨時可用的“raspicam_node”ROS 節(jié)點(請參閱參考資料部分)用于訪問攝像機的視頻源。該節(jié)點與攝像機對話,以獲取視頻流并將其發(fā)布到“opencv_node”訂閱的“/raspicam_node/image/compressed”視頻主題。在檢測到火點后,配套計算機計算構(gòu)成主要火災(zāi)模式的三個最大火點的幾何近似多邊形。然后它將每個多邊形的定義頂點作為 JSON 字符串發(fā)布到“/fire_polygons_json”主題;以及每個火點的面積,到“/fire_polygons_area_json”主題。'/fire_pattern/pose_point' 主題中也提供了火災(zāi)模式質(zhì)心的局部笛卡爾坐標(biāo)。它還發(fā)布了“/fire_tracking_image/compressed”主題,該主題帶有攝像機的原始視頻圖像,檢測到的火點和近似多邊形疊加。從同樣的視頻內(nèi)容中,該節(jié)點每隔幾秒就會在配套計算機的文件系統(tǒng)中保存一個圖片幀,然后將其發(fā)送到服務(wù)器以顯示在網(wǎng)頁上(參見圖 6)。該節(jié)點還發(fā)布包含相機幀當(dāng)前寬度和高度的“/modified_image/size”主題,該主題也必須上傳到服務(wù)器,以便從像素單位計算轉(zhuǎn)換系數(shù),其中表示長度和面積在相機圖像中,到米,
已經(jīng)實施了“運行平均低通濾波器”來過濾火災(zāi)模式質(zhì)心坐標(biāo),以過濾火災(zāi)檢測過程中固有的高頻噪聲。
'mlx90614_sensor_node':C++編寫,負責(zé)讀取MLX9014紅外溫度傳感器的溫度【參考mlx90614教程】。它發(fā)布包含溫度讀數(shù)的“/mlx90614/temp”主題。
'http_client_node' :用 Python 編寫,訂閱前面兩個節(jié)點發(fā)布的所有上述主題,以及一些 MAVROS 主題。例如,它將訂閱“/mavros/global_position/global”主題,從中獲取無人機當(dāng)前的緯度/經(jīng)度坐標(biāo),以及全球海拔高度。它還將訂閱“/mavros/global_position/rel_alt”,從中獲取無人機相對于地面的當(dāng)前相對高度;最后,到“/mavros/vfr_hud”主題,它將從中獲取無人機的地面速度。然后,該節(jié)點將分四步繼續(xù)與服務(wù)器交換數(shù)據(jù):
- 它將來自上述所有主題的數(shù)據(jù)累積到一個 XML 文件中,并通過 HTTP POST 請求將其發(fā)送到 Web 服務(wù)器。
- 通過發(fā)出額外的 POST 請求,它還將發(fā)送火災(zāi)攝像機鏡頭,之前由“opencv_node”存儲在配套計算機的文件系統(tǒng)中。
- 通過發(fā)送 GET 請求,它將從 Web 服務(wù)器下載用戶從網(wǎng)頁發(fā)出的無人機當(dāng)前任務(wù)模式命令。
- 通過發(fā)送另一個 GET 請求,它將從 Web 服務(wù)器下載消防員數(shù)據(jù),其中主要包含系統(tǒng)檢測到的每個船員的姓名、ID 和 GPS 坐標(biāo)。
這些數(shù)據(jù)每三秒在無人機和網(wǎng)絡(luò)服務(wù)器之間交換一次。該節(jié)點接收到來自 web 服務(wù)器的數(shù)據(jù)后,會發(fā)布以下 ROS 主題:
- '/drone_commands/task_mode_cmd' :包含從網(wǎng)頁發(fā)出的當(dāng)前無人機任務(wù)模式命令。以下選項可用:TRACK_PATTERN、TRACK_FIRE_SPOT_1、TRACK_FIRE_SPOT_2、TRACK_FIRE_SPOT_3、TRACK_ALL_SPOTS、TRACK_CREW_MEMBER、TRACK_ALL_CREW_MEMBERS);
- '/drone_commands/fighter_crew_list' :包含每個機組成員的 GPS 坐標(biāo)列表。
- '/drone_commands/sel_crew_member_idx' :包含無人機必須跟蹤的當(dāng)前選定機組成員的索引。
'mavros_offboard_node':無人機通過使用MAVROS(這是MAVLink和ROS之間的橋梁)與同伴計算機接口,該節(jié)點負責(zé)通過發(fā)布到MAVROS主題來控制無人機的自主飛行能力,MAVLink命令將從派生并交付給無人機。該節(jié)點使用 C++ 編寫,訂閱以下主題:
- '/mavros/local_position/pose' : 獲取無人機的局部笛卡爾坐標(biāo)
- '/fire_pattern/pose_point' : 獲取火焰圖案的質(zhì)心局部坐標(biāo)。
- '/fire_pattern/fire_spot1_pose_point', '/fire_pattern/fire_spot2_pose_point'和'/fire_pattern/fire_spot3_pose_point' : 獲取三個主要火點的局部笛卡爾坐標(biāo)。
- '/drone_commands/task_mode_cmd ':獲取當(dāng)前從網(wǎng)頁下發(fā)的任務(wù)模式命令。
- '/drone_commands/sel_crew_member_idx ':獲取無人機必須跟蹤的當(dāng)前選定機組成員的索引(對于 TRACK_CREW_MEMBER 任務(wù)命令選項)。
- '/drone_commands/fighter_crew_list' :獲取系統(tǒng)檢測到的所有機組成員的GPS坐標(biāo)列表。
該節(jié)點使用 PX4 “offboard” 飛行模式來控制無人機的位置,每次無人機的跟蹤目標(biāo)發(fā)生變化時,都會將新的位置坐標(biāo)發(fā)布到 'mavros/setpoint_position/local' 主題。
安卓應(yīng)用
Android 應(yīng)用程序是使用 Android Studio IDE 在 Java 中開發(fā)的。GUI(參見圖 7)由六個對象組成:
- 一個“webView”對象,用于顯示由 Web 服務(wù)器生成的地圖。
- 一個'開始位置。Tracking”按鈕,啟動設(shè)備的 GPS 位置監(jiān)控。
- 一個'停止位置。跟蹤”按鈕,停止它。
- 一個“開始 SOS”按鈕,用于向服務(wù)器發(fā)送“幫助”信號。
- 一個“textView”,顯示 HTTP POST 請求的結(jié)果,由應(yīng)用程序發(fā)送到 Web 服務(wù)器以上傳機組成員的數(shù)據(jù)。
- 第二個“textView”顯示移動設(shè)備的當(dāng)前 GPS 坐標(biāo)。
應(yīng)用程序中有一個時間觸發(fā)功能,負責(zé)收集 GPS 數(shù)據(jù)和當(dāng)前狀態(tài)(是否按下 SOS 按鈕),并每隔幾秒通過 HTTP POST 將數(shù)據(jù)發(fā)送到 Web 服務(wù)器。
網(wǎng)絡(luò)服務(wù)器應(yīng)用程序
網(wǎng)絡(luò)服務(wù)器有一個帶有 Javascript 代碼的主網(wǎng)頁,以及一組 PHP 腳本,負責(zé)接收來自無人機和機組成員移動設(shè)備的數(shù)據(jù);以及從主網(wǎng)頁的控制面板發(fā)出的無人機任務(wù)命令。讓我們看看每個腳本的作用:
'receive_telemetry_xml.php' :此腳本從配套計算機接收 XML 遙測文件,其中包含以下數(shù)據(jù):
- 無人機的 GPS 坐標(biāo)、全球/相對高度和地面速度。
- 局部笛卡爾坐標(biāo)中每個火點的近似多邊形頂點及其對應(yīng)的表面積,均以像素為單位。
- 火焰圖案的質(zhì)心笛卡爾坐標(biāo),以像素為單位。
- 相機圖像幀的寬度和高度,也以像素為單位。
- 在無人機當(dāng)前位置測量的地面溫度,以攝氏度為單位。
收到 XML 文件后,腳本會繼續(xù)將其副本保存在服務(wù)器的本地文件系統(tǒng)中。由于 XML 字符串的副本仍在 RAM 內(nèi)存中,它會繼續(xù)將所有接收到的距離和區(qū)域(以“相機像素”單位)轉(zhuǎn)換為米。為此,它將計算“$pixel_to_meters”轉(zhuǎn)換因子以將所有測量值從像素單位轉(zhuǎn)換為米。圖 8 顯示了如何通過使用無人機相對于地面的相對高度、相機的視場角、相機圖像大小和勾股定理來計算轉(zhuǎn)換因子。預(yù)先做出一些假設(shè)以保持計算簡單。接下來,借助這個轉(zhuǎn)換因子,火焰多邊形頂點和火焰圖案質(zhì)心的笛卡爾坐標(biāo)從以像素為單位的局部笛卡爾坐標(biāo)轉(zhuǎn)換為極坐標(biāo),距離以米為單位,角度以弧度為單位。然后,將這些極坐標(biāo)轉(zhuǎn)換為全球經(jīng)緯度坐標(biāo)[參考 PHP 距離方位到 GPS]。
![poYBAGNxJQiAVhr_AAFGIvoyWn4589.jpg](https://file.elecfans.com/web2/M00/7A/40/poYBAGNxJQiAVhr_AAFGIvoyWn4589.jpg)
然后,該腳本將用新轉(zhuǎn)換的 GPS 坐標(biāo)替換 XML 字符串中的所有原始本地坐標(biāo),并將 XML 字符串作為名為“drone_telemetry_conv.xml”的新副本再次存儲在服務(wù)器的本地文件系統(tǒng)中。該網(wǎng)頁將使用新轉(zhuǎn)換的 GPS 坐標(biāo)來可視化地圖中的火災(zāi)多邊形。
'receive_image.php' : 該腳本負責(zé)接收消防攝像機鏡頭,之前由同伴計算機中的'opencv_node'保存;然后將顯示在網(wǎng)頁上并每隔幾秒鐘刷新一次。
'receive_fighter_data.php' :負責(zé)處理來自機組成員移動設(shè)備中 Android 應(yīng)用程序的 HTTP POST 請求。該腳本以一組 [key:value] 對的形式接收消防員數(shù)據(jù),其中包含以下可用鍵:“unix_time”、“name”、“id_code”、“l(fā)atitude”、“l(fā)ongitude”和“status”。特別是“狀態(tài)”鍵攜帶有關(guān)應(yīng)用程序中的“SOS 按鈕”是否被按下的信息。'unix_time' 是獲得的 GPS 坐標(biāo)和其余鍵的時間戳,我認(rèn)為是不言自明的。該腳本將接收來自所有正在執(zhí)行任務(wù)的消防員的數(shù)據(jù),該應(yīng)用程序當(dāng)前在他們的移動設(shè)備上運行。然后它將數(shù)據(jù)存儲在服務(wù)器本地文件系統(tǒng)中的單個文本文件中,
'dump_fighter_data_xml.php' :該腳本應(yīng)主網(wǎng)頁('index.html')的請求,將每個消防員的可用數(shù)據(jù)轉(zhuǎn)儲為 XML 字符串;網(wǎng)頁每隔幾秒異步請求一次,以在網(wǎng)頁上可視化機組成員的信息。
“ receive_drone_task_cmd.php ”:負責(zé)從網(wǎng)頁接收無人機任務(wù)命令,并將其存儲在“drone_commands.xml”文件中。該文件由配套計算機中的“http_client_node”請求,以控制無人機的自主跟蹤任務(wù)。
'index.html' : 是主網(wǎng)頁,運行 Javascript 代碼與 Google Maps API、OpenWeatherMap API 和我們自己的網(wǎng)絡(luò)服務(wù)器進行交互,以實現(xiàn)以下任務(wù):
- 從網(wǎng)絡(luò)服務(wù)器讀取無人機提供的所有數(shù)據(jù),并與 Google Maps API 接口以繪制地圖、火災(zāi)多邊形和代表無人機位置的所有地圖標(biāo)記、火災(zāi)模式的質(zhì)心位置以及所有消防人員的位置。
- 從網(wǎng)頁的控制面板讀取用戶發(fā)出的無人機任務(wù)命令,并將這些數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)服務(wù)器。
- 與 OpenWeatherMap API 交互,請求當(dāng)前天氣和預(yù)報天氣數(shù)據(jù);然后顯示在網(wǎng)頁底部(參見圖 9 和圖 10)。
![pYYBAGNxJQyAbPULAAKm5-5FSEM864.jpg](https://file.elecfans.com/web2/M00/7A/CF/pYYBAGNxJQyAbPULAAKm5-5FSEM864.jpg)
![poYBAGNxJQ-AIvEXAAQAxUoBWB8710.jpg](https://file.elecfans.com/web2/M00/7A/40/poYBAGNxJQ-AIvEXAAQAxUoBWB8710.jpg)
Ajax 技術(shù)用于異步刷新上述所有動態(tài)數(shù)據(jù),而無需重新加載頁面。要訪問 Google Maps API 和 OpenWeatherMap API,必須在網(wǎng)頁的源代碼中配置相應(yīng)的 API 密鑰才能訪問這兩種服務(wù)。
地圖上顯示的數(shù)據(jù)
除了前面描述的在網(wǎng)頁中可視化的對象之外,還有由地圖上的點擊事件觸發(fā)的其他數(shù)據(jù)。圖 11 顯示了它們。例如,當(dāng)單擊代表無人機當(dāng)前位置的地圖標(biāo)記時,會出現(xiàn)一個信息窗口,顯示無人機的相對高度、地速、GPS 坐標(biāo)以及在其當(dāng)前位置測量的地面溫度。單擊代表火災(zāi)模式中心的地圖標(biāo)記時,類似的信息窗口會顯示火災(zāi)覆蓋的總面積(以平方米為單位)和中心的 GPS 坐標(biāo)。通過單擊三個火災(zāi)多邊形中的任何一個,相應(yīng)的信息窗口將顯示所選火點的覆蓋面積(以平方米為單位)以及發(fā)出鼠標(biāo)單擊的確切點的 GPS 坐標(biāo)。最后一項功能有助于輕松獲取任何被火覆蓋的點的 GPS 坐標(biāo),可用于規(guī)劃工作策略。最后,當(dāng)單擊任何代表機組成員的標(biāo)記時,會顯示消防員的姓名、狀態(tài)(是否按下 SOS 按鈕)、ID 代碼和 GPS 坐標(biāo)。此外,當(dāng)戰(zhàn)斗機狀態(tài)為“正?!睍r,其對應(yīng)的標(biāo)記圖標(biāo)顯示為綠色,當(dāng)狀態(tài)變?yōu)椤皫椭睍r(按下 SOS 按鈕后),標(biāo)記圖標(biāo)變?yōu)榧t色。
![poYBAGNxJReAOseBAAU8U3Oh4SU144.png](https://file.elecfans.com/web2/M00/7A/40/poYBAGNxJReAOseBAAU8U3Oh4SU144.png)
發(fā)展
與控制無人機相關(guān)的代碼是使用模擬開發(fā)的。我使用了 PX4 Gazebo 'Software in The Loop' (SITL) 模擬器,在安裝了 ROS melodic 的 Ubuntu 18.04 PC 上運行。
該系統(tǒng)在模擬中進行了廣泛的測試并且表現(xiàn)非常好。遺憾的是,直到該項目的最終提交日期,沒有足夠的時間來測試該系統(tǒng)與真正的無人機飛行,但它已準(zhǔn)備好進行現(xiàn)場測試,這將在不久的將來進行。
如何讓系統(tǒng)運行
- 按照 NXP HoverGames 官方無人機構(gòu)建說明 ( https://nxp.gitbook.io/HoverGames/userguide/getting-started)構(gòu)建您的無人機。必須為無人機配置以下飛行模式:“Position”,用于安全起飛,“Offboard”用于啟用自主模式,“Return”用于將無人機返回到起飛位置,特別是嘗試在緊急情況下或電池耗盡時恢復(fù)無人機。“終止開關(guān)”還必須配置為在發(fā)生任何不可恢復(fù)或嚴(yán)重緊急情況時切斷電機電源。
- 下載適用于 Raspberry Pi 的 Ubuntu MATE 16.04 映像并將其刻錄在微型 SD 卡(至少 16GB)上,安裝所有軟件并進行“rpi_configuration.md”文件中描述的所有配置,該文件可在項目的代碼存儲庫中找到。
- 將 ROS 工作區(qū)文件夾“airstrategist_ws”從存儲庫復(fù)制到“/home/pi”覆盆子目錄并編譯工作區(qū)。如果您是 ROS 新手,請查看參考資料部分以獲取基本 ROS 教程的鏈接。
- 打開 '/home/pi/airstrategist_ws/src/opencv_tracking/scripts' 文件夾中的 'http_client_node.py' 文件并更改對我服務(wù)器根目錄的所有引用 ('http://tec.bo/airstrategist/...' )為您的,以便將 HTTP POST 請求發(fā)送到您自己的服務(wù)器。
- 通過安裝 HTTP 服務(wù)器軟件和 PHP,或使用商業(yè) Web 托管服務(wù),在局域網(wǎng)中配置您自己的 Web 服務(wù)器。不需要數(shù)據(jù)庫軟件。
- 將存儲庫中“WebServer”文件夾中的“airstrategist”文件夾上傳到本地或 Web 托管服務(wù)器的根目錄。
- 進行圖 5 所示的連接,并將 Raspberry Pi 配套計算機及其移動電源安裝在無人機框架中,如圖 4a 和圖 4b 所示。
- 在您的開發(fā) PC 中安裝 Android Studio,打開 Android 應(yīng)用程序項目,然后在“MainActivity.java”文件中,更改對我服務(wù)器根目錄的所有引用(“http://tec.bo/airstrategist/...' )給你的。編譯并上傳應(yīng)用程序到一部或多部手機。該應(yīng)用程序使用三星 Galaxy Note 8 SM-N950F 設(shè)備進行了測試。為其他設(shè)備型號編譯應(yīng)用程序可能需要更改目標(biāo) Android API 和其他附加配置。
- 啟動無人機,但不要武裝它。
- 通過將 Raspberry Pi 連接到其移動電源來啟動它。它使用 2 節(jié)鋰離子 18650 電池“移動電源”,因此無人機可以在無需關(guān)閉配套計算機的情況下更換電池。
-
至少在兩個單獨的終端窗口中從您的 PC 中打開到 Raspberry Pi 的 SSH 連接。在第一個窗口中運行 MAVROS 'px4.launch' 啟動文件;此文件運行 ROS 服務(wù)器并實例化 MAVROS 節(jié)點以通過 ROS 消息與無人機的飛行控制器進行通信。在第二個終端窗口中運行“hovergames_drone.launch”文件;此文件運行為項目編寫的所有 ROS 節(jié)點。運行此代碼后,Web 服務(wù)器將開始接收所有數(shù)據(jù),主網(wǎng)頁將位于“http://
/airstrategist/”; 可以通過任何網(wǎng)絡(luò)瀏覽器訪問。我用 Chrome 和 Firefox 測試了頁面沒有問題。查看上面的視頻演示,了解有關(guān)在模擬中熱運行它的說明。 - 在移動設(shè)備中打開 Android 應(yīng)用程序。該應(yīng)用程序?qū)@示包含該地圖的同一網(wǎng)頁。單擊“開始位置”。跟蹤”按鈕開始將您的移動設(shè)備的 GPS 坐標(biāo)和其他數(shù)據(jù)發(fā)送到服務(wù)器。幾秒鐘后,您的位置將作為綠色標(biāo)記出現(xiàn)在地圖上。
- 將遙測模塊連接到您的 PC 并打開 QGroundControl 以連接無人機。
- 武裝無人機并以“位置”飛行模式起飛到方便的高度進行測試。對于測試,跟蹤高度固定為 10 米,文件中的“OFFBOARD_FLYING_ALTITUDE”常量來更改此高度。為安全起見,除非您知道自己在做什么,否則請勿在海拔超過 15 米的地方使用真正的無人機測試系統(tǒng)。
- 一旦無人機到達所需高度,通過遙控發(fā)射器或地面控制軟件將無人機的飛行模式更改為“離機”,進行自主飛行,無人機將開始跟蹤選定的目標(biāo);再次更改為“位置”模式以脫離自主飛行并重新獲得手動控制。
- 使用遙控器手動降落無人機,或?qū)w行模式更改為“返回”,無人機將返回起飛點。
警告:建議使用適當(dāng)?shù)脑隽繙y試/調(diào)試策略,從第一個到最后一個分別仔細測試所有描述的步驟,以確保所有軟件和硬件正常工作;在沒有適當(dāng)測試的情況下在真正的無人機上運行系統(tǒng)可能非常危險。您可以使用“testing_in_simulation.md”文件中詳述的工作流程在模擬中首先測試系統(tǒng)。
結(jié)論和未來的改進
該系統(tǒng)在仿真中表現(xiàn)得非常好。還需要用真正的四軸飛行器進行廣泛的現(xiàn)場測試。計算機視覺火災(zāi)追蹤效果很好;雖然火災(zāi)檢測算法容易出現(xiàn)誤報,因為相機還可以檢測來自其他來源的紅外光。當(dāng)然,普通的紅外熱像儀并不是探測火災(zāi)的最佳方式。然而,它非常適合構(gòu)建這個“概念驗證”原型的目的。HoverGames 無人機硬件成本低廉且相對實惠。無人機本身經(jīng)過了廣泛的測試(盡管沒有足夠的時間與系統(tǒng)的其余部分進行測試)并且性能非常好。它對開發(fā)非常有用;然而,在某些情況下,對硬件進行一些升級是可取的,甚至是必要的。Raspberry Pi 3 B+ 配套計算機很好地管理了所有計算任務(wù)。有必要安裝散熱器和冷卻風(fēng)扇。在沒有散熱風(fēng)扇的情況下,處理器溫度輕松升高到 60+°C;隨著冷卻風(fēng)扇的出現(xiàn),溫度降至 48°C 左右。
我希望將來對系統(tǒng)進行的一些改進如下:
- 用合適的熱像儀升級系統(tǒng)會很棒;火災(zāi)識別代碼所需的更改將是最小的。
- 可以添加一個 GPRS 調(diào)制解調(diào)器,也許還可以添加一個備用 LoraWAN 連接,這樣它就可以在偏遠地區(qū)工作。
- 使無人機不時自動改變高度和方向,以獲得額外的地面視角。
- 使用測得的地面溫度來調(diào)整無人機的高度。眾所周知,熱量會降低空氣密度,從而降低升力(空氣動力)。如果空氣太熱,無人機應(yīng)該爬升到更高的高度以提高升力并使用更少的電池電量,從而保持飛行自主權(quán)。
- 實現(xiàn)無人機在火區(qū)上空的自動起飛和重新定位會很棒,尤其是在更換電池之后。無人機起飛后會進行相機平移,以檢測火區(qū)。然后飛過它繼續(xù)跟蹤任務(wù)。
- 使用機器學(xué)習(xí)和人工智能實施在線數(shù)據(jù)庫來存儲歷史數(shù)據(jù)以供進一步分析。
?
- 國際形勢突變,中國芯片公司 能否“風(fēng)景這邊獨好” 1次下載
- 為NXP Hovergames3開發(fā)的AutoSQA項目文章
- 帶有AppSheet的IoT健康伴侶應(yīng)用
- 機器人伴侶掛件
- 輕松DIY伴侶機器人構(gòu)建
- 紙板伴侶機器人開源分享
- HoverGames 2特別獎得主
- 微芯片PIC18F87J10家庭數(shù)據(jù)表 2次下載
- 基于航跡數(shù)據(jù)的空中交通管制自動化系統(tǒng) 7次下載
- 2.4GHz RFID空中接口協(xié)議的詳細資料說明 13次下載
- 空中下載在移動互聯(lián)網(wǎng)中的應(yīng)用 19次下載
- THD鋰電池伴侶(單節(jié)型)
- U盤伴侶 EasyUDisk讀寫U盤模塊
- TDMA空中接口技術(shù) 0次下載
- 工程驗收小伴侶1.2
- 用光子連接懸浮在真空中的納米粒子,并控制它們之間的相互作用 542次閱讀
- T900數(shù)傳模塊的空中速率和串口速率如何配置 1703次閱讀
- 基于OFDM技術(shù)的LTE空中接口物理層的研究 1973次閱讀
- 大型組織如何使用數(shù)據(jù)和分析來指導(dǎo)戰(zhàn)略和運營決策? 4019次閱讀
- ZETAOTA提供遠程升級服務(wù) 提高實用性 744次閱讀
- dfrobot 空中飛鼠鍵盤介紹 2860次閱讀
- 手機信號放大器是什么 6025次閱讀
- 如何實現(xiàn)空中喚醒LoRa和如何通過CAD來實現(xiàn)LoRa的資料概述 7630次閱讀
- 百度、阿里、騰訊、華為四家巨頭的自動駕駛發(fā)展戰(zhàn)略分析 9214次閱讀
- 夜空中最明亮的星!自制星光瓶全教程 1w次閱讀
- 智能汽車發(fā)展戰(zhàn)略起草工作啟動 3772次閱讀
- 總結(jié)谷歌、微軟和亞馬遜三家巨頭公司的戰(zhàn)略和戰(zhàn)術(shù) 7706次閱讀
- 無線網(wǎng)絡(luò)AI戰(zhàn)略應(yīng)該包含的六大技術(shù)要素解析 5659次閱讀
- 空中鼠標(biāo)原理及問題 8217次閱讀
- 藍牙4.0 超低功耗藍牙空中鼠標(biāo)解決方案 2953次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論