陳裕通 劉玉芬 陳裕芹 劉立程
1(廣州民航職業(yè)技術(shù)學(xué)院 廣東 廣州 510403) 2(中國民航大學(xué)電子信息與自動化學(xué)院 天津 300300) 3(廣東工業(yè)大學(xué)信息工程學(xué)院 廣東 廣州 510000)
鳥擊又稱鳥撞,即飛機(jī)與鳥兒碰撞后所造成的事故[1]。鳥擊的特點(diǎn)是多變性和突發(fā)性,其不僅影響航班的正常秩序,還給人類的生命財(cái)產(chǎn)安全帶來隱患。輕微的鳥撞可導(dǎo)致飛機(jī)部件損壞而引起飛行事故,而嚴(yán)重的鳥撞則會造成機(jī)毀人亡[2]。由此可見,無論是從鳥擊對飛機(jī)造成的危害角度,還是從其發(fā)展趨勢來說,鳥擊事件都是不容忽視的,必須尋找有效的辦法遏制此類事件的發(fā)生,即如何做到“高效驅(qū)鳥”,將驅(qū)鳥現(xiàn)狀從“被動”轉(zhuǎn)變?yōu)椤爸鲃印薄?/p>
針對這一問題,并在軍民融合的大背景下,本文提出了構(gòu)建基于物聯(lián)網(wǎng)的驅(qū)鳥系統(tǒng),并在其基礎(chǔ)上引入深度學(xué)習(xí)技術(shù),賦予系統(tǒng)以“智慧”,解放機(jī)場場務(wù)人員。
組建基于物聯(lián)網(wǎng)的機(jī)場驅(qū)鳥聯(lián)動系統(tǒng)網(wǎng)絡(luò)的主要目的是為了給機(jī)場現(xiàn)有驅(qū)鳥設(shè)備提供網(wǎng)絡(luò)支持,是搭建可遠(yuǎn)程控制的機(jī)場驅(qū)鳥聯(lián)動系統(tǒng)平臺的硬件基礎(chǔ),也是核心的部分。根據(jù)機(jī)場場務(wù)人員提出的需求,結(jié)合無線通信技術(shù),設(shè)計(jì)了如圖1所示的系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。在拓?fù)浣Y(jié)構(gòu)中,主要包含了無線短波網(wǎng)絡(luò)與Zigbee網(wǎng)絡(luò),二者混合組網(wǎng)并覆蓋整個(gè)機(jī)場區(qū)域,最后將煤氣炮、鈦雷炮、二踢腳、攔鳥網(wǎng)及語音驅(qū)鳥器加入到無線網(wǎng)絡(luò)中,構(gòu)成一個(gè)完整的鳥情信息查詢、聯(lián)動驅(qū)鳥及鳥類分布的智能系統(tǒng)。

