-
NMEA-0183
序號
|
命令
|
說明
|
最大幀長
|
1
|
$GPGGA
|
全球定位數據
|
72
|
2
|
$GPGSA
|
衛星PRN數據
|
65
|
3
|
$GPGSV
|
衛星狀態信息
|
210
|
4
|
$GPRMC
|
運輸定位數據
|
70
|
5
|
$GPVTG
|
地面速度信息
|
34
|
6
|
$GPGLL
|
大地坐標信息
|
|
7
|
$GPZDA
|
UTC時間和日期
|
幀格式形
編輯
一、 NMEA0183標准語句(GPS常用語句)
$GPGGA
例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,,,,0000*1F
字段0:$GPGGA,語句ID,表明該語句為Global Positioning System Fix Data(GGA)GPS定位信息
字段1:UTC 時間,hhmmss.sss,時分秒格式
字段2:緯度ddmm.mmmm,度分格式(前導位數不足則補0)
字段3:緯度N(北緯)或S(南緯)
字段4:經度dddmm.mmmm,度分格式(前導位數不足則補0)
字段5:經度E(東經)或W(西經)
字段6:GPS狀態,0=未定位,1=非差分定位,2=差分定位,3=無效PPS,6=正在估算
字段7:正在使用的衛星數量(00 - 12)(前導位數不足則補0)
字段8:HDOP水平精度因子(0.5 - 99.9)
字段9:海拔高度(-9999.9 - 99999.9)
字段10:地球橢球面相對大地水准面的高度
字段11:差分時間(從最近一次接收到差分信號開始的秒數,如果不是差分定位將為空)
字段12:差分站ID號0000 - 1023(前導位數不足則補0,如果不是差分定位將為空)
字段13:校驗值
$GPGLL
例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D
字段0:$GPGLL,語句ID,表明該語句為Geographic Position(GLL)地理定位信息
字段1:緯度ddmm.mmmm,度分格式(前導位數不足則補0)
字段2:緯度N(北緯)或S(南緯)
字段3:經度dddmm.mmmm,度分格式(前導位數不足則補0)
字段4:經度E(東經)或W(西經)
字段5:UTC時間,hhmmss.sss格式
字段6:狀態,A=定位,V=未定位
字段7:校驗值
$GPGSA
例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A
字段0:$GPGSA,語句ID,表明該語句為GPS DOP and Active Satellites(GSA)當前衛星信息
字段1:定位模式,A=自動2D/3D,M=手動2D/3D
字段2:定位類型,1=未定位,2=2D定位,3=3D定位
字段3:PRN碼(偽隨機噪聲碼),第1信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段4:PRN碼(偽隨機噪聲碼),第2信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段5:PRN碼(偽隨機噪聲碼),第3信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段6:PRN碼(偽隨機噪聲碼),第4信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段7:PRN碼(偽隨機噪聲碼),第5信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段8:PRN碼(偽隨機噪聲碼),第6信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段9:PRN碼(偽隨機噪聲碼),第7信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段10:PRN碼(偽隨機噪聲碼),第8信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段11:PRN碼(偽隨機噪聲碼),第9信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段12:PRN碼(偽隨機噪聲碼),第10信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段13:PRN碼(偽隨機噪聲碼),第11信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段14:PRN碼(偽隨機噪聲碼),第12信道正在使用的衛星PRN碼編號(00)(前導位數不足則補0)
字段15:PDOP綜合位置精度因子(0.5 - 99.9)
字段16:HDOP水平精度因子(0.5 - 99.9)
字段17:VDOP垂直精度因子(0.5 - 99.9)
字段18:校驗值
$GPGSV
例:$GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70
字段0:$GPGSV,語句ID,表明該語句為GPS Satellites in View(GSV)可見衛星信息
字段1:本次GSV語句的總數目(1 - 3)
字段2:本條GSV語句是本次GSV語句的第幾條(1 - 3)
字段3:當前可見衛星總數(00 - 12)(前導位數不足則補0)
字段4:PRN 碼(偽隨機噪聲碼)(01 - 32)(前導位數不足則補0)
字段5:衛星仰角(00 - 90)度(前導位數不足則補0)
字段6:衛星方位角(00 - 359)度(前導位數不足則補0)
字段7:信噪比(00-99)dbHz
字段8:PRN 碼(偽隨機噪聲碼)(01 - 32)(前導位數不足則補0)
字段9:衛星仰角(00 - 90)度(前導位數不足則補0)
字段10:衛星方位角(00 - 359)度(前導位數不足則補0)
字段11:信噪比(00-99)dbHz
字段12:PRN 碼(偽隨機噪聲碼)(01 - 32)(前導位數不足則補0)
字段13:衛星仰角(00 - 90)度(前導位數不足則補0)
字段14:衛星方位角(00 - 359)度(前導位數不足則補0)
字段15:信噪比(00-99)dbHz
字段16:校驗值
$GPRMC
例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
字段0:$GPRMC,語句ID,表明該語句為Recommended Minimum Specific GPS/TRANSIT Data(RMC)推薦最小定位信息
字段1:UTC時間,hhmmss.sss格式
字段2:狀態,A=定位,V=未定位
字段3:緯度ddmm.mmmm,度分格式(前導位數不足則補0)
字段4:緯度N(北緯)或S(南緯)
字段5:經度dddmm.mmmm,度分格式(前導位數不足則補0)
字段6:經度E(東經)或W(西經)
字段7:速度,節,Knots
字段8:方位角,度
字段9:UTC日期,DDMMYY格式
字段10:磁偏角,(000 - 180)度(前導位數不足則補0)
字段11:磁偏角方向,E=東W=西
字段16:校驗值
$GPVTG
例:$GPVTG,89.68,T,,M,0.00,N,0.0,K*5F
字段0:$GPVTG,語句ID,表明該語句為Track Made Good and Ground Speed(VTG)地面速度信息
字段1:運動角度,000 - 359,(前導位數不足則補0)
字段2:T=真北參照系
字段3:運動角度,000 - 359,(前導位數不足則補0)
字段4:M=磁北參照系
字段5:水平運動速度(0.00)(前導位數不足則補0)
字段6:N=節,Knots
字段7:水平運動速度(0.00)(前導位數不足則補0)
字段8:K=公里/時,km/h
字段9:校驗值
Data and time (ZDA) 時間和日期信息
$GPZDA,<1>,<2>,<3>,<4>,<5>*hh<CR><LF>
<1> UTC時間,hhmmss(時分秒)格式
<2> UTC日期,日
<3> UTC日期,月
<4> UTC日期,年<5>時區
Datum (DTM) 大地坐標系信息
$GPDTM,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>*hh<CR><LF>
<1>本地坐標系代碼 W84
<2>坐標系子代碼 空
<3>緯度偏移量
<4>緯度半球N(北半球)或S(南半球)
<5>經度偏移量
<6>經度半球E(東經)或W(西經)
<7>高度偏移量
<8>坐標系代碼 W84
二、 GARMIN定義的語句
1、 Estimated Error Information(PGRME)估計誤差信息
$PGRME,<1>,M,<2>,M,<3>,M*hh<CR><LF>
<1> HPE(水平估計誤差),0.0~999.9米
<2> VPE(垂直估計誤差),0.0~999.9米
<3> EPE(位置估計誤差),0.0~999.9米
2、 GPS Fix Data Sentence(PGRMF)GPS定位信息
$PGRMF,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>*hh<CR><LF
>
<1> GPS周數(0~1023)
<2> GPS秒數(0~604799)
<3> UTC日期,ddmmyy(日月年)格式
<4> UTC時間,hhmmss(時分秒)格式
<5> GPS跳秒數
<6> 緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)
<7> 緯度半球N(北半球)或S(南半球)
<8> 經度dddmm.mmmm(度分)格式(前面的0也將被傳輸)
<9> 經度半球E(東經)或W(西經)
<10> 模式,M=手動,A=自動
<11> 定位類型,0=沒有定位,1=2D定位,2=3D定位
<12> 地面速率(0~1851公里/小時)
<13> 地面航向(000~359度,以真北為參考基准)
<14> PDOP位置精度因子(0~9,四舍五入取整)
<15> TDOP時間精度因子(0~9,四舍五入取整)
3、 Map Datum(PGRMM)坐標系統信息
$PGRMM,<1>*hh<CR><LF>
<1> 當前使用的坐標系名稱(數據長度可變,如“WGS 84”)
注:該信息在與MapSource進行實時連接的時候使用。
4、 Sensor Status Information(PGRMT)工作狀態信息
$PGRMT,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>*hh<CR><LF>
<1> 產品型號和軟件版本(數據長度可變,如“GPS 15L/15H VER 2.05”)
<2> ROM校驗測試,P=通過,F=失敗
<3> 接收機不連續故障,P=通過,F=失敗
<4> 存儲的數據,R=保持,L=丟失
<5> 時鍾的信息,R=保持,L=丟失
<6> 振盪器不連續漂移,P=通過,F=檢測到過度漂移
<7> 數據不連續采集,C=正在采集,如果沒有采集則為空
<8> GPS接收機溫度,單位為攝氏度
<9> GPS接收機配置數據,R=保持,L=丟失
注:本語句每分鍾發送一次,與所選擇的波特率無關。
5、 3D velocity Information(PGRMV)三維速度信息
$PGRMV,<1>,<2>,<3>*hh<CR><LF>
<1> 東向速度,514.4~514.4米/秒
<2> 北向速度,514.4~514.4米/秒
<3> 上向速度,999.9~9999.9米/秒
6、 DGPS Beacon Information(PGRMB)信標差分信息
$PGRMB,<1>,<2>,<3>,<4>,<5>,K,<6>,<7>,<8>*hh<CR><LF>
<1> 信標站頻率(0.0,283.5~325.0kHz,間隔為0.5kHz)
<2> 信標比特率(0,25,50,100或200bps)
<3> SNR信標信號信噪比(0~31)
<4> 信標數據質量(0~100)
<5> 與信標站的距離,單位為公里
<6> 信標接收機的通訊狀態,0=檢查接線,1=無信號,2=正在調諧,3=正在接收,4=正在掃描
<7> 差分源,R=RTCM,W=WAAS,N=非差分定位
<8> 差分狀態,A=自動,W=僅為WAAS,R=僅為RTCM,N=不接收差分信號
三、TEXT文本格式說明:
區域描述: 長度: 注釋:
----------------------- ------- ------------------------
句頭起始符 1 始終為 '@'
----------------------- ------- ------------------------
/年 2 UTC年的最后兩位數字
| ----------------------- ------- ------------------------
| 月 2 UTC月, "01".."12"
T | ----------------------- ------- ------------------------
i | 日 2 UTC日, "01".."31"
m | ----------------------- ------- ------------------------
e | 時 2 UTC時, "00".."23"
| ----------------------- ------- ------------------------
| 分 2 UTC分, "00".."59"
| ----------------------- ------- ------------------------
\秒 2 UTC秒, "00".."59"
----------------------- ------- ------------------------
/緯度半球 1 'N' 或 'S'
| ----------------------- ------- ------------------------
| 緯度坐標 7 WGS84坐標系統,坐標格式ddmmmmm,
| 在第4位數字后省略了一個小數點。
| ----------------------- ------- ------------------------
| 經度半球 1 'E' 或 'W'
| ----------------------- ------- ------------------------
| 經度坐標 8 WGS84坐標系統,坐標格式dddmmmmm,
P | 在第5位數字后省略了一個小數點。
o | ----------------------- ------- ------------------------
s | 定位狀態 1 'd' 2維差分定位
i | 'D' 3維差分定位
t | 'g' 2維定位
i | 'G' 3維定位
o | 'S' 模擬狀態
n | '_' 無效
| ----------------------- ------- ------------------------
| 水平定位誤差 3 單位為“米”
| ----------------------- ------- ------------------------
| 高度符號 1 '+' 或 '-'
| ----------------------- ------- ------------------------
\高度 5 海拔高,單位為“米”
----------------------- ------- ------------------------
/東/西速度方向 1 'E' 或 'W'
| ----------------------- ------- ------------------------
| 東/西速度 4 單位是“米/秒”,在第三位后省略了一個小數點,
| ("1234" = 123.4 m/s)
V | ----------------------- ------- ------------------------
e | 南/北速度方向 1 'S' 或 'N'
l |
o | ----------------------- ------- ------------------------
c | 南/北速度 4 單位是“米/秒”,在第三位后省略了一個小數點,
i | ("1234" = 123.4 m/s)
t | ----------------------- ------- ------------------------
y | 垂直速度方向 1 'U' (上) 或 'D' (下)
| ----------------------- ------- ------------------------
| 垂直速度 4 單位是“米/秒”,在第二位后省略了一個小數點,
\ ("1234" = 12.34 m/s)
----------------------- ------- ------------------------
句尾結束符 2 回車, '0x0D', 和換行'0x0A'
實際使用中在軟件中需要實現的常用功能
在目前手持項目中,正常的定位或導航系統,基本主要完成如下的功能:
讀取當前坐標
使用報文:Recommended Minimum Specific GPS/TRANSIT Data(RMC)推薦定位信息
讀取速度
使用報文:Track Made Good and Ground Speed(VTG)地面速度信息
讀取方向
使用報文:Track Made Good and Ground Speed(VTG)地面速度信息
--注:速度和方向的計算這塊,有一點需要注意,就是GPS接收機並非簡單的將兩次坐標相減進行計算,而是采用的多普勒效應進行處理,所以在實際應用中,速度和方向的計算會稍后一點延遲,因為信號是1秒接收一次,而且方向的計算還要根據前幾秒的方向進行加權平均。
讀取衛星數及狀態
使用報文:GPS Satellites in View(GSV)可見衛星信息
GPS DOP and Active Satellites(GSA)當前衛星信息
GPS的誤差
有很多種因素會影響到GPS的准確率,以下是一個GPS誤差引入簡表:
衛星時鍾誤差:0-1.5米
衛星軌道誤差:1-5米
電離層引入的誤差:0-30米
大氣層引入的誤差:0-30米
接收機本身的噪音:0-10米
多路反射:0-1米
總定位誤差:大約28米
上述的簡表,並不表示一定會存在這么大的誤差,這是給出的最好及最差的范圍,當然最好情況不能同時發生,最差的情況也不能同時發生。
實際在衛星的導航電文中,已經包含了大氣層的修正參數,能夠消除50%到70%的誤差,而且這兩年出的GPS的誤差大致范圍是10米或以內。
在現有情況下,民用級單台GPS接收機要想達到1m以內的精度是不可能實現的,原因除GPS本身精度外,還包括地圖、定位點測繪、嵌入式設備的運行速度等,所以過度追求定位精度對於民用產品來說已無實際的意義。
GPS的漂移
漂移是GPS導航時需要處理的問題之一,漂移主要有兩個方面,第一,速度過快,以至於GPS的響應時間短於當前運行速度,出現漂移;第二,在高大建築密集或天氣情況不好的地方,因為GPS信號經過多次的折、反射,造成信號誤差,出現漂移。
解決GPS漂移主要從兩方面入手:
一、主系統的設計主要減少在近距離內對GPS信號的干擾。
二、軟件處理。軟件處理主要集中在導航軟件處完成,導航軟件會將坐標定位在道路之內,如果GPS接收到的信號超出道路的半徑范圍將自動過濾這個數據,並根據上次的速度及方向推算出當前點的位置。
對於靜態漂移,也有建議做軟件判斷:
1.檢測到的狀態為靜止時,強制速度為0;
2.速度為0時,強制方向為0;
3.數據中的速度值為0時,就不去更新地圖上的經緯度;
4.通過比較上次定位數據的經緯度差的絕對值(同時包括時間)再來判定是否有慢速移動;
另外有些GPS模塊(UBLOX)可設置靜止模式、行走模式、汽車模式、海上模式、飛行模式,通過設置這些參數來解決漂移問題。