電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>HoverGames:空中戰(zhàn)略家伴侶

HoverGames:空中戰(zhàn)略家伴侶

2022-11-14 | zip | 0.17 MB | 次下載 | 免費(fèi)

資料介紹

描述

抽象的

Air Strategist Companion 是一個(gè)由四旋翼無人機(jī)、Web 服務(wù)器和 Android 應(yīng)用程序組成的系統(tǒng),旨在提高森林消防人員的態(tài)勢感知能力。該系統(tǒng)實(shí)時(shí)跟蹤火點(diǎn)和消防人員,并在在線地圖上顯示他們的位置,該地圖可以通過網(wǎng)絡(luò)瀏覽器和安卓應(yīng)用程序訪問。無人機(jī)飛越火區(qū),并使用帶有計(jì)算機(jī)視覺紅外攝像機(jī)識(shí)別火點(diǎn)。它選擇視野中最大的三個(gè),以自主地遵循由它們組成的模式。如果火災(zāi)模式改變了形狀、大小或位置,無人機(jī)將跟蹤它并在沒有人工干預(yù)的情況下重新定位。它還可以單獨(dú)跟蹤圖案中的每個(gè)火點(diǎn)。每隔幾秒,無人機(jī)將要在地圖上繪制的檢測到的火點(diǎn)的多邊形近似值以及從其頂視圖拍攝的相機(jī)照片上傳到網(wǎng)絡(luò)服務(wù)器。它還上傳自己的 GPS 坐標(biāo)、地速和全球/相對高度;笛卡爾坐標(biāo)和每個(gè)火點(diǎn)的計(jì)算表面積和主要火災(zāi)模式,以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個(gè)控制面板,可以從中選擇多達(dá)七種無人機(jī)的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時(shí)的預(yù)報(bào)天氣數(shù)據(jù)。以及從其頂視圖拍攝的相機(jī)照片。它還上傳自己的 GPS 坐標(biāo)、地速和全球/相對高度;笛卡爾坐標(biāo)和每個(gè)火點(diǎn)的計(jì)算表面積和主要火災(zāi)模式,以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個(gè)控制面板,可以從中選擇多達(dá)七種無人機(jī)的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時(shí)的預(yù)報(bào)天氣數(shù)據(jù)。以及從其頂視圖拍攝的相機(jī)照片。它還上傳自己的 GPS 坐標(biāo)、地速和全球/相對高度;笛卡爾坐標(biāo)和每個(gè)火點(diǎn)的計(jì)算表面積和主要火災(zāi)模式,以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個(gè)控制面板,可以從中選擇多達(dá)七種無人機(jī)的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時(shí)的預(yù)報(bào)天氣數(shù)據(jù)。以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個(gè)控制面板,可以從中選擇多達(dá)七種無人機(jī)的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時(shí)的預(yù)報(bào)天氣數(shù)據(jù)。以及在其當(dāng)前位置獲取的地面溫度讀數(shù)。Web 服務(wù)器接收所有這些信息并將其可視化在網(wǎng)頁上。該網(wǎng)頁還有一個(gè)控制面板,可以從中選擇多達(dá)七種無人機(jī)的自主跟蹤任務(wù)模式。它還顯示當(dāng)前天氣數(shù)據(jù)和未來 24 小時(shí)的預(yù)報(bào)天氣數(shù)據(jù)。

定制開發(fā)的 Android 應(yīng)用程序旨在安裝在消防隊(duì)員的移動(dòng)設(shè)備中。該應(yīng)用程序跟蹤設(shè)備的 GPS 坐標(biāo)并將其上傳到 Web 服務(wù)器。系統(tǒng)檢測到的所有機(jī)組人員的位置通過在線地圖上的標(biāo)記進(jìn)行可視化,以及他們的姓名、ID 代碼、GPS 坐標(biāo)和當(dāng)前狀態(tài)。該應(yīng)用程序在 GUI 中有一個(gè)“SOS 按鈕”,機(jī)組成員可以在他們認(rèn)為有必要的任何時(shí)候按下以向服務(wù)器發(fā)送“幫助”信號(hào)可以從網(wǎng)絡(luò)瀏覽器訪問包含地圖的網(wǎng)頁,并且還顯示在 Android 應(yīng)用程序的 GUI 中。雖然這個(gè)原型使用紅外攝像機(jī)來識(shí)別火點(diǎn),但系統(tǒng)可以升級(jí)為使用熱成像攝像機(jī),只需極少的改動(dòng),以獲得更強(qiáng)大的火災(zāi)探測系統(tǒng)。

?

框圖、硬件和功能描述

poYBAGNxJO-AWnFtAARR5t0kk1E256.jpg
圖 1:框圖
?