圖1 系統(tǒng)架構(gòu)示意圖
ZigBee為基于IEEE802.15.4協(xié)議標(biāo)準(zhǔn)的[3]通信技術(shù),是當(dāng)前無線通信領(lǐng)域內(nèi)的研究熱點(diǎn),其特點(diǎn)是短時(shí)延、低功耗、低成本等,這些特點(diǎn)非常符合項(xiàng)目的要求,故選用了ZigBee作為第一層網(wǎng)絡(luò)的通信方式[4]。
在無線傳感器網(wǎng)絡(luò)WSN(Wiresless Sensor Network)中,網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備通常分為三種類型,即路由節(jié)點(diǎn)、網(wǎng)絡(luò)協(xié)調(diào)器節(jié)點(diǎn)及終端節(jié)點(diǎn)。其中網(wǎng)絡(luò)協(xié)調(diào)器節(jié)點(diǎn)是唯一的,由它來組織該網(wǎng)絡(luò)的形成,而路由節(jié)點(diǎn)則作為數(shù)據(jù)傳輸?shù)闹修D(zhuǎn)站,可以進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)和網(wǎng)絡(luò)的擴(kuò)展,終端節(jié)點(diǎn)則一般用于信號的采集與處理[5]。
在網(wǎng)絡(luò)拓?fù)渲械氖殖纸K端機(jī)需裝載ZigBee硬件模塊,這樣當(dāng)終端進(jìn)入網(wǎng)絡(luò)并鑒權(quán)后可以和接入到ZigBee網(wǎng)絡(luò)中的煤氣炮、攔鳥網(wǎng)、鈦雷炮、二踢腳以及語音驅(qū)鳥器等設(shè)備進(jìn)行通信,發(fā)送控制命令即可控制設(shè)備的啟動與關(guān)閉,幫助場務(wù)人員及時(shí)作出驅(qū)趕動作?;緞t通過無線通信網(wǎng)絡(luò)和上位機(jī)進(jìn)行通信,將命令信息接收、解析、處理后,經(jīng)由ZigBee網(wǎng)絡(luò)下發(fā)到相關(guān)的驅(qū)鳥設(shè)備。此外,煤氣炮、攔鳥網(wǎng)、鈦雷炮、二踢腳以及語音驅(qū)鳥器等設(shè)備還能經(jīng)由ZigBee網(wǎng)絡(luò)傳輸?shù)交荆蠄?bào)自身的狀態(tài)信息。當(dāng)基站接收到信息后便對其進(jìn)行解析處理,然后再通過短波網(wǎng)絡(luò)上傳至上位機(jī)。上位機(jī)根據(jù)上報(bào)的狀態(tài)信息,在線反饋場內(nèi)各設(shè)備的狀態(tài),若有異常,則會作出警示,提醒場務(wù)人員及時(shí)維修設(shè)備。中繼作為信號傳輸?shù)闹虚g節(jié)點(diǎn),它能避免信息的重復(fù)發(fā)送所造成的線路堵塞。
為了使基于物聯(lián)網(wǎng)的機(jī)場驅(qū)鳥聯(lián)動系統(tǒng)更加人性化,有必要?jiǎng)?chuàng)建可視化的機(jī)場鳥情監(jiān)控系統(tǒng)軟件。根據(jù)場站驅(qū)鳥人員的需求,并以觀測到的鳥情數(shù)據(jù)(含鳥類體形特征、圖片、生活習(xí)性、飛行高度、羽毛特征、危害等級等)作為數(shù)據(jù)庫的數(shù)據(jù)源建立數(shù)據(jù)庫,并設(shè)計(jì)、開發(fā)該系統(tǒng)。考慮到項(xiàng)目后期還需開發(fā)便攜式的移動設(shè)備軟件,故開發(fā)工具采用了QT 5.7.0+ACCESS 2010的方案,以便開發(fā)出一個(gè)界面簡單、易用,移植性、擴(kuò)展性和維護(hù)性良好的機(jī)場驅(qū)鳥聯(lián)動系統(tǒng)上位機(jī)軟件。根據(jù)用戶提出的要求,系統(tǒng)設(shè)計(jì)界面如圖2所示,其代碼如下:
MainWindow::MainWindow(QWidget*parent):
QMainWindow(parent),
ui(new Ui::MainWindow)
{
……
//創(chuàng)建串口對象
set_connection=new set_serial(com);
set_connection->close();
//設(shè)置窗體模態(tài)
set_connection->setWindowModality(Qt::ApplicationModal);
//設(shè)置鳥情查詢對象
bird_search_pointer=new bird_search(this,db);
bird_search_pointer->close();
//設(shè)置設(shè)備控制對象
devices_pointer=new devices1(this);
devices_pointer->close();
……
//設(shè)置窗口標(biāo)簽
ui->function_tabWidget->setTabText(0,tr(″聯(lián)動驅(qū)鳥″));
ui->function_tabWidget->removeTab(1);
ui->function_tabWidget->addTab(bird_distribution_pointer,
tr(″鳥類分布″));
ui->function_tabWidget->addTab(devices_pointer,tr(″聯(lián)動驅(qū)鳥″));
ui->function_tabWidget->addTab(bird_search_pointer,tr(″鳥類查詢″));
//設(shè)置窗口標(biāo)簽隱藏
ui->function_tabWidget->setTabEnabled(1,false);
ui->function_tabWidget->setStyleSheet(″QTabBar::tab:disabled{width:0;color:transparent;}″);
}

