国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于GPS的自主移動機器人導(dǎo)航定位系統(tǒng)的實現(xiàn)

2011-07-13 06:02:38宋玉龍常然然
電子設(shè)計工程 2011年20期
關(guān)鍵詞:經(jīng)緯度移動機器人串口

宋玉龍,常然然

(1.西北工業(yè)大學(xué) 電子信息學(xué)院 陜西 西安 710129;2.西北工業(yè)大學(xué) 管理學(xué)院 陜西 西安 710129)

移動機器人是一種在復(fù)雜的環(huán)境下工作的,具有自規(guī)劃、自組織、自適應(yīng)能力的機器人。在移動機器人的相關(guān)技術(shù)研究中,導(dǎo)航技術(shù)可以說是其核心技術(shù),也是其實現(xiàn)真正的智能化和完全的自主移動的關(guān)鍵技術(shù)。移動機器人的導(dǎo)航方式很多,有慣性導(dǎo)航、視覺導(dǎo)航、基于傳感器數(shù)據(jù)導(dǎo)航、衛(wèi)星導(dǎo)航等[1]。對于室外環(huán)境來說,GPS衛(wèi)星導(dǎo)航是首選,而且為了提高機器人導(dǎo)航定位精度以及應(yīng)變復(fù)雜環(huán)境的能力,可以與視覺導(dǎo)航和傳感器數(shù)據(jù)導(dǎo)航相結(jié)合,這樣機器人就可以獨立完成導(dǎo)盲、勘探、自動貨運等復(fù)雜任務(wù)。

這里我們讓機器人事先采集行進路徑上某些點的位置坐標(biāo)構(gòu)建路線,行進過程中實時獲取當(dāng)前坐標(biāo)和移動方向,并與構(gòu)建的路線作比較,從而指導(dǎo)機器人運動。

圖1 系統(tǒng)結(jié)構(gòu)Fig.1 System structure

1 系統(tǒng)介紹

2 硬件部分

如圖1所示,本系統(tǒng)采用以GPS導(dǎo)航為主,以攝像頭和超聲波傳感器為輔的方式來實現(xiàn)機器人的自主移動。不過要想自主移動,只有實時GPS導(dǎo)航數(shù)據(jù)是不夠的,機器人要到達某地還必須知道該目的地的位置,以及可走的路徑,這就需要有地圖作為參照??梢允褂镁哂薪?jīng)緯度信息的電子地圖來作匹配,也可以采用更簡單的辦法,即事先在行進路徑上用GPS接收裝置測得幾個點的經(jīng)緯度信息,從而構(gòu)成簡易的行進路線圖,這種方法適用于目的地比較固定且數(shù)量較少的情況。

本設(shè)計以Samsang公司的ARM芯片S3C6410為處理器,嵌入Windows CE 6.0操作系統(tǒng),外圍除了常用的顯示(LCD、LED)、接口(串口、USB接口、網(wǎng)絡(luò)接口、電源接口)資源外,還連接了GPS模塊(包括GPS天線)、攝像頭和超聲波傳感器。以這塊電路板作為機器人的上位機,綜合3個模塊獲取的數(shù)據(jù)來指導(dǎo)機器人的運動。下面將主要介紹GPS模塊部分。

2.1 GPS模塊簡介

采用廣州鑫圖科技有限公司的GPS模塊GS-91。這是一款體積小巧、高性能、低功耗的GPS引擎板,它使用SiRF Star III芯片組,可以一次跟蹤20顆衛(wèi)星,跟蹤靈敏度高達-159dBm。模塊具有兩個串口,4 MB的Flash,支持NMEA-0183數(shù)據(jù)格式輸出[2]。

2.2 應(yīng)用電路

圖2是GS-91模塊的應(yīng)用電路原理圖。其中,RXA是GS-91用于接收軟件指令的主要接收通道,TXA是用于輸出導(dǎo)航和測量數(shù)據(jù)的主要發(fā)送通道。

2.3 輸出電文格式[3]

GS-91模塊導(dǎo)航數(shù)據(jù)輸出采用NMEA-0183標(biāo)準(zhǔn),它是由 NMEA(National Marine Electronics Association,美國國家海事電子協(xié)會)于1983年制定的。NMEA-0183數(shù)據(jù)采用ASCII標(biāo)準(zhǔn)。數(shù)據(jù)傳輸以“語句”的方式進行,每個語句均以“$”開頭,然后是兩個字母的“識別符”和三個字母的“語句名”組成的ID信息頭,接著就是以逗號分割的數(shù)據(jù)體,語句末尾為校驗和,整條語句以回車換行符結(jié)束。