圖 1 顯示了系統(tǒng)的主要功能組件。用于原型的無人機(jī)是 NXP 的 RDDRONE-FMUK66 HoverGames 四旋翼飛行器,帶有 NXP RDDRONE-FMUK66 飛行管理單元 (FMU)。它配備了 Raspberry Pi 3 B+ 作為配套計(jì)算機(jī)和 Raspberry Pi NoIR V2.0 紅外攝像頭。為該原型選擇了紅外 (IR) 攝像頭,因?yàn)榛馂?zāi)通常會(huì)發(fā)出紅外輻射,可用于通過檢測紅外光而不是可見顏色來檢測火災(zāi),理論上即使在煙霧或灰塵后面也能檢測到火點(diǎn)(假設(shè)相機(jī)能夠檢測給定燃燒類型發(fā)射的特定紅外輻射波段)。

配套電腦自帶獨(dú)立電源,可在無人機(jī)關(guān)機(jī)換電池時(shí)保持運(yùn)行。一個(gè)基于 OpenCV 的程序在其中運(yùn)行,以訪問攝像機(jī)的視頻源并檢測火點(diǎn)。攝像機(jī)安裝在四旋翼的框架下方,向下指向地面。一旦檢測到火點(diǎn),算法就會(huì)選擇三個(gè)最大的火點(diǎn),并計(jì)算每個(gè)火點(diǎn)的幾何近似多邊形,以及它們在局部笛卡爾坐標(biāo)中的對應(yīng)位置以及它們對應(yīng)的表面積。它還計(jì)算主火圖案幾何中心或質(zhì)心的局部笛卡爾坐標(biāo)。每隔幾秒鐘,還會(huì)從當(dāng)前無人機(jī)的位置拍攝火區(qū)的頂視圖,

pYYBAGNxJPSAFsyiAAYRkmzr4yo141.jpg
圖 2:無人機(jī)完成。
?
poYBAGNxJPmAS3JRAAigapiu6CI284.jpg
圖 3:完整的系統(tǒng)。
?

配套計(jì)算機(jī)通過 MAVLink 協(xié)議通過串行端口連接從飛行控制器接收無人機(jī)遙測數(shù)據(jù)(當(dāng)前 GPS 坐標(biāo)、全球和相對高度、地速等)。這些數(shù)據(jù)以及來自計(jì)算機(jī)視覺系統(tǒng)的火災(zāi)跟蹤數(shù)據(jù)通過 HTTP 協(xié)議發(fā)送到 Web 服務(wù)器。配套計(jì)算機(jī)使用機(jī)器人操作系統(tǒng) (ROS) 中間件“粘合”其所有軟件組件:傳感器接口、計(jì)算機(jī)視覺、自主飛行、與服務(wù)器的 HTTP 通信以及與無人機(jī)飛行控制器的 MAVLink 接口。兩個(gè)用 Python 編寫的 ROS 節(jié)點(diǎn)和兩個(gè)用 C++ 編寫的節(jié)點(diǎn)負(fù)責(zé)所有必需的任務(wù)。出于“概念驗(yàn)證”的目的,無人機(jī)依靠 WiFi 連接向服務(wù)器上傳/下載所有數(shù)據(jù),但它可以通過 GPRS 蜂窩調(diào)制解調(diào)器輕松升級(jí),以便在相對偏遠(yuǎn)的地區(qū)運(yùn)行。圖 2 顯示了完整的無人機(jī)構(gòu)建,圖 3 顯示了完整的系統(tǒng),包括指揮中心計(jì)算機(jī)和幾個(gè)移動(dòng)設(shè)備。圖 4 顯示了安裝在四軸飛行器底盤上的配套計(jì)算機(jī),以及攝像頭和溫度傳感器。圖 5 顯示了連接圖,包括與飛控的接口。

?
?
?
pYYBAGNxJP2AepsHAAW20wZClL4104.jpg
?
1 / 2 ?圖4a:配套計(jì)算機(jī)安裝。
?
poYBAGNxJQCAdXeEAAJoVQIHT2Q015.jpg
圖 5:連接圖。
?

在從無人機(jī)和機(jī)組成員的移動(dòng)設(shè)備接收到所有上述數(shù)據(jù)后,服務(wù)器將執(zhí)行額外的計(jì)算和數(shù)據(jù)轉(zhuǎn)換,以準(zhǔn)備提供上述網(wǎng)頁(見圖 6)。網(wǎng)頁中的所有信息每隔幾秒就會(huì)自動(dòng)刷新一次。

pYYBAGNxJQOAc-xMAAHoovNLJ2o053.jpg
圖 6:系統(tǒng)的網(wǎng)頁。
?