圖2 系統(tǒng)軟件設(shè)備界面
根據(jù)廣州民航職業(yè)技術(shù)學(xué)院鳥擊防災(zāi)應(yīng)用技術(shù)研究中心與中國空軍某部的長期合作與調(diào)查發(fā)現(xiàn),該機(jī)場共計(jì)有38種鳥類涉場,其中包括白鷺、牛背鷺、綠翅鴨、鵲鷂、紅隼、斑鳩等鳥類,相關(guān)鳥類圖片如圖3所示。

圖3 涉場鳥類圖片
Qt對數(shù)據(jù)庫的操作主要是通過QtSql模塊來進(jìn)行,故在項(xiàng)目文件(.pro文件)中需要添加一行代碼“QT+=sql”,這樣才能使用數(shù)據(jù)庫模塊。為了能在主窗口中讀取數(shù)據(jù)庫里面的數(shù)據(jù),可以先創(chuàng)建一個(gè)相關(guān)的數(shù)據(jù)庫類,然后在主窗口中將其實(shí)例化。數(shù)據(jù)庫的類實(shí)現(xiàn)代碼如下:
data_base::data_base(QObject*parent):QObject(parent)
{
db=&QSqlDatabase::addDatabase(″QODBC″);
//設(shè)置數(shù)據(jù)庫驅(qū)動
db->setDatabaseName(″connectDatabase″);
//打開數(shù)據(jù)庫
bool ok=db->open();
if(!ok)
……
else
{
……
row=new QSqlRecord();
model=new QSqlTableModel(this,*db);
model->setTable(″BirdInfo″);
model->setSort(0,Qt::AscendingOrder);
//設(shè)置模型對應(yīng)項(xiàng)
model->setHeaderData(1,Qt::Horizontal,tr(″中文名″));
model->setHeaderData(2,Qt::Horizontal,tr(″英文名″));
model->setHeaderData(3,Qt::Horizontal,tr(″危害等級″));
model->setHeaderData(7,Qt::Horizontal,tr(″最低飛行高度″));
model->setHeaderData(8,Qt::Horizontal,tr(″最高飛行高度″));
model->setHeaderData(10,Qt::Horizontal,tr(″備注″));
model->setHeaderData(11,Qt::Horizontal,tr(″集群類型″));
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
……
}
}
Qt寫的程序作為上位機(jī)軟件,如果需要通過USB與下位機(jī)通信,就得用到Qt中的串口通信。串口是上位機(jī)與下位機(jī)連接的橋梁,故其設(shè)計(jì)在一定程度上關(guān)系到了項(xiàng)目的成敗。為了在主窗口中能與下位機(jī)進(jìn)行通信,可以先創(chuàng)建一個(gè)QSerialPort的串口對象,然后對其進(jìn)行操作。本系統(tǒng)提供給了用戶兩種連接方式,分別是自動連接和手動連接,其中手動連接代碼如下:
bool communication_layer::auto_connect_cood(){
……
//此處為串口自動識別
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
……
serial->setPort(info);
if(serial->open(QIODevice::ReadWrite))
{
//設(shè)置波特率
serial->setBaudRate(115200);
//設(shè)置數(shù)據(jù)位
serial->setDataBits(QSerialPort::Data8);
//設(shè)置校驗(yàn)位
serial->setParity(QSerialPort::QSerialPort:: OddParity);
//設(shè)置流控制
serial->setFlowControl(QSerialPort:: NoFlowControl);
//設(shè)置停止位
serial->setStopBits(QSerialPort::OneStop);
……
state=true;
connection_state=true;
//發(fā)送連接成功信號
emit zigbee_connected_sig();
……
}
else
……
return state;
}
上位機(jī)與下位機(jī)之間所交換的消息即為主機(jī)發(fā)送的設(shè)備開啟命令和從機(jī)發(fā)送的設(shè)備狀態(tài)信息,伴隨著場內(nèi)設(shè)備掛載個(gè)數(shù)的增加,傳感器的采集數(shù)據(jù)也成倍地增加。大量的數(shù)據(jù)定會帶來CPU占用率提高、內(nèi)存開銷大等問題,為了避免項(xiàng)目后期出現(xiàn)瓶頸,從而導(dǎo)致硬件成本的成倍增加,因此在消息處理模塊的設(shè)計(jì)上參考了4G移動通信的編解碼方式,即ASN.1編解碼。
ASN.1的編碼規(guī)則包括CER(規(guī)范編碼規(guī)則)、BER(基本編碼規(guī)則)、PER(壓縮編碼規(guī)則)等。盡管編碼規(guī)則不同,但通信雙方卻無需再考慮設(shè)備類型、程序設(shè)計(jì)語言及其在程序中的表示等問題,大大提高了可移植性。ASN.1最大的特點(diǎn)是其編碼支持在無線寬帶中可擴(kuò)展且信息快速可靠的傳輸[6],這一特性非常符合本項(xiàng)目的要求,因此在項(xiàng)目中引入該編解碼技術(shù)。
其中PER是在BER的基礎(chǔ)上所設(shè)計(jì)的一種ASN.1編碼規(guī)則,它的優(yōu)勢是可以有效地減少消息的編解碼開銷??紤]到項(xiàng)目后期的數(shù)據(jù)量開銷逐漸增加,系統(tǒng)采用了PER編碼規(guī)則。PER編碼結(jié)構(gòu)如圖4所示,其實(shí)質(zhì)即為“按需嵌套編碼”結(jié)構(gòu),當(dāng)有需要傳送相關(guān)信息時(shí)再分配資源,這樣可以有效減少硬件開銷,為后期項(xiàng)目的升級奠定基礎(chǔ)。