圖2 GS-91應(yīng)用電路原理圖Fig.2 GS-91 application circuit schematic

NMEA-0183的數(shù)據(jù)信息有十幾種,例如:$GPGGA、$GPGLL、$GPGSA、$GPGSV、$GPRMC 等,我們所關(guān)心的定位數(shù)據(jù)如經(jīng)緯度、速度、時間等均可以從“$GPRMC”開頭的語句中獲得。下面是一條GPRMC語句實例,表1對該語句的各字段進行了說明。

$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.130,309.62,120598,23.1,E*10

表1 GPRMC數(shù)據(jù)格式Tab.1 GPRMC data format

3 軟件部分

軟件部分以微軟的Visual Studio 2008為開發(fā)工具,安裝完 WinCE6.0的 SDK(Software Development Kit,軟件開發(fā)工具包)后,創(chuàng)建智能設(shè)備MFC工程,即可開始軟件編寫。這里的SDK可以使用標(biāo)準(zhǔn)的,也可以自己編譯生成。

3.1 軟件界面

圖3所示為本系統(tǒng)獲取GPS導(dǎo)航數(shù)據(jù)并處理的軟件界面。打開界面后,選擇端口號和波特率,點擊“打開串口”按鈕,然后點擊“開始接收”按鈕,左側(cè)“接收區(qū)”的編輯框就會不斷地顯示從GS-91模塊輸出的NMEA格式導(dǎo)航數(shù)據(jù),并且在“經(jīng)度”、“緯度”編輯框中實時顯示相應(yīng)信息。

制作路線圖的方法為,將機器人帶到目標(biāo)路徑上的幾個位置,點擊“采點”按鈕,即可把當(dāng)前的經(jīng)度緯度信息保存,并顯示在“采點區(qū)”的列表框中。路線圖制作完成后,機器人在行進過程中即可根據(jù)實時獲取的當(dāng)前位置信息和運動方向來判斷下一步的運動策略。

3.2 讀串口

獲取GPS導(dǎo)航數(shù)據(jù)實際上就是通過串口讀取GS-91輸出的NMEA格式數(shù)據(jù)的過程,下面將介紹WinCE下讀取串口程序的開發(fā)過程。

3.2.1 打開串口

點擊“打開串口”按鈕,進入此按鈕的消息響應(yīng)函數(shù),函數(shù)中執(zhí)行打開串口和串口參數(shù)配置等操作。

圖3 軟件界面Fig.3 Software interface

首先調(diào)用CreateFile()函數(shù)打開指定的端口。

接著對串口進行參數(shù)配置,如波特率、數(shù)據(jù)位、停止位、奇偶校驗等。參數(shù)設(shè)置過程為:首先調(diào)用GetCommState()獲取串口的當(dāng)前配置,得到結(jié)構(gòu)體DCB(Device Control Block,設(shè)備控制塊)的指針,通過它給DCB結(jié)構(gòu)體賦值,然后傳給SetCommState()函數(shù)對串口進行配置。

最后設(shè)置串口的超時參數(shù),設(shè)置方法與上述參數(shù)設(shè)置類似,先通過GetCommTimeouts()得到一個結(jié)構(gòu)體指針,賦值后傳給SetCommTimeouts()進行設(shè)置。

3.2.2 開始接收

點擊“開始接收”按鈕,進入此按鈕的消息響應(yīng)函數(shù),函數(shù)中調(diào)用CreateThread()開辟了一個線程,用于接收串口數(shù)據(jù)。由于接收過程需要調(diào)用WaitCommEven()函數(shù)來不停地等待數(shù)據(jù)到來事件,會致使程序無法響應(yīng)其他操作,因此用開辟線程的辦法來防止信息擁堵。

3.2.3 接收線程

圖4所示為接收串口數(shù)據(jù)的線程中執(zhí)行的操作流程。程序?qū)崿F(xiàn)了串口數(shù)據(jù)的接收,并把接收到的數(shù)據(jù)傳遞給Dlg類,用于后期進行定位信息提取及顯示等操作。

3.2.4 消息響應(yīng)函數(shù)

獲得串口接收線程中得到的數(shù)據(jù),進行格式轉(zhuǎn)換后則開始提取定位數(shù)據(jù)等有用信息,并將提取結(jié)果顯示到對話框界面上。

3.3 定位數(shù)據(jù)的提取