如前所述,已經(jīng)為消防人員開發(fā)了一個(gè)定制的 Android 應(yīng)用程序(參見圖 7)。該應(yīng)用程序從機(jī)組成員的移動(dòng)設(shè)備中讀取 GPS 坐標(biāo),并將這些數(shù)據(jù)連同他的姓名、身份 (ID) 代碼和當(dāng)前狀態(tài)一起發(fā)送到網(wǎng)絡(luò)服務(wù)器。它還在其 GUI 中顯示來自網(wǎng)絡(luò)服務(wù)器的地圖,并有一個(gè)“SOS 按鈕”,消防員可以在認(rèn)為必要的任何時(shí)間向服務(wù)器發(fā)送 SOS 信號(hào)。它還有一個(gè)“開始位置跟蹤”按鈕來啟動(dòng)設(shè)備的 GPS 位置跟蹤和一個(gè)“停止位置跟蹤”按鈕來停止它,以及一些用于監(jiān)控輔助數(shù)據(jù)的額外文本視圖。

pYYBAGNxJQWAU5l8AAMQKcyxmn8643.jpg
圖 7:自定義 Android 應(yīng)用程序。
?

在指揮中心,負(fù)責(zé)人員可以監(jiān)控系統(tǒng)提供的所有信息,同時(shí)控制無人機(jī)的自主跟蹤任務(wù)模式,所有這些都來自同一個(gè)網(wǎng)頁。可以從世界任何地方通過 Internet 連接訪問該網(wǎng)頁(因此系統(tǒng)應(yīng)該授予訪問權(quán)限,但這在此原型中被忽略了)。現(xiàn)場行動(dòng)開始時(shí),指揮中心的工作人員必須將無人機(jī)部署在火區(qū)周圍;然后,他們必須激活無人機(jī)的“自主火力追蹤模式”,讓它完成任務(wù)。無人機(jī)被編程為在沒有人為干預(yù)的情況下跟蹤火點(diǎn)和機(jī)組人員。從網(wǎng)頁(以及 Android 應(yīng)用程序)可以命令它并將其置于七種不同的跟蹤模式:

  • 追蹤火紋:追蹤主火紋的質(zhì)心。
  • 跟蹤火點(diǎn) 1:跟蹤檢測到的最大火點(diǎn)。
  • 跟蹤火點(diǎn) 2:跟蹤第二個(gè)火點(diǎn)的大小。
  • Track Fire Spot 3:跟蹤第三個(gè)火點(diǎn)的大小。
  • 跟蹤所有火點(diǎn):在巡邏模式下跟蹤所有三個(gè)火點(diǎn),一個(gè)接一個(gè),在每個(gè)火點(diǎn)暫停,然后再移動(dòng)到下一個(gè)。
  • Track Crew Member:跟蹤給定的消防人員,該成員也是從網(wǎng)頁中選擇的。
  • 跟蹤所有船員:在巡邏模式下跟蹤所有船員,一個(gè)接一個(gè),在移動(dòng)到下一個(gè)之前在每個(gè)船員中暫停。

無論火災(zāi)向哪個(gè)方向前進(jìn)或撤退,無人機(jī)都會(huì)根據(jù)從其視覺傳感器獲取的數(shù)據(jù),通過將自身重新定位在主要火災(zāi)區(qū)域上來自主跟蹤火點(diǎn)。一旦電池耗盡,無人機(jī)將返回起飛位置并著陸以更換電池,而無需關(guān)閉配套計(jì)算機(jī),之后可以再次重新部署。

在無線電控制 (RC) 發(fā)射器的幫助下,指揮中心始終可以重新獲得對無人機(jī)的手動(dòng)控制,并再次將其切換到自主跟蹤模式。此外,通過使用 PX4 自動(dòng)駕駛儀的軟件生態(tài)系統(tǒng),無人機(jī)的完整遙測數(shù)據(jù)可通過使用地面站軟件(例如 QGroundControl)在指揮中心計(jì)算機(jī)上獲得,該軟件通過遙測模塊永久連接到無人機(jī)。地面站軟件還顯示了無人機(jī)當(dāng)前位置及其描述的軌跡以及無數(shù)遙測數(shù)據(jù)的地圖,如果需要,還可用于在手動(dòng)控制和自主模式之間切換。因?yàn)樵撓到y(tǒng)基于 ROS、實(shí)時(shí)視頻源、原始火災(zāi)跟蹤數(shù)據(jù)、消防人員的數(shù)據(jù)和來自飛行控制器的遙測數(shù)據(jù)也可以通過默認(rèn)的 ROS 工具從任何安裝了 ROS 的 Linux 計(jì)算機(jī)上實(shí)時(shí)訪問。例如,來自相機(jī)圖像處理算法的所有視頻輸入都可以作為 ROS 主題實(shí)時(shí)獲得。

配套電腦軟件

Raspberry Pi 配套計(jì)算機(jī)運(yùn)行安裝了 ROS Kinetic 的 Ubuntu MATE 16.04。以下 ROS 節(jié)點(diǎn)負(fù)責(zé)所有必需的任務(wù):

