?

基于GPS的自主移動機器人導航定位系統的實現

2011-07-13 06:02宋玉龍常然然
電子設計工程 2011年20期
關鍵詞:經緯度移動機器人串口

宋玉龍,常然然

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

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

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

圖1 系統結構Fig.1 System structure

1 系統介紹

2 硬件部分

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

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

2.1 GPS模塊簡介

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

2.2 應用電路

圖2是GS-91模塊的應用電路原理圖。其中,RXA是GS-91用于接收軟件指令的主要接收通道,TXA是用于輸出導航和測量數據的主要發送通道。

2.3 輸出電文格式[3]

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

圖2 GS-91應用電路原理圖Fig.2 GS-91 application circuit schematic

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

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

表1 GPRMC數據格式Tab.1 GPRMC data format

3 軟件部分

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

3.1 軟件界面

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

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

3.2 讀串口

獲取GPS導航數據實際上就是通過串口讀取GS-91輸出的NMEA格式數據的過程,下面將介紹WinCE下讀取串口程序的開發過程。

3.2.1 打開串口

點擊“打開串口”按鈕,進入此按鈕的消息響應函數,函數中執行打開串口和串口參數配置等操作。

圖3 軟件界面Fig.3 Software interface

首先調用CreateFile()函數打開指定的端口。

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

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

3.2.2 開始接收

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

3.2.3 接收線程

圖4所示為接收串口數據的線程中執行的操作流程。程序實現了串口數據的接收,并把接收到的數據傳遞給Dlg類,用于后期進行定位信息提取及顯示等操作。

3.2.4 消息響應函數

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

3.3 定位數據的提取

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

圖5 接收數據處理流程圖Fig.5 Flow chart of processing the received data

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

圖6 尋找目標ID頭流程Fig.6 Flow chart of finding wanted ID header

圖7是圖5中“提取經緯度信息”子過程的流程圖,同樣也要應遵循每次循環應僅處理當前一位數據m_strRecv[i]的原則。

4 試驗結果

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

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

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

圖8 軟件運行結果Fig.8 Results of runnig

5 結 論

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

[1]鄧旭玥,王偉,易建強,等.移動機器人導航研究現狀及其發展趨勢展望[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].北京:電子工業出版社,2006.

[5]張歡,鈕文良.Windows CE系統開發基礎與實例[M].北京:中國電力出版社,2009.

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

猜你喜歡
經緯度移動機器人串口
移動機器人自主動態避障方法
淺談AB PLC串口跟RFID傳感器的通訊應用
基于經緯度范圍的多點任務打包算法
基于Twincat的移動機器人制孔系統
自制中學實驗操作型經緯測量儀
澳洲位移大,需調經緯度
數字電源內部數據傳輸的串口通信方法實現
USB接口的多串口數據并行接收方法探索
基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
極坐標系下移動機器人的點鎮定
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合