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

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

圖2 系統軟件設備界面
根據廣州民航職業技術學院鳥擊防災應用技術研究中心與中國空軍某部的長期合作與調查發現,該機場共計有38種鳥類涉場,其中包括白鷺、牛背鷺、綠翅鴨、鵲鷂、紅隼、斑鳩等鳥類,相關鳥類圖片如圖3所示。

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

圖4 PER編碼結構圖
根據ASN.1編解碼規則,可設計如表1所示的編碼規則,其中數據頭和尾使用char類型,命令與數據用了typedef型,并且用“int bits_unused”來指示二進制位串中沒有使用到的二進制位數。

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

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


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

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