'opencv_node':用 Python 編寫,負(fù)責(zé)訪問 Raspberry Pi NoIR 攝像頭的實(shí)時(shí)視頻源,并運(yùn)行火災(zāi)檢測算法以找到火點(diǎn)。隨時(shí)可用的“raspicam_node”ROS 節(jié)點(diǎn)(請參閱參考資料部分)用于訪問攝像機(jī)的視頻源。該節(jié)點(diǎn)與攝像機(jī)對話,以獲取視頻流并將其發(fā)布到“opencv_node”訂閱的“/raspicam_node/image/compressed”視頻主題。在檢測到火點(diǎn)后,配套計(jì)算機(jī)計(jì)算構(gòu)成主要火災(zāi)模式的三個(gè)最大火點(diǎn)的幾何近似多邊形。然后它將每個(gè)多邊形的定義頂點(diǎn)作為 JSON 字符串發(fā)布到“/fire_polygons_json”主題;以及每個(gè)火點(diǎn)的面積,到“/fire_polygons_area_json”主題。'/fire_pattern/pose_point' 主題中也提供了火災(zāi)模式質(zhì)心的局部笛卡爾坐標(biāo)。它還發(fā)布了“/fire_tracking_image/compressed”主題,該主題帶有攝像機(jī)的原始視頻圖像,檢測到的火點(diǎn)和近似多邊形疊加。從同樣的視頻內(nèi)容中,該節(jié)點(diǎn)每隔幾秒就會(huì)在配套計(jì)算機(jī)的文件系統(tǒng)中保存一個(gè)圖片幀,然后將其發(fā)送到服務(wù)器以顯示在網(wǎng)頁上(參見圖 6)。該節(jié)點(diǎn)還發(fā)布包含相機(jī)幀當(dāng)前寬度和高度的“/modified_image/size”主題,該主題也必須上傳到服務(wù)器,以便從像素單位計(jì)算轉(zhuǎn)換系數(shù),其中表示長度和面積在相機(jī)圖像中,到米,

已經(jīng)實(shí)施了“運(yùn)行平均低通濾波器”來過濾火災(zāi)模式質(zhì)心坐標(biāo),以過濾火災(zāi)檢測過程中固有的高頻噪聲。

'mlx90614_sensor_node':C++編寫,負(fù)責(zé)讀取MLX9014紅外溫度傳感器的溫度【參考mlx90614教程】。它發(fā)布包含溫度讀數(shù)的“/mlx90614/temp”主題。

'http_client_node' :用 Python 編寫,訂閱前面兩個(gè)節(jié)點(diǎn)發(fā)布的所有上述主題,以及一些 MAVROS 主題。例如,它將訂閱“/mavros/global_position/global”主題,從中獲取無人機(jī)當(dāng)前的緯度/經(jīng)度坐標(biāo),以及全球海拔高度。它還將訂閱“/mavros/global_position/rel_alt”,從中獲取無人機(jī)相對于地面的當(dāng)前相對高度;最后,到“/mavros/vfr_hud”主題,它將從中獲取無人機(jī)的地面速度。然后,該節(jié)點(diǎn)將分四步繼續(xù)與服務(wù)器交換數(shù)據(jù):

  • 它將來自上述所有主題的數(shù)據(jù)累積到一個(gè) XML 文件中,并通過 HTTP POST 請求將其發(fā)送到 Web 服務(wù)器。
  • 通過發(fā)出額外的 POST 請求,它還將發(fā)送火災(zāi)攝像機(jī)鏡頭,之前由“opencv_node”存儲(chǔ)在配套計(jì)算機(jī)的文件系統(tǒng)中。
  • 通過發(fā)送 GET 請求,它將從 Web 服務(wù)器下載用戶從網(wǎng)頁發(fā)出的無人機(jī)當(dāng)前任務(wù)模式命令。
  • 通過發(fā)送另一個(gè) GET 請求,它將從 Web 服務(wù)器下載消防員數(shù)據(jù),其中主要包含系統(tǒng)檢測到的每個(gè)船員的姓名、ID 和 GPS 坐標(biāo)。

這些數(shù)據(jù)每三秒在無人機(jī)和網(wǎng)絡(luò)服務(wù)器之間交換一次。該節(jié)點(diǎn)接收到來自 web 服務(wù)器的數(shù)據(jù)后,會(huì)發(fā)布以下 ROS 主題:

  • '/drone_commands/task_mode_cmd' :包含從網(wǎng)頁發(fā)出的當(dāng)前無人機(jī)任務(wù)模式命令。以下選項(xiàng)可用: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' :包含每個(gè)機(jī)組成員的 GPS 坐標(biāo)列表。
  • '/drone_commands/sel_crew_member_idx' :包含無人機(jī)必須跟蹤的當(dāng)前選定機(jī)組成員的索引。

