陳裕通 劉玉芬 陳裕芹 劉立程
1(廣州民航職業(yè)技術(shù)學(xué)院 廣東 廣州 510403) 2(中國(guó)民航大學(xué)電子信息與自動(dòng)化學(xué)院 天津 300300) 3(廣東工業(yè)大學(xué)信息工程學(xué)院 廣東 廣州 510000)
鳥(niǎo)擊又稱鳥(niǎo)撞,即飛機(jī)與鳥(niǎo)兒碰撞后所造成的事故[1]。鳥(niǎo)擊的特點(diǎn)是多變性和突發(fā)性,其不僅影響航班的正常秩序,還給人類的生命財(cái)產(chǎn)安全帶來(lái)隱患。輕微的鳥(niǎo)撞可導(dǎo)致飛機(jī)部件損壞而引起飛行事故,而嚴(yán)重的鳥(niǎo)撞則會(huì)造成機(jī)毀人亡[2]。由此可見(jiàn),無(wú)論是從鳥(niǎo)擊對(duì)飛機(jī)造成的危害角度,還是從其發(fā)展趨勢(shì)來(lái)說(shuō),鳥(niǎo)擊事件都是不容忽視的,必須尋找有效的辦法遏制此類事件的發(fā)生,即如何做到“高效驅(qū)鳥(niǎo)”,將驅(qū)鳥(niǎo)現(xiàn)狀從“被動(dòng)”轉(zhuǎn)變?yōu)椤爸鲃?dòng)”。
針對(duì)這一問(wèn)題,并在軍民融合的大背景下,本文提出了構(gòu)建基于物聯(lián)網(wǎng)的驅(qū)鳥(niǎo)系統(tǒng),并在其基礎(chǔ)上引入深度學(xué)習(xí)技術(shù),賦予系統(tǒng)以“智慧”,解放機(jī)場(chǎng)場(chǎng)務(wù)人員。
組建基于物聯(lián)網(wǎng)的機(jī)場(chǎng)驅(qū)鳥(niǎo)聯(lián)動(dòng)系統(tǒng)網(wǎng)絡(luò)的主要目的是為了給機(jī)場(chǎng)現(xiàn)有驅(qū)鳥(niǎo)設(shè)備提供網(wǎng)絡(luò)支持,是搭建可遠(yuǎn)程控制的機(jī)場(chǎng)驅(qū)鳥(niǎo)聯(lián)動(dòng)系統(tǒng)平臺(tái)的硬件基礎(chǔ),也是核心的部分。根據(jù)機(jī)場(chǎng)場(chǎng)務(wù)人員提出的需求,結(jié)合無(wú)線通信技術(shù),設(shè)計(jì)了如圖1所示的系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。在拓?fù)浣Y(jié)構(gòu)中,主要包含了無(wú)線短波網(wǎng)絡(luò)與Zigbee網(wǎng)絡(luò),二者混合組網(wǎng)并覆蓋整個(gè)機(jī)場(chǎng)區(qū)域,最后將煤氣炮、鈦雷炮、二踢腳、攔鳥(niǎo)網(wǎng)及語(yǔ)音驅(qū)鳥(niǎo)器加入到無(wú)線網(wǎng)絡(luò)中,構(gòu)成一個(gè)完整的鳥(niǎo)情信息查詢、聯(lián)動(dòng)驅(qū)鳥(niǎo)及鳥(niǎo)類分布的智能系統(tǒng)。
圖1 系統(tǒng)架構(gòu)示意圖
ZigBee為基于IEEE802.15.4協(xié)議標(biāo)準(zhǔn)的[3]通信技術(shù),是當(dāng)前無(wú)線通信領(lǐng)域內(nèi)的研究熱點(diǎn),其特點(diǎn)是短時(shí)延、低功耗、低成本等,這些特點(diǎn)非常符合項(xiàng)目的要求,故選用了ZigBee作為第一層網(wǎng)絡(luò)的通信方式[4]。
在無(wú)線傳感器網(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)是唯一的,由它來(lái)組織該網(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)則一般用于信號(hào)的采集與處理[5]。
在網(wǎng)絡(luò)拓?fù)渲械氖殖纸K端機(jī)需裝載ZigBee硬件模塊,這樣當(dāng)終端進(jìn)入網(wǎng)絡(luò)并鑒權(quán)后可以和接入到ZigBee網(wǎng)絡(luò)中的煤氣炮、攔鳥(niǎo)網(wǎng)、鈦雷炮、二踢腳以及語(yǔ)音驅(qū)鳥(niǎo)器等設(shè)備進(jìn)行通信,發(fā)送控制命令即可控制設(shè)備的啟動(dòng)與關(guān)閉,幫助場(chǎng)務(wù)人員及時(shí)作出驅(qū)趕動(dòng)作?;緞t通過(guò)無(wú)線通信網(wǎng)絡(luò)和上位機(jī)進(jìn)行通信,將命令信息接收、解析、處理后,經(jīng)由ZigBee網(wǎng)絡(luò)下發(fā)到相關(guān)的驅(qū)鳥(niǎo)設(shè)備。此外,煤氣炮、攔鳥(niǎo)網(wǎng)、鈦雷炮、二踢腳以及語(yǔ)音驅(qū)鳥(niǎo)器等設(shè)備還能經(jīng)由ZigBee網(wǎng)絡(luò)傳輸?shù)交荆蠄?bào)自身的狀態(tài)信息。當(dāng)基站接收到信息后便對(duì)其進(jìn)行解析處理,然后再通過(guò)短波網(wǎng)絡(luò)上傳至上位機(jī)。上位機(jī)根據(jù)上報(bào)的狀態(tài)信息,在線反饋場(chǎng)內(nèi)各設(shè)備的狀態(tài),若有異常,則會(huì)作出警示,提醒場(chǎng)務(wù)人員及時(shí)維修設(shè)備。中繼作為信號(hào)傳輸?shù)闹虚g節(jié)點(diǎn),它能避免信息的重復(fù)發(fā)送所造成的線路堵塞。
為了使基于物聯(lián)網(wǎng)的機(jī)場(chǎng)驅(qū)鳥(niǎo)聯(lián)動(dòng)系統(tǒng)更加人性化,有必要?jiǎng)?chuàng)建可視化的機(jī)場(chǎng)鳥(niǎo)情監(jiān)控系統(tǒng)軟件。根據(jù)場(chǎng)站驅(qū)鳥(niǎo)人員的需求,并以觀測(cè)到的鳥(niǎo)情數(shù)據(jù)(含鳥(niǎo)類體形特征、圖片、生活習(xí)性、飛行高度、羽毛特征、危害等級(jí)等)作為數(shù)據(jù)庫(kù)的數(shù)據(jù)源建立數(shù)據(jù)庫(kù),并設(shè)計(jì)、開(kāi)發(fā)該系統(tǒng)??紤]到項(xiàng)目后期還需開(kāi)發(fā)便攜式的移動(dòng)設(shè)備軟件,故開(kāi)發(fā)工具采用了QT 5.7.0+ACCESS 2010的方案,以便開(kāi)發(fā)出一個(gè)界面簡(jiǎn)單、易用,移植性、擴(kuò)展性和維護(hù)性良好的機(jī)場(chǎng)驅(qū)鳥(niǎo)聯(lián)動(dòng)系統(tǒng)上位機(jī)軟件。根據(jù)用戶提出的要求,系統(tǒng)設(shè)計(jì)界面如圖2所示,其代碼如下:
MainWindow::MainWindow(QWidget*parent):
QMainWindow(parent),
ui(new Ui::MainWindow)
{
……
//創(chuàng)建串口對(duì)象
set_connection=new set_serial(com);
set_connection->close();
//設(shè)置窗體模態(tài)
set_connection->setWindowModality(Qt::ApplicationModal);
//設(shè)置鳥(niǎo)情查詢對(duì)象
bird_search_pointer=new bird_search(this,db);
bird_search_pointer->close();
//設(shè)置設(shè)備控制對(duì)象
devices_pointer=new devices1(this);
devices_pointer->close();
……
//設(shè)置窗口標(biāo)簽
ui->function_tabWidget->setTabText(0,tr(″聯(lián)動(dòng)驅(qū)鳥(niǎo)″));
ui->function_tabWidget->removeTab(1);
ui->function_tabWidget->addTab(bird_distribution_pointer,
tr(″鳥(niǎo)類分布″));
ui->function_tabWidget->addTab(devices_pointer,tr(″聯(lián)動(dòng)驅(qū)鳥(niǎo)″));
ui->function_tabWidget->addTab(bird_search_pointer,tr(″鳥(niǎo)類查詢″));
//設(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é)院鳥(niǎo)擊防災(zāi)應(yīng)用技術(shù)研究中心與中國(guó)空軍某部的長(zhǎng)期合作與調(diào)查發(fā)現(xiàn),該機(jī)場(chǎng)共計(jì)有38種鳥(niǎo)類涉場(chǎng),其中包括白鷺、牛背鷺、綠翅鴨、鵲鷂、紅隼、斑鳩等鳥(niǎo)類,相關(guān)鳥(niǎo)類圖片如圖3所示。
圖3 涉場(chǎng)鳥(niǎo)類圖片
Qt對(duì)數(shù)據(jù)庫(kù)的操作主要是通過(guò)QtSql模塊來(lái)進(jìn)行,故在項(xiàng)目文件(.pro文件)中需要添加一行代碼“QT+=sql”,這樣才能使用數(shù)據(jù)庫(kù)模塊。為了能在主窗口中讀取數(shù)據(jù)庫(kù)里面的數(shù)據(jù),可以先創(chuàng)建一個(gè)相關(guān)的數(shù)據(jù)庫(kù)類,然后在主窗口中將其實(shí)例化。數(shù)據(jù)庫(kù)的類實(shí)現(xiàn)代碼如下:
data_base::data_base(QObject*parent):QObject(parent)
{
db=&QSqlDatabase::addDatabase(″QODBC″);
//設(shè)置數(shù)據(jù)庫(kù)驅(qū)動(dòng)
db->setDatabaseName(″connectDatabase″);
//打開(kāi)數(shù)據(jù)庫(kù)
bool ok=db->open();
if(!ok)
……
else
{
……
row=new QSqlRecord();
model=new QSqlTableModel(this,*db);
model->setTable(″BirdInfo″);
model->setSort(0,Qt::AscendingOrder);
//設(shè)置模型對(duì)應(yīng)項(xiàng)
model->setHeaderData(1,Qt::Horizontal,tr(″中文名″));
model->setHeaderData(2,Qt::Horizontal,tr(″英文名″));
model->setHeaderData(3,Qt::Horizontal,tr(″危害等級(jí)″));
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寫(xiě)的程序作為上位機(jī)軟件,如果需要通過(guò)USB與下位機(jī)通信,就得用到Qt中的串口通信。串口是上位機(jī)與下位機(jī)連接的橋梁,故其設(shè)計(jì)在一定程度上關(guān)系到了項(xiàng)目的成敗。為了在主窗口中能與下位機(jī)進(jìn)行通信,可以先創(chuàng)建一個(gè)QSerialPort的串口對(duì)象,然后對(duì)其進(jìn)行操作。本系統(tǒng)提供給了用戶兩種連接方式,分別是自動(dòng)連接和手動(dòng)連接,其中手動(dòng)連接代碼如下:
bool communication_layer::auto_connect_cood(){
……
//此處為串口自動(dòng)識(shí)別
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ā)送連接成功信號(hào)
emit zigbee_connected_sig();
……
}
else
……
return state;
}
上位機(jī)與下位機(jī)之間所交換的消息即為主機(jī)發(fā)送的設(shè)備開(kāi)啟命令和從機(jī)發(fā)送的設(shè)備狀態(tài)信息,伴隨著場(chǎng)內(nèi)設(shè)備掛載個(gè)數(shù)的增加,傳感器的采集數(shù)據(jù)也成倍地增加。大量的數(shù)據(jù)定會(huì)帶來(lái)CPU占用率提高、內(nèi)存開(kāi)銷大等問(wèn)題,為了避免項(xiàng)目后期出現(xiàn)瓶頸,從而導(dǎo)致硬件成本的成倍增加,因此在消息處理模塊的設(shè)計(jì)上參考了4G移動(dòng)通信的編解碼方式,即ASN.1編解碼。
ASN.1的編碼規(guī)則包括CER(規(guī)范編碼規(guī)則)、BER(基本編碼規(guī)則)、PER(壓縮編碼規(guī)則)等。盡管編碼規(guī)則不同,但通信雙方卻無(wú)需再考慮設(shè)備類型、程序設(shè)計(jì)語(yǔ)言及其在程序中的表示等問(wèn)題,大大提高了可移植性。ASN.1最大的特點(diǎn)是其編碼支持在無(wú)線寬帶中可擴(kuò)展且信息快速可靠的傳輸[6],這一特性非常符合本項(xiàng)目的要求,因此在項(xiàng)目中引入該編解碼技術(shù)。
其中PER是在BER的基礎(chǔ)上所設(shè)計(jì)的一種ASN.1編碼規(guī)則,它的優(yōu)勢(shì)是可以有效地減少消息的編解碼開(kāi)銷??紤]到項(xiàng)目后期的數(shù)據(jù)量開(kāi)銷逐漸增加,系統(tǒng)采用了PER編碼規(guī)則。PER編碼結(jié)構(gòu)如圖4所示,其實(shí)質(zhì)即為“按需嵌套編碼”結(jié)構(gòu),當(dāng)有需要傳送相關(guān)信息時(shí)再分配資源,這樣可以有效減少硬件開(kāi)銷,為后期項(xiàng)目的升級(jí)奠定基礎(chǔ)。
圖4 PER編碼結(jié)構(gòu)圖
根據(jù)ASN.1編解碼規(guī)則,可設(shè)計(jì)如表1所示的編碼規(guī)則,其中數(shù)據(jù)頭和尾使用char類型,命令與數(shù)據(jù)用了typedef型,并且用“int bits_unused”來(lái)指示二進(jìn)制位串中沒(méi)有使用到的二進(jìn)制位數(shù)。
表1 ASN.1轉(zhuǎn)換規(guī)則
1) 數(shù)據(jù)庫(kù)連接測(cè)試。如圖5所示,在主界面通過(guò)查詢功能可以準(zhǔn)確地查詢本場(chǎng)的涉鳥(niǎo)信息,幫助場(chǎng)務(wù)人員更好地做出判斷。
圖5 鳥(niǎo)類信息查詢成功圖
2) 通信接口測(cè)試。當(dāng)USB線與下位機(jī)連接好后,在主界面通過(guò)串口連接功能實(shí)現(xiàn)軟件上的連接。開(kāi)啟相應(yīng)的設(shè)備后,可在串口打印窗口觀察到發(fā)送命令數(shù)據(jù),這表明串口已正常工作,并且能與下位機(jī)通信。當(dāng)USB與下位機(jī)斷開(kāi)連接后,在軟件上無(wú)法實(shí)現(xiàn)軟件連接,這符合預(yù)期。如圖6所示。
圖6 通信接口測(cè)試圖
3) 效果對(duì)比測(cè)試。系統(tǒng)搭建好后,需對(duì)系統(tǒng)作出客觀的綜合測(cè)試評(píng)估,以得出使用該系統(tǒng)后驅(qū)鳥(niǎo)效果的提高率。為了能更好地觀測(cè),觀察人員配備了高倍單筒望遠(yuǎn)鏡、測(cè)距儀、攝像機(jī)、夜視儀等,在機(jī)場(chǎng)不同功能區(qū)安排對(duì)應(yīng)的工作人員蹲點(diǎn)觀察記錄,得到如表2所示的觀測(cè)結(jié)果。由表2可知使用了智能化驅(qū)鳥(niǎo)系統(tǒng)后對(duì)場(chǎng)內(nèi)常見(jiàn)的涉場(chǎng)鳥(niǎo)類有不錯(cuò)的效果提升。
表2 系統(tǒng)效果評(píng)估
本文對(duì)機(jī)場(chǎng)智能驅(qū)鳥(niǎo)系統(tǒng)的上位機(jī)進(jìn)行了設(shè)計(jì)與實(shí)現(xiàn),并針對(duì)其以往在設(shè)備量增加后數(shù)據(jù)量急劇增加的問(wèn)題上提出了幾點(diǎn)改進(jìn)方法。最后通過(guò)測(cè)試結(jié)果驗(yàn)證了這些方法的有效性,對(duì)今后系統(tǒng)掛載更多的驅(qū)鳥(niǎo)設(shè)備具有重要意義。在下一步工作中,將結(jié)合深度學(xué)習(xí)方法,探尋系統(tǒng)的智慧底線,幫助機(jī)場(chǎng)切實(shí)做好安全保障工作。