多無(wú)人機(jī)應(yīng)用的開(kāi)發(fā)涉及到整合控制系統(tǒng)、無(wú)線(xiàn)通信、協(xié)調(diào)、自組織等任務(wù),最復(fù)雜的問(wèn)題是測(cè)試和調(diào)試。一方面,算法被設(shè)計(jì)為在物理系統(tǒng)上運(yùn)行,因此調(diào)試它們的最佳方法是使用真實(shí)的無(wú)人機(jī)進(jìn)行測(cè)試;另一方面,錯(cuò)誤或錯(cuò)誤的參數(shù)調(diào)整可能會(huì)產(chǎn)生災(zāi)難性的后果,例如觸發(fā)危險(xiǎn)行為甚至引發(fā)碰撞。為了避免這種不良后果,在運(yùn)行實(shí)際系統(tǒng)之前,必須對(duì)所有算法進(jìn)行預(yù)防性驗(yàn)證,以便盡可能多地捕獲錯(cuò)誤并修復(fù)它們。處理多無(wú)人機(jī)應(yīng)用的模擬并不是一項(xiàng)簡(jiǎn)單的任務(wù)。雖然存在大量的多智能體模擬器,但主要區(qū)別在于工具模擬真實(shí)系統(tǒng)的能力及其準(zhǔn)確性。
無(wú)人機(jī)是一種機(jī)械系統(tǒng),其動(dòng)力學(xué)趨于振蕩或不穩(wěn)定,特別是在存在風(fēng)或湍流等環(huán)境條件的情況下,因此在設(shè)計(jì)多無(wú)人機(jī)應(yīng)用時(shí)必須始終考慮它們的實(shí)際行為。這里提出一個(gè)集成解決方案,讓開(kāi)發(fā)人員以現(xiàn)實(shí)的方式模擬多無(wú)人機(jī)應(yīng)用程序。使用了一些最先進(jìn)的模擬器,并圍繞它們構(gòu)建了一個(gè)“膠水”:包括一個(gè)協(xié)議、一個(gè)名為GzUavChannel的軟件模塊和一些模擬器插件。圖1中描述了多無(wú)人機(jī)場(chǎng)景的各個(gè)組件及其在應(yīng)用環(huán)境中的作用。基本部件顯然是無(wú)人機(jī)。至于機(jī)身,雖然任何類(lèi)型的配置都是可能的,但研究人員傾向于使用多旋翼(例如四旋翼),因?yàn)樗鼈儽?a href="http://www.hldxsj.cn/sell/search.php?keyword=%E5%9B%BA%E5%AE%9A%E7%BF%BC" title="固定翼" target="_blank">固定翼飛行器更靈活。
圖1 無(wú)人機(jī)和多無(wú)人機(jī)應(yīng)用程序的其他組件的架構(gòu)
為了讓多旋翼正常飛行,總是使用飛行控制單元(FCU)。它是一個(gè)配備有微控制器、適當(dāng)?shù)?a href="http://www.hldxsj.cn/sell/list-44.html" title="電機(jī)" target="_blank">電機(jī)驅(qū)動(dòng)器和一組慣性和地理傳感器的電子板。FCU通常為遙測(cè)、飛行應(yīng)急控制和FCU設(shè)置/監(jiān)控提供一些通信接口。FCU還提供了一個(gè)通信通道,可以用來(lái)連接機(jī)載伴侶計(jì)算機(jī),即樹(shù)莓派、Odroid等嵌入式平臺(tái),實(shí)現(xiàn)任務(wù)的高層邏輯。此外,我們提出了一個(gè)基于三個(gè)現(xiàn)有工具集成的解決方案,每個(gè)工具都實(shí)現(xiàn)了一個(gè)特定的功能。機(jī)械部件(即 機(jī)身、電機(jī)和螺旋槳)的物理特性通過(guò)Gazebo進(jìn)行模擬;ns-3用于模擬網(wǎng)絡(luò);至于飛行堆棧,我們使用ArduPilot。
基本組件
集成模擬器的軟件架構(gòu)由幾個(gè)模塊組成,每個(gè)模塊指的是真實(shí)場(chǎng)景中無(wú)人機(jī)的特定組件。每個(gè)無(wú)人機(jī)由以下軟件模塊表示,如圖 2所示并描述如下:Gazebo視覺(jué)模型、Gazebo物理模型、GzUavPlugin、ArduCopter 進(jìn)程、無(wú)人機(jī)節(jié)點(diǎn)和高級(jí)邏輯。
圖 2 集成模擬器的軟件組件和架構(gòu)
GzUav頻道
提出的集成仿真環(huán)境包括一個(gè)稱(chēng)為GzUavChannel的基本組件,它與框架的其他組件的鏈接和連接如圖3所示。它是一個(gè)具有多個(gè)目標(biāo)的中間件組件。
圖3 組件和GzUavChannel之間的關(guān)系
定時(shí)和同步
在我們的仿真環(huán)境中,時(shí)間同步由GzUavChannel根據(jù)交互協(xié)議進(jìn)行管理,如圖4所示并在此處描述。一切都由Gazebo啟動(dòng):正是這個(gè)工具確實(shí)負(fù)責(zé)生成主時(shí)間刻度,這是一個(gè)通知 Gazebo中運(yùn)行的所有插件的事件,包括GzUavPlugins。如圖4所示,此事件對(duì)應(yīng)于對(duì)特定回調(diào)函數(shù)的調(diào)用,對(duì)于GzUavPlugin,該回調(diào)函數(shù)稱(chēng)為onUpdate()。
圖4 序列圖顯示每個(gè)模擬步驟的進(jìn)程之間交換的消息
為了正確模擬網(wǎng)絡(luò)活動(dòng),采用的策略如下:在 Phase-0期間,必須通過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的High-level Logic進(jìn)程通過(guò)發(fā)送ENQUEUE-NS3消息直接與ns-3交互,如圖5所示。這里消息并沒(méi)有真正由ns-3處理,而只是放在事件隊(duì)列中。
圖5 高級(jí)邏輯進(jìn)程和 ns-3 之間的交互
在分布式環(huán)境中管理模擬
鑒于用于將進(jìn)程分布在一組服務(wù)器上的策略可能不同,提高模擬性能的一個(gè)好方法是將物理模擬(Gazebo)與其他部分分開(kāi)。從這個(gè)意義上說(shuō),如圖6所示,在最一般的形式中,可以創(chuàng)建一棵樹(shù),其中節(jié)點(diǎn)是GzUavChannel實(shí)例,邊緣是 TCP連接;在這樣的樹(shù)中,根由直接連接到Gazebo的實(shí)例表示,而葉子則連接到 ArduCopter進(jìn)程。每個(gè)ArduCopter進(jìn)程都連接到相關(guān)的高級(jí)邏輯進(jìn)程,運(yùn)行在同一節(jié)點(diǎn)上,該節(jié)點(diǎn)又連接到全局ns-3進(jìn)程。
圖6 分布式環(huán)境中集成模擬器的架構(gòu)
所描述的體系結(jié)構(gòu)已經(jīng)在許多測(cè)試程序上實(shí)施和驗(yàn)證(參見(jiàn)圖 7)。其中,Boids算法的實(shí)現(xiàn)一直是評(píng)估模擬器的性能。特別是,我們旨在通過(guò)比較模擬的持續(xù)時(shí)間與實(shí)時(shí)性來(lái)測(cè)試(i)解決方案的可擴(kuò)展性和(ii)其性能。
圖7 40架無(wú)人機(jī)起飛截圖
我們使用越來(lái)越多的無(wú)人機(jī)(從10架到120 架)進(jìn)行了模擬活動(dòng),并使用280秒的(模擬)任務(wù)持續(xù)時(shí)間。在此基礎(chǔ)上,我們收集了模擬實(shí)時(shí)持續(xù)時(shí)間的度量。測(cè)量報(bào)告在圖8中,是指使用 IEEE 802.15.4無(wú)線(xiàn)信道進(jìn)行無(wú)人機(jī)交互的Boids算法的實(shí)現(xiàn);該測(cè)試在具有8個(gè)vCPU和32 GB RAM的VMWare 虛擬機(jī)內(nèi)的單個(gè) Intel Xeon E5-2620 v3 @ 2.40GHz 節(jié)點(diǎn)上運(yùn)行。如圖8所示,集成模擬器能夠支持多達(dá)100多架模擬無(wú)人機(jī),這個(gè)數(shù)字與實(shí)際任務(wù)的場(chǎng)景一致。
圖8 模擬運(yùn)行時(shí)間對(duì)應(yīng)于 280 秒的模擬時(shí)間
仿真是無(wú)人機(jī)應(yīng)用程序開(kāi)發(fā)中的寶貴工具,因?yàn)樗试S在不使用真實(shí)無(wú)人機(jī)的情況下測(cè)試算法,從而避免相關(guān)風(fēng)險(xiǎn)。由于使用了 ArduPilot的MAVLink API,在模擬器上運(yùn)行的相同代碼也可以在真正的無(wú)人機(jī)中運(yùn)行。因此,我們的框架首先允許在模擬器中開(kāi)發(fā)無(wú)人機(jī)程序,并且只有在經(jīng)過(guò)廣泛測(cè)試和驗(yàn)證后才能在物理世界中部署它們。
源自:Computers and Electrical Engineering 74 (2019) 196–209
2025-09-18 11:24
2025-09-17 10:55
2025-09-16 09:27
2025-09-12 11:30
2025-09-11 10:41
2025-09-09 10:52
2025-09-04 21:58
2025-08-28 11:13
2025-08-27 14:14
2025-08-26 13:50