'mavros_offboard_node':無人機(jī)通過使用MAVROS(這是MAVLink和ROS之間的橋梁)與同伴計(jì)算機(jī)接口,該節(jié)點(diǎn)負(fù)責(zé)通過發(fā)布到MAVROS主題來控制無人機(jī)的自主飛行能力,MAVLink命令將從派生并交付給無人機(jī)。該節(jié)點(diǎn)使用 C++ 編寫,訂閱以下主題:

  • '/mavros/local_position/pose' : 獲取無人機(jī)的局部笛卡爾坐標(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' : 獲取三個(gè)主要火點(diǎn)的局部笛卡爾坐標(biāo)。
  • '/drone_commands/task_mode_cmd ':獲取當(dāng)前從網(wǎng)頁下發(fā)的任務(wù)模式命令。
  • '/drone_commands/sel_crew_member_idx ':獲取無人機(jī)必須跟蹤的當(dāng)前選定機(jī)組成員的索引(對于 TRACK_CREW_MEMBER 任務(wù)命令選項(xiàng))。
  • '/drone_commands/fighter_crew_list' :獲取系統(tǒng)檢測到的所有機(jī)組成員的GPS坐標(biāo)列表。

該節(jié)點(diǎn)使用 PX4 “offboard” 飛行模式來控制無人機(jī)的位置,每次無人機(jī)的跟蹤目標(biāo)發(fā)生變化時(shí),都會(huì)將新的位置坐標(biāo)發(fā)布到 'mavros/setpoint_position/local' 主題。

安卓應(yīng)用

Android 應(yīng)用程序是使用 Android Studio IDE 在 Java 中開發(fā)的。GUI(參見圖 7)由六個(gè)對象組成:

  • 一個(gè)“webView”對象,用于顯示由 Web 服務(wù)器生成的地圖。
  • 一個(gè)'開始位置。Tracking”按鈕,啟動(dòng)設(shè)備的 GPS 位置監(jiān)控。
  • 一個(gè)'停止位置。跟蹤”按鈕,停止它。
  • 一個(gè)“開始 SOS”按鈕,用于向服務(wù)器發(fā)送“幫助”信號(hào)。
  • 一個(gè)“textView”,顯示 HTTP POST 請求的結(jié)果,由應(yīng)用程序發(fā)送到 Web 服務(wù)器以上傳機(jī)組成員的數(shù)據(jù)。
  • 第二個(gè)“textView”顯示移動(dòng)設(shè)備的當(dāng)前 GPS 坐標(biāo)。

應(yīng)用程序中有一個(gè)時(shí)間觸發(fā)功能,負(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ù)器有一個(gè)帶有 Javascript 代碼的主網(wǎng)頁,以及一組 PHP 腳本,負(fù)責(zé)接收來自無人機(jī)和機(jī)組成員移動(dòng)設(shè)備的數(shù)據(jù);以及從主網(wǎng)頁的控制面板發(fā)出的無人機(jī)任務(wù)命令。讓我們看看每個(gè)腳本的作用:

'receive_telemetry_xml.php' :此腳本從配套計(jì)算機(jī)接收 XML 遙測文件,其中包含以下數(shù)據(jù):

  • 無人機(jī)的 GPS 坐標(biāo)、全球/相對高度和地面速度。
  • 局部笛卡爾坐標(biāo)中每個(gè)火點(diǎn)的近似多邊形頂點(diǎn)及其對應(yīng)的表面積,均以像素為單位。
  • 火焰圖案的質(zhì)心笛卡爾坐標(biāo),以像素為單位。
  • 相機(jī)圖像幀的寬度和高度,也以像素為單位。
  • 在無人機(jī)當(dāng)前位置測量的地面溫度,以攝氏度為單位。

收到 XML 文件后,腳本會(huì)繼續(xù)將其副本保存在服務(wù)器的本地文件系統(tǒng)中。由于 XML 字符串的副本仍在 RAM 內(nèi)存中,它會(huì)繼續(xù)將所有接收到的距離和區(qū)域(以“相機(jī)像素”單位)轉(zhuǎn)換為米。為此,它將計(jì)算“$pixel_to_meters”轉(zhuǎn)換因子以將所有測量值從像素單位轉(zhuǎn)換為米。圖 8 顯示了如何通過使用無人機(jī)相對于地面的相對高度、相機(jī)的視場角、相機(jī)圖像大小和勾股定理來計(jì)算轉(zhuǎn)換因子。預(yù)先做出一些假設(shè)以保持計(jì)算簡單。接下來,借助這個(gè)轉(zhuǎn)換因子,火焰多邊形頂點(diǎn)和火焰圖案質(zhì)心的笛卡爾坐標(biāo)從以像素為單位的局部笛卡爾坐標(biāo)轉(zhuǎn)換為極坐標(biāo),距離以米為單位,角度以弧度為單位。然后,將這些極坐標(biāo)轉(zhuǎn)換為全球經(jīng)緯度坐標(biāo)[參考 PHP 距離方位到 GPS]。

poYBAGNxJQiAVhr_AAFGIvoyWn4589.jpg
圖 8:像素單位到米的轉(zhuǎn)換。
?

然后,該腳本將用新轉(zhuǎn)換的 GPS 坐標(biāo)替換 XML 字符串中的所有原始本地坐標(biāo),并將 XML 字符串作為名為“drone_telemetry_conv.xml”的新副本再次存儲(chǔ)在服務(wù)器的本地文件系統(tǒng)中。該網(wǎng)頁將使用新轉(zhuǎn)換的 GPS 坐標(biāo)來可視化地圖中的火災(zāi)多邊形。

'receive_image.php' : 該腳本負(fù)責(zé)接收消防攝像機(jī)鏡頭,之前由同伴計(jì)算機(jī)中的'opencv_node'保存;然后將顯示在網(wǎng)頁上并每隔幾秒鐘刷新一次。

'receive_fighter_data.php' :負(fù)責(zé)處理來自機(jī)組成員移動(dòng)設(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)和其余鍵的時(shí)間戳,我認(rèn)為是不言自明的。該腳本將接收來自所有正在執(zhí)行任務(wù)的消防員的數(shù)據(jù),該應(yīng)用程序當(dāng)前在他們的移動(dòng)設(shè)備上運(yùn)行。然后它將數(shù)據(jù)存儲(chǔ)在服務(wù)器本地文件系統(tǒng)中的單個(gè)文本文件中,

'dump_fighter_data_xml.php' :該腳本應(yīng)主網(wǎng)頁('index.html')的請求,將每個(gè)消防員的可用數(shù)據(jù)轉(zhuǎn)儲(chǔ)為 XML 字符串;網(wǎng)頁每隔幾秒異步請求一次,以在網(wǎng)頁上可視化機(jī)組成員的信息。

receive_drone_task_cmd.php ”:負(fù)責(zé)從網(wǎng)頁接收無人機(jī)任務(wù)命令,并將其存儲(chǔ)在“drone_commands.xml”文件中。該文件由配套計(jì)算機(jī)中的“http_client_node”請求,以控制無人機(jī)的自主跟蹤任務(wù)。

'index.html' : 是主網(wǎng)頁,運(yùn)行 Javascript 代碼與 Google Maps API、OpenWeatherMap API 和我們自己的網(wǎng)絡(luò)服務(wù)器進(jìn)行交互,以實(shí)現(xiàn)以下任務(wù):

  • 從網(wǎng)絡(luò)服務(wù)器讀取無人機(jī)提供的所有數(shù)據(jù),并與 Google Maps API 接口以繪制地圖、火災(zāi)多邊形和代表無人機(jī)位置的所有地圖標(biāo)記、火災(zāi)模式的質(zhì)心位置以及所有消防人員的位置。
  • 從網(wǎng)頁的控制面板讀取用戶發(fā)出的無人機(jī)任務(wù)命令,并將這些數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)服務(wù)器。
  • 與 OpenWeatherMap API 交互,請求當(dāng)前天氣和預(yù)報(bào)天氣數(shù)據(jù);然后顯示在網(wǎng)頁底部(參見圖 9 和圖 10)。
