王麗俠
(唐山學(xué)院 智能與信息工程學(xué)院,河北 唐山 063000)
無人駕駛智能車也叫無人車,是指在車內(nèi)沒有駕駛員的情況下,通過無線遙控或者自身程序來控制汽車的行駛狀態(tài)和路徑線路等狀態(tài)參數(shù),從而實(shí)現(xiàn)無人駕駛[1]。無人車具有廣泛的應(yīng)用前景,它在智能交通系統(tǒng)上的應(yīng)用是最典型的,不僅能適應(yīng)天氣的變化,還能減少交通事故的發(fā)生。無人車在軍事上也具有重要作用,例如它可以在危險(xiǎn)的核武器和生物化學(xué)污染過的地區(qū)進(jìn)行巡邏和偵查,提高搜索的精確度,提高辦事的效率。在農(nóng)業(yè)上,無人車可以用來進(jìn)行精細(xì)作業(yè)。因此,無人車的研發(fā)顯得十分的必要和迫切。
目前,在無人車的路徑導(dǎo)航方面取得了巨大的研究進(jìn)展。如麻省理工學(xué)院的無人車研發(fā)團(tuán)隊(duì)在運(yùn)動規(guī)劃系統(tǒng)中引入RRT算法,以提高其避障能力[2];西安交通大學(xué)的馬亮博士針對無人駕駛車輛的運(yùn)動規(guī)劃問題,提出了一種變形RRT算法[3];文獻(xiàn)[4]提出了一種基于地圖匹配的宏觀定位和基于環(huán)境感知的微觀定位相結(jié)合的綜合定位方法,該方法實(shí)現(xiàn)了車輛在局部地圖中的全局精確定位。
本設(shè)計(jì)將基于全球定位系統(tǒng)GPS和百度地圖API進(jìn)行無人車控制系統(tǒng)的設(shè)計(jì),通過無線串口模塊使監(jiān)控站與無人車進(jìn)行信息交互,從而實(shí)現(xiàn)對無人車的導(dǎo)航控制。
無人車導(dǎo)航控制系統(tǒng)分為無人車導(dǎo)航終端和監(jiān)控站兩部分。無人車導(dǎo)航終端以STM32F407為控制核心,并通過雙串口分別與無線傳輸模塊和GPS模塊連接,由此搭建無人車底層硬件平臺,無人車通過433 MHz的無線收發(fā)模塊與上位機(jī)監(jiān)控平臺進(jìn)行數(shù)據(jù)的無線傳輸。監(jiān)控站運(yùn)行于普通用戶配置的PC機(jī),由C#語言編程實(shí)現(xiàn),監(jiān)控站軟件人機(jī)界面通過加載百度地圖的方式,將無人車的路徑信息進(jìn)行實(shí)時顯示與跟蹤,并進(jìn)行路線規(guī)劃與控制。
無人車總體設(shè)計(jì)框圖如圖1所示。
圖1 無人車總體設(shè)計(jì)框圖
本設(shè)計(jì)使用的無人車導(dǎo)航終端由STM32F407單片機(jī)模塊、L298N電機(jī)驅(qū)動模塊、無線串口模塊和GPS模塊四部分組成。L298N電機(jī)驅(qū)動模塊可以提高電機(jī)的運(yùn)轉(zhuǎn)速速,從而帶動整個智能車的行駛。單片機(jī)STM32F407通過串口1連接無線傳輸模塊,用來和監(jiān)控站進(jìn)行數(shù)據(jù)傳輸;串口2連接GPS模塊,用來獲取定位信息,以進(jìn)一步上傳給監(jiān)控站進(jìn)行顯示。監(jiān)控站通過無線傳輸模塊發(fā)送控制指令信息給無人車,使無人車按規(guī)定路線行駛。
在無人車的設(shè)計(jì)中,STM32F407單片機(jī)通過GPIOB的PB1和PB2引腳控制左電機(jī),通過PB3和PB4引腳控制右電機(jī)。當(dāng)PBout(1)、PBout(2)、PBout(3)、PBout(4)均輸出為10,01或00時,對應(yīng)無人車前進(jìn)、后退或停止;當(dāng)PBout(1)、PBout(2)、PBout(3)、PBout(4)輸出為1001時,無人車右轉(zhuǎn);當(dāng)PBout(1)、PBout(2)、PBout(3)、PBout(4)輸出為0110時,無人車左轉(zhuǎn)。
無線串口模塊為成都億佰特公司生產(chǎn)的E31-TTL-50,這是一款基于AX5043射頻芯片的直插型無線串口模塊,半雙工,使用433 MHz默認(rèn)工作頻率,它具有抗干擾能力超強(qiáng)、編碼效率高、可加密等特點(diǎn)。設(shè)計(jì)中,無線模塊采用方式0,M0和M1,均接地,其RXD和TXD分別連接STM32F407單片機(jī)的UART1的PA9和PA10。
本設(shè)計(jì)GPS模塊采用U-BLOX系列中的NEO-6M芯片,考慮到無源陶瓷天線在室內(nèi)的定位速度較慢,而有源天線定位速度較快,所以將GPS模塊配合有源天線來使用,以快速獲取定位信息。模塊默認(rèn)波特率為9 600[5]。其中,模塊的TXD發(fā)送引腳和RXD接收引腳分別與STM32單片機(jī)UART2的PA3(UART2_RXD)和PA2(UART2_TXD)連接。模塊通過固定的幀格式傳遞GPS定位信息,通過編程實(shí)現(xiàn)無人車的位置信息的獲取。
2.2.1 無人車行駛設(shè)計(jì)
在行駛設(shè)計(jì)中,定義了控制電機(jī)的4個引腳,并編寫了5個函數(shù),分別為前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和中止函數(shù),來控制無人車。當(dāng)無人車接收到監(jiān)控站發(fā)送的指令后,先對指令進(jìn)行識別,判斷發(fā)送的是哪種控制信息,調(diào)用相應(yīng)函數(shù)。無人車行駛設(shè)計(jì)的流程圖如圖2所示。
2.2.2 GPS定位設(shè)計(jì)
從監(jiān)控站實(shí)時觀察無人車的位置,首先需要通過GPS模塊來獲取無人車的位置信息。GPS開始定位后,先把位置信息通過串口2發(fā)送給單片機(jī),單片機(jī)收到后,再通過串口1發(fā)送給監(jiān)控站。監(jiān)控站收到無人車的經(jīng)緯度坐標(biāo)后,在百度地圖上顯示其位置。
圖2 無人車行駛設(shè)計(jì)流程圖
GPS數(shù)據(jù)傳送的流程圖如圖3所示。
圖3 GPS數(shù)據(jù)傳送流程圖
監(jiān)控站軟件設(shè)計(jì)基于Visual Studio 2013平臺,使用C#語言和JavaScript腳本語言編程,結(jié)合百度地圖API二次開發(fā)來實(shí)現(xiàn)。
在Visual Studio 2013中使用SerialPort控件來進(jìn)行串口通信,流程圖如圖4所示。
圖4 串口通信流程圖
監(jiān)控站軟件運(yùn)行后,自動調(diào)用GetPortNames()函數(shù),將已連接的端口號顯示在Combobox的下拉列表中,工作人員匹配端口號,設(shè)置波特率、數(shù)據(jù)位、停止位和校驗(yàn)位信息,設(shè)置正確后,監(jiān)控站和無人車即可進(jìn)行通信,從而控制無人車行駛及進(jìn)行路徑信息的顯示。
將百度地圖嵌入監(jiān)控站界面,既可以顯示出無人車的當(dāng)前位置,也可以對無人車行駛路線進(jìn)行規(guī)劃。要想實(shí)現(xiàn)這個功能需要借助.NET下的WebBrowser控件。
在監(jiān)控站窗體中從工具箱中拖入WebBrowser控件,用來加載百度地圖API的本地網(wǎng)頁文件,進(jìn)而顯示百度地圖。此時必須在Ground窗體From中添加一個Load事件,并加入以下代碼:
private void Ground_Load(object sender,EventArgs e)
{string str_url=Application.StartupPath+"BMap.htm";
Uri url=new Uri(str_url);
webBrowser1.Url=url;
webBrowser1.ObjectForScripting=this;
}
Form窗體的Load事件的實(shí)現(xiàn):當(dāng)打開監(jiān)控站的界面時,自動與百度地圖的服務(wù)器建立連接,將地圖顯示在界面中。百度地圖調(diào)用流程圖如圖5所示。
加載地圖后,基于百度地圖的二次開發(fā)可實(shí)現(xiàn)路線規(guī)劃和路線顯示的擴(kuò)展功能。路線規(guī)劃即為在導(dǎo)航軟件中將無人車的路線繪制出來,提取出經(jīng)緯度信息及速度信息,通過無線串口模塊發(fā)送給無人車,使無人車按照既定路線行駛;路線顯示即無人車將路線發(fā)送到導(dǎo)航軟件中并顯示到地圖上,使操作者對無人車的行駛軌跡有所了解,從而能夠判斷其運(yùn)行情況。
圖5 百度地圖調(diào)用流程圖
監(jiān)控站界面運(yùn)行后,設(shè)置串口通信的相關(guān)參數(shù),打開串口,準(zhǔn)備收發(fā)數(shù)據(jù)。無人車將行駛過程中的位置信息以經(jīng)緯度的形式實(shí)時上報(bào),并顯示在百度地圖中。同時,通過界面控制無人車的行駛路線,實(shí)現(xiàn)跟蹤、定位的功能,如圖6所示。界面右側(cè)加載百度地圖,地圖中紅色線為規(guī)劃路線,路線的經(jīng)緯度信息以列表形式顯示在地圖左側(cè),點(diǎn)擊發(fā)送按鈕即可發(fā)送至無人車;藍(lán)色線為實(shí)際行駛路線,可通過生成經(jīng)緯度查看其經(jīng)緯度列表;同時界面還可以顯示行駛速度及當(dāng)前位置坐標(biāo)等。
圖6 無人車導(dǎo)航系統(tǒng)監(jiān)控站運(yùn)行界面
本文完成了無人車導(dǎo)航終端硬件和軟件設(shè)計(jì)及監(jiān)控站軟件設(shè)計(jì)。經(jīng)實(shí)驗(yàn)測試,監(jiān)控站導(dǎo)航界面交互性良好,且與無人車的信息交互穩(wěn)定、可靠,實(shí)時性強(qiáng),系統(tǒng)拓展性良好,具有一定的實(shí)用價值。