圖4 PER編碼結(jié)構(gòu)圖
根據(jù)ASN.1編解碼規(guī)則,可設(shè)計(jì)如表1所示的編碼規(guī)則,其中數(shù)據(jù)頭和尾使用char類型,命令與數(shù)據(jù)用了typedef型,并且用“int bits_unused”來指示二進(jìn)制位串中沒有使用到的二進(jìn)制位數(shù)。

表1 ASN.1轉(zhuǎn)換規(guī)則
1) 數(shù)據(jù)庫連接測試。如圖5所示,在主界面通過查詢功能可以準(zhǔn)確地查詢本場的涉鳥信息,幫助場務(wù)人員更好地做出判斷。

圖5 鳥類信息查詢成功圖
2) 通信接口測試。當(dāng)USB線與下位機(jī)連接好后,在主界面通過串口連接功能實(shí)現(xiàn)軟件上的連接。開啟相應(yīng)的設(shè)備后,可在串口打印窗口觀察到發(fā)送命令數(shù)據(jù),這表明串口已正常工作,并且能與下位機(jī)通信。當(dāng)USB與下位機(jī)斷開連接后,在軟件上無法實(shí)現(xiàn)軟件連接,這符合預(yù)期。如圖6所示。


圖6 通信接口測試圖
3) 效果對比測試。系統(tǒng)搭建好后,需對系統(tǒng)作出客觀的綜合測試評估,以得出使用該系統(tǒng)后驅(qū)鳥效果的提高率。為了能更好地觀測,觀察人員配備了高倍單筒望遠(yuǎn)鏡、測距儀、攝像機(jī)、夜視儀等,在機(jī)場不同功能區(qū)安排對應(yīng)的工作人員蹲點(diǎn)觀察記錄,得到如表2所示的觀測結(jié)果。由表2可知使用了智能化驅(qū)鳥系統(tǒng)后對場內(nèi)常見的涉場鳥類有不錯(cuò)的效果提升。

表2 系統(tǒng)效果評估
本文對機(jī)場智能驅(qū)鳥系統(tǒng)的上位機(jī)進(jìn)行了設(shè)計(jì)與實(shí)現(xiàn),并針對其以往在設(shè)備量增加后數(shù)據(jù)量急劇增加的問題上提出了幾點(diǎn)改進(jìn)方法。最后通過測試結(jié)果驗(yàn)證了這些方法的有效性,對今后系統(tǒng)掛載更多的驅(qū)鳥設(shè)備具有重要意義。在下一步工作中,將結(jié)合深度學(xué)習(xí)方法,探尋系統(tǒng)的智慧底線,幫助機(jī)場切實(shí)做好安全保障工作。