pYYBAGNxJQyAbPULAAKm5-5FSEM864.jpg
圖 9:從 Web 瀏覽器訪問的天氣數(shù)據(jù)。
?
poYBAGNxJQ-AIvEXAAQAxUoBWB8710.jpg
圖 10:從 Android 應(yīng)用程序訪問的天氣數(shù)據(jù)。
?

Ajax 技術(shù)用于異步刷新上述所有動(dòng)態(tài)數(shù)據(jù),而無需重新加載頁面。要訪問 Google Maps API 和 OpenWeatherMap API,必須在網(wǎng)頁的源代碼中配置相應(yīng)的 API 密鑰才能訪問這兩種服務(wù)。

地圖上顯示的數(shù)據(jù)

除了前面描述的在網(wǎng)頁中可視化的對象之外,還有由地圖上的點(diǎn)擊事件觸發(fā)的其他數(shù)據(jù)。圖 11 顯示了它們。例如,當(dāng)單擊代表無人機(jī)當(dāng)前位置的地圖標(biāo)記時(shí),會(huì)出現(xiàn)一個(gè)信息窗口,顯示無人機(jī)的相對高度、地速、GPS 坐標(biāo)以及在其當(dāng)前位置測量的地面溫度。單擊代表火災(zāi)模式中心的地圖標(biāo)記時(shí),類似的信息窗口會(huì)顯示火災(zāi)覆蓋的總面積(以平方米為單位)和中心的 GPS 坐標(biāo)。通過單擊三個(gè)火災(zāi)多邊形中的任何一個(gè),相應(yīng)的信息窗口將顯示所選火點(diǎn)的覆蓋面積(以平方米為單位)以及發(fā)出鼠標(biāo)單擊的確切點(diǎn)的 GPS 坐標(biāo)。最后一項(xiàng)功能有助于輕松獲取任何被火覆蓋的點(diǎn)的 GPS 坐標(biāo),可用于規(guī)劃工作策略。最后,當(dāng)單擊任何代表機(jī)組成員的標(biāo)記時(shí),會(huì)顯示消防員的姓名、狀態(tài)(是否按下 SOS 按鈕)、ID 代碼和 GPS 坐標(biāo)。此外,當(dāng)戰(zhàn)斗機(jī)狀態(tài)為“正常”時(shí),其對應(yīng)的標(biāo)記圖標(biāo)顯示為綠色,當(dāng)狀態(tài)變?yōu)椤皫椭睍r(shí)(按下 SOS 按鈕后),標(biāo)記圖標(biāo)變?yōu)榧t色。