定位數(shù)據(jù)的提取過程專注于“$GPRMC”語句,表1中對該語句結(jié)構(gòu)作了詳細說明,我們可以從中得到當(dāng)前的經(jīng)緯度信息。在3.2.4介紹的消息響應(yīng)函數(shù)中,得到NMEA導(dǎo)航數(shù)據(jù)后,按照圖5所示的流程即可完成數(shù)據(jù)提取。

圖5 接收數(shù)據(jù)處理流程圖Fig.5 Flow chart of processing the received data

圖6是圖5中“尋找目標(biāo)ID頭‘$GPRMC’”子過程的流程圖。值得注意的是,程序中不可出現(xiàn)m_strRecv[i+k](k為大于0的整數(shù))這樣的表達式。有人會以(m_strDataReceived[i]== ’$’&&m_strDataReceived[i+3]== ’R’)為判斷條件來提取ID頭,看起來方便但會很容易造成超出數(shù)組元素個數(shù)的錯誤。

圖6 尋找目標(biāo)ID頭流程Fig.6 Flow chart of finding wanted ID header

圖7是圖5中“提取經(jīng)緯度信息”子過程的流程圖,同樣也要應(yīng)遵循每次循環(huán)應(yīng)僅處理當(dāng)前一位數(shù)據(jù)m_strRecv[i]的原則。

4 試驗結(jié)果

連接GPS天線,在空曠的場地給電路板上電,運行開發(fā)的軟件,獲得如圖8所示的運行結(jié)果??梢钥吹?,當(dāng)前的位置為東經(jīng) 108.458035°,北緯 34.018866°。

上面是摘取圖8中“接受區(qū)”編輯框里的一條語句,參照表1可以看出各項信息都合乎常理,系統(tǒng)成功運行。

圖7 提取經(jīng)緯度信息流程Fig.7 Flow chart of picking up position information

圖8 軟件運行結(jié)果Fig.8 Results of runnig

5 結(jié) 論

系統(tǒng)在ARM硬件平臺下,用ARM芯片的串口引腳連接GPS模塊GS-91,并在Visual Studio 2008下開發(fā)了讀取串口以獲取導(dǎo)航數(shù)據(jù)的軟件,該軟件還實現(xiàn)了實時提取當(dāng)前經(jīng)緯度信息并顯示,以及采點構(gòu)建行進路線的功能。本系統(tǒng)可為自主移動機器人提供GPS導(dǎo)航定位服務(wù),簡單可行,極具借鑒價值。

[1]鄧旭玥,王偉,易建強,等.移動機器人導(dǎo)航研究現(xiàn)狀及其發(fā)展趨勢展望[J].可編程控制器與工廠自動化(PLC FA),2004(11):4-8.

DENG Xu-yue,WANG Wei,YI Jian-qiang,et al.Mobile robotnavigation and development trend research[J].Programmable Controller&Factory Automation,2004,11:4-8.

[2]廣州鑫圖科技有限公司.GPS Engine Board GS-91[EB/OL].Http://www.gzxintu.com.

[3]百 度 百 科.NMEA[EB/OL]. (2011-06-25).http://baike.baidu.com/view/1303668.htm.

[4]孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.

[5]張歡,鈕文良.Windows CE系統(tǒng)開發(fā)基礎(chǔ)與實例[M].北京:中國電力出版社,2009.

[6]李景峰,楊麗娜,潘恒,等.Visual C++串口通信技術(shù)詳解[M].北京:機械工業(yè)出版社,2010.

猜你喜歡
經(jīng)緯度移動機器人串口
移動機器人自主動態(tài)避障方法
淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
基于Twincat的移動機器人制孔系統(tǒng)
自制中學(xué)實驗操作型經(jīng)緯測量儀
澳洲位移大,需調(diào)經(jīng)緯度
USB接口的多串口數(shù)據(jù)并行接收方法探索
一種利用太陽影子定位的數(shù)學(xué)模型
基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
地礦測繪(2015年3期)2015-12-22 06:27:26
基于并行控制的FPGA多串口拓展實現(xiàn)
極坐標(biāo)系下移動機器人的點鎮(zhèn)定
金寨县| 青冈县| 敦化市| 龙门县| 津市市| 华容县| 祁连县| 宜都市| 牡丹江市| 韩城市| 随州市| 乃东县| 若羌县| 阿拉善右旗| 佛学| 牙克石市| 永川市| 玉溪市| 临夏市| 安宁市| 冷水江市| 陆河县| 托克托县| 凤翔县| 泰和县| 龙井市| 且末县| 濮阳市| 敖汉旗| 固原市| 从化市| 密山市| 什邡市| 乌鲁木齐县| 泸溪县| 噶尔县| 安图县| 海盐县| 日照市| 芦溪县| 浦江县|