1. 程式人生 > >GPS NEMA 0183協議

GPS NEMA 0183協議

存儲 trac 本地 aps 符號 可見 精度 信道 相減

GPS NEMA 0183協議

一、 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 始終為 [email protected]
----------------------- ------- ------------------------
/年 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)可設置精巧模式、行走模式、汽車模式、海上模式、飛行模式。通過設置這些參數來解決漂移問題。

GPS NEMA 0183協議