poYBAGNxJReAOseBAAU8U3Oh4SU144.png
圖 11:地圖元素信息窗口。
?

發(fā)展

與控制無人機(jī)相關(guān)的代碼是使用模擬開發(fā)的。我使用了 PX4 Gazebo 'Software in The Loop' (SITL) 模擬器,在安裝了 ROS melodic 的 Ubuntu 18.04 PC 上運(yùn)行。

該系統(tǒng)在模擬中進(jìn)行了廣泛的測試并且表現(xiàn)非常好。遺憾的是,直到該項(xiàng)目的最終提交日期,沒有足夠的時(shí)間來測試該系統(tǒng)與真正的無人機(jī)飛行,但它已準(zhǔn)備好進(jìn)行現(xiàn)場測試,這將在不久的將來進(jìn)行。

如何讓系統(tǒng)運(yùn)行

  • 按照 NXP HoverGames 官方無人機(jī)構(gòu)建說明 ( https://nxp.gitbook.io/HoverGames/userguide/getting-started)構(gòu)建您的無人機(jī)必須為無人機(jī)配置以下飛行模式:“Position”,用于安全起飛,“Offboard”用于啟用自主模式,“Return”用于將無人機(jī)返回到起飛位置,特別是嘗試在緊急情況下或電池耗盡時(shí)恢復(fù)無人機(jī)。“終止開關(guān)”還必須配置為在發(fā)生任何不可恢復(fù)或嚴(yán)重緊急情況時(shí)切斷電機(jī)電源。
  • 下載適用于 Raspberry Pi 的 Ubuntu MATE 16.04 映像并將其刻錄在微型 SD 卡(至少 16GB)上,安裝所有軟件并進(jìn)行“rpi_configuration.md”文件中描述的所有配置,該文件可在項(xiàng)目的代碼存儲(chǔ)庫中找到。
  • 將 ROS 工作區(qū)文件夾“airstrategist_ws”從存儲(chǔ)庫復(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ù)庫軟件。
  • 將存儲(chǔ)庫中“WebServer”文件夾中的“airstrategist”文件夾上傳到本地或 Web 托管服務(wù)器的根目錄。
  • 進(jìn)行圖 5 所示的連接,并將 Raspberry Pi 配套計(jì)算機(jī)及其移動(dòng)電源安裝在無人機(jī)框架中,如圖 4a 和圖 4b 所示。
  • 在您的開發(fā) PC 中安裝 Android Studio,打開 Android 應(yīng)用程序項(xiàng)目,然后在“MainActivity.java”文件中,更改對我服務(wù)器根目錄的所有引用(“http://tec.bo/airstrategist/...' )給你的。編譯并上傳應(yīng)用程序到一部或多部手機(jī)。該應(yīng)用程序使用三星 Galaxy Note 8 SM-N950F 設(shè)備進(jìn)行了測試。為其他設(shè)備型號(hào)編譯應(yīng)用程序可能需要更改目標(biāo) Android API 和其他附加配置。
  • 啟動(dòng)無人機(jī),但不要武裝它。
  • 通過將 Raspberry Pi 連接到其移動(dòng)電源來啟動(dòng)它。它使用 2 節(jié)鋰離子 18650 電池“移動(dòng)電源”,因此無人機(jī)可以在無需關(guān)閉配套計(jì)算機(jī)的情況下更換電池。
  • 至少在兩個(gè)單獨(dú)的終端窗口中從您的 PC 中打開到 Raspberry Pi 的 SSH 連接。在第一個(gè)窗口中運(yùn)行 MAVROS 'px4.launch' 啟動(dòng)文件;此文件運(yùn)行 ROS 服務(wù)器并實(shí)例化 MAVROS 節(jié)點(diǎn)以通過 ROS 消息與無人機(jī)的飛行控制器進(jìn)行通信。在第二個(gè)終端窗口中運(yùn)行“hovergames_drone.launch”文件;此文件運(yùn)行為項(xiàng)目編寫的所有 ROS 節(jié)點(diǎn)。運(yùn)行此代碼后,Web 服務(wù)器將開始接收所有數(shù)據(jù),主網(wǎng)頁將位于“http:///airstrategist/”;可以通過任何網(wǎng)絡(luò)瀏覽器訪問。我用 Chrome 和 Firefox 測試了頁面沒有問題。查看上面的視頻演示,了解有關(guān)在模擬中熱運(yùn)行它的說明。
  • 在移動(dòng)設(shè)備中打開 Android 應(yīng)用程序。該應(yīng)用程序?qū)@示包含該地圖的同一網(wǎng)頁。單擊“開始位置”。跟蹤”按鈕開始將您的移動(dòng)設(shè)備的 GPS 坐標(biāo)和其他數(shù)據(jù)發(fā)送到服務(wù)器。幾秒鐘后,您的位置將作為綠色標(biāo)記出現(xiàn)在地圖上。
  • 將遙測模塊連接到您的 PC 并打開 QGroundControl 以連接無人機(jī)。
  • 武裝無人機(jī)并以“位置”飛行模式起飛到方便的高度進(jìn)行測試。對于測試,跟蹤高度固定為 10 米,文件中的“OFFBOARD_FLYING_ALTITUDE”常量來更改此高度。為安全起見,除非您知道自己在做什么,否則請勿在海拔超過 15 米的地方使用真正的無人機(jī)測試系統(tǒng)。
  • 一旦無人機(jī)到達(dá)所需高度,通過遙控發(fā)射器或地面控制軟件將無人機(jī)的飛行模式更改為“離機(jī)”,進(jìn)行自主飛行,無人機(jī)將開始跟蹤選定的目標(biāo);再次更改為“位置”模式以脫離自主飛行并重新獲得手動(dòng)控制。
  • 使用遙控器手動(dòng)降落無人機(jī),或?qū)w行模式更改為“返回”,無人機(jī)將返回起飛點(diǎn)。

警告:建議使用適當(dāng)?shù)脑隽繙y試/調(diào)試策略,從第一個(gè)到最后一個(gè)分別仔細(xì)測試所有描述的步驟,以確保所有軟件和硬件正常工作;在沒有適當(dāng)測試的情況下在真正的無人機(jī)上運(yùn)行系統(tǒng)可能非常危險(xiǎn)。您可以使用“testing_in_simulation.md”文件中詳述的工作流程在模擬中首先測試系統(tǒng)。

結(jié)論和未來的改進(jìn)

該系統(tǒng)在仿真中表現(xiàn)得非常好。還需要用真正的四軸飛行器進(jìn)行廣泛的現(xiàn)場測試。計(jì)算機(jī)視覺火災(zāi)追蹤效果很好;雖然火災(zāi)檢測算法容易出現(xiàn)誤報(bào),因?yàn)橄鄼C(jī)還可以檢測來自其他來源的紅外光。當(dāng)然,普通的紅外熱像儀并不是探測火災(zāi)的最佳方式。然而,它非常適合構(gòu)建這個(gè)“概念驗(yàn)證”原型的目的。HoverGames 無人機(jī)硬件成本低廉且相對實(shí)惠。無人機(jī)本身經(jīng)過了廣泛的測試(盡管沒有足夠的時(shí)間與系統(tǒng)的其余部分進(jìn)行測試)并且性能非常好。它對開發(fā)非常有用;然而,在某些情況下,對硬件進(jìn)行一些升級(jí)是可取的,甚至是必要的。Raspberry Pi 3 B+ 配套計(jì)算機(jī)很好地管理了所有計(jì)算任務(wù)。有必要安裝散熱器和冷卻風(fēng)扇。在沒有散熱風(fēng)扇的情況下,處理器溫度輕松升高到 60+°C;隨著冷卻風(fēng)扇的出現(xiàn),溫度降至 48°C 左右。

我希望將來對系統(tǒng)進(jìn)行的一些改進(jìn)如下:

  • 用合適的熱像儀升級(jí)系統(tǒng)會(huì)很棒;火災(zāi)識(shí)別代碼所需的更改將是最小的。
  • 可以添加一個(gè) GPRS 調(diào)制解調(diào)器,也許還可以添加一個(gè)備用 LoraWAN 連接,這樣它就可以在偏遠(yuǎn)地區(qū)工作。
  • 使無人機(jī)不時(shí)自動(dòng)改變高度和方向,以獲得額外的地面視角。
  • 使用測得的地面溫度來調(diào)整無人機(jī)的高度。眾所周知,熱量會(huì)降低空氣密度,從而降低升力(空氣動(dòng)力)。如果空氣太熱,無人機(jī)應(yīng)該爬升到更高的高度以提高升力并使用更少的電池電量,從而保持飛行自主權(quán)。
  • 實(shí)現(xiàn)無人機(jī)在火區(qū)上空的自動(dòng)起飛和重新定位會(huì)很棒,尤其是在更換電池之后。無人機(jī)起飛后會(huì)進(jìn)行相機(jī)平移,以檢測火區(qū)。然后飛過它繼續(xù)跟蹤任務(wù)。
  • 使用機(jī)器學(xué)習(xí)人工智能實(shí)施在線數(shù)據(jù)庫來存儲(chǔ)歷史數(shù)據(jù)以供進(jìn)一步分析。

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)