自動駕駛之定位篇


作者 | 阿寶
來源 |  阿寶1990
知圈 |  進“激光雷達社群”請加微信13636581676,備注激光

在講解高精度地圖之前,我們先把定位這個事情弄清楚,想明白,后面的事情就會清晰很多,自古哲學里面討論的人生終極問題,無非就三個,我是誰,我從哪里來,我要去哪里,這里的位置定位就包含了人生哲學中的兩個問題,可見其重要性。

自動駕駛之定位篇的圖1

如果你有一個路癡女朋友,如果她在外面迷路了,如果是在10年前沒有那么發達的導航手機,可能給你電話溝通是這樣的。
——你在哪兒呢?
——啊?我在馬路上啊。
——有什么特征?
——頭頂有個月亮。
——你旁邊有什么?。?/span>
——有個路燈。
——有沒有路牌???路牌上寫的什么?
——我看看啊。還真的有,上邊寫著“禁止停車 違者罰款”。
——姑奶奶,我真是服了你了……
——哼,你是不是不愛我了,你肯定是不愛我了,你是不是喜歡上了新來的那個前臺?

自動駕駛之定位篇的圖2

說了現代人,再來說說我們古代的人對于導航的需求:朝辭白帝彩云間,千里江陵一日還。兩岸猿聲啼不住,輕舟已過萬重山,看看李白當時由于沒有導航,導致過了多少座山都數不清了。
 
我們身處何方?怎樣到達目的地?多久可以到達?——這是自人類出現以來一直縈繞于心的問題。早在石器時代,“北京人”外出打獵時會在沿途留下痕跡,待捕獲獵物之后,配合固定的坐標物來找到回家的路。天體導航時代,羅盤、指南針、六分儀等發明不斷拓展著人類在地球上的足跡,人們開始遠行,世界走向融合。

自動駕駛之定位篇的圖3


普通定位

學過初中數學都知道,我們如果要在一個二維平面上定位的話,首先建立一個笛卡爾坐標系,通過坐標原點,就可以判定A點的具體位置(x,y)的坐標,如果要從A點到B點的絕對距離,也就是通過坐標系上的絕對位置的運算即可。
自動駕駛之定位篇的圖4
這里的二維平面的定位比較準確,而且相對容易一些,是只有X/Y方向上的坐標,只要大家都遵循對應的原點坐標,或者哪怕原點坐標不同,輕易轉換也可以得到,所以一般情況下在室內的一些平面定位會比較好做一些,比如掃地機器人的定位。
自動駕駛之定位篇的圖5

自動駕駛之定位篇的圖6


GPS三維定位

自動駕駛之定位篇的圖7

我們先來看看地球上的某個位置的定位,其實對于對球上的某個點而言,正常情況下只需要知道經度和緯度,但是對于導航而言,一定還需要定位的高度,否則像重慶這樣的魔幻8D城市,太多高架橋的位置,上橋和下橋的導航位置顯示的經緯度都一樣,只能通過高度來定位自己處于哪條道路上,否則導航分分鐘讓人在重慶高架橋上半日游,所以大家都說看一個地圖準確不,來重慶立交橋溜溜就行。
自動駕駛之定位篇的圖8

有的這個概念后我們再來看GPS定位原理就會輕松很多。

首先明白一個事情,無論是GPS還是北斗,都是通過衛星來定位的,GPS 的全稱是導航星測時和測距全球定位系統,簡稱全球定位系統(Global Position System,GPS),可以實現地球表面附近范圍的全天候三維位置等信息的獲取,其具有實時性好、準確度高的優點,是當前世界發展最完善、應用最廣泛的全球衛星導航系統。

自動駕駛之定位篇的圖9

我們經常在文章中看到的GNSS,是全球衛星導航系統(GNSS)是衛星導航的統稱,是除了GPS以外,還包含目前俄羅斯的GLONASS、中國的北斗,歐洲的伽利略這四大導航系統。

自動駕駛之定位篇的圖10

GPS的工作的標準定義如下:
GPS由24顆工作星和4顆備用星組成。衛星工作在互成55度的6條高度為2.02萬KM的非同步軌道上。如此一來,在全球的任何地方、任何時間都可觀測到4顆以上的GPS衛星。GPS衛星向地球發射導航電文(系統時間、星歷、歷書、衛星時鐘修正參數、導航衛星健康狀況、電離層延時參數等內容),GPS終端收到衛星發送的數據,經解算即可確定當前位置,并以NMEA0183格式,WGS-84坐標系輸出數據。
 
讀起來很拗口吧,那我以一個專業理科生的理解方式來給你剖析剖析。

①為什么不使用同步軌道衛星呢?
 
自動駕駛之定位篇的圖11

地球同步衛星軌道:衛星的軌道周期等于地球在慣性空間中的自轉周期(23小時56分4秒),且方向亦與之一致,衛星在每天同一時間的星下點軌跡相同,當軌道與赤道平面重合時叫做地球靜止軌道,即衛星與地面的位置相對保持不變。傾角為零的圓形地球同步軌道稱為地球靜止軌道,因為在這樣的軌道上運行的衛星將始終位于赤道某地的上空,相對于地球表面是靜止的。這種軌道衛星的地面高度約為 3.6萬千米。它的覆蓋范圍很廣,利用均勻布在地球赤道上的 3顆這樣的衛星就可以實現除南北極很小一部分地區外的全球通信。
 
既然同步軌道衛星數量這么少就可以實現定位,為什么不使用呢,這里涉及到一個發射的問題,地球同步軌道衛星的發射很困難,技術很復雜。但如果一個國家的衛星發射場建在地球的赤道上,那這種衛星的發射就簡單多了,在赤道上由西向東發射,達到要求的軌道高度,在適當的位置定點,問題就解決了。可惜的是,許多發射衛星的國家不在赤道上,也不可能在赤道上建立衛星發射場。這樣給衛星的發射帶來了許多的困難,要經過幾次的軌道變換才能成功。
 
但即使衛星已經定點很準了,當工作時間一長,由于地球形狀的影響(地球不是正圓)、地磁場的影響,以及太陽甚至月亮的引力都使得衛星的位置發生變化 (軌道攝動),所以時不時的還要進行軌道修正,要隨時控制它的狀態和位置,這種修正我們稱為衛星的軌跡保持。
 
簡單來說,同步軌道衛星需要在軌道附件發射,如果不是的話,進入同步軌道是魔鬼般的困難,即是衛星到了同步軌道,隨著工作時間一長,又要重新修正,花費的成本太大。 所以不用同步軌道衛星導航的根本原因是技術太難,成本太貴,吃不消。

自動駕駛之定位篇的圖12

②為什么需要接收到4顆以上的衛星才能定位
 
我們還是得從GPS的功能說起,除了定位,GPS還給我們提供一個精準的時間修正,這個時間比石英晶體的時間還準100倍,所以車里面的時間校準都基本上使用GPS的時間去校準。

自動駕駛之定位篇的圖13

測量出已知位置的衛星到用戶接收機之間的距離,然后綜合多顆衛星的數據就可知道接收機的具體位置。
 
公式看起來有點費勁,我們就簡單來理解,我們還是從坐標系的位置說起,正常情況下需要知道笛卡爾坐標系下的(X,Y,Z),三個坐標分量,同時還有一個時間t0的分量,那么這樣算起來就有四個未知數,學過數學咱們都知道,四個未知數,至少需要4個方程才能解出來,那么就至少需要4顆衛星才能組成4個方程。
 
下面是接收機在搜到不同衛星數量的時候可以做的工作,在搜到1顆衛星的時候就可以更新時間和日期了,但是要實現經緯度和高度的定位至少也是需要4顆衛星以上才能有海拔信息的輸出。
自動駕駛之定位篇的圖14

有的人也許會擔心,我家在遙遠偏僻的小山村,怎么能保障頭頂上有4顆以上的衛星呢?

自動駕駛之定位篇的圖15

上面GPS的搜星說了,一定要收到4顆衛星以上才能定位,由于衛星一直是在運動的,所以每顆衛星大約5小時左右在地平線以上,同時位于地平線上的衛星至少有4顆,最多12顆,上圖是用戶可接收到衛星數量的概率分布圖,7、8、9顆衛星概率最大了,此時定位是毫無壓力。
 
衛星定位有點類似 古希臘唯物主義哲學家赫拉克利特的一句名言“人不能兩次走進同一條河流”這句名言的意思是說,河里的水是不斷流動的,你這次踏進河,水流走了,你下次踏進河時,又流來的是新水。河.水川流不息,所以你不能踏進同一條河流。同樣的,衛星定位的時候,你早上搜到的那顆衛星和你傍晚搜到的那顆衛星都不是同一顆衛星了,但是不影響你最終的定位輸出。
 
有的人說不對啊,為什么經常在橋下或者樹林茂密的地方無法定位呢?
 
是因為衛星的發射功率并不大,信號到達地面時已經很弱。這種信號強度相當于1.6萬公里外一個25瓦的燈泡發出的光。再做個比喻,它比電視機天線所接收到的功率還要低10億倍,此時就和不同手機的接收模塊有關系,有的手機GPS接收性能好一些,如果你恰好又在停車場或者天橋等遮擋信號的地方,此時不能定位也是正常的,所以這里埋下伏筆,GPS定位在一些信號惡劣的環境下是無法定位的。

同樣都是使用GPS定位,為什么車載導航定位的時間要比手機定位的時間要慢很多呢?

常規情況下,定位模塊上電開機后,通過天線搜索衛星,解析衛星發射的數據(導航電文),然后內部生成星歷,再經過復雜的計算,從而得到當前精確的位置(3D Fix)。這個過程稱之為“冷啟動”。根據信號強度、芯片運算能力,通常耗時幾十秒到幾分鐘不等。這個過程中,搜星+生成星歷文件耗時最久,不同廠家的芯片算法能力不同,時間就會有差異,基本上目前都是30秒上下。

為什么有的時候定位模塊只用了幾秒就成功定位了呢?原因有二:
1、非“冷啟動”方式,即“溫啟動”或“熱啟動”;
2、使用了AGPS輔助定位。
自動駕駛之定位篇的圖16

也許大家會以為,這里的“X啟動”和電腦的開機、待機(睡眠)、重啟近似吧?實際上并非如此哦。由于衛星所處空間位置、終端設備所處地表位置是不固定的,所以此處的“X啟動”都是以最后一次定位時間和位移距離作為判斷依據的:比如溫啟動,指的是距離上次的定位時間超過2小時,不足4小時,沒有較大距離的位移發生,這樣就可以實現秒定位,為什么呢?

因為定位模塊要搜星,生成星歷,比如我在深圳,頭上有某一顆衛星,假如我不移動,這顆衛星要經過4個小時后才會移動到搜不到的地方,更換為其他衛星,如果我沒有發生較大位置移動,不足四小時的話,可以使用上次的搜星的星歷,就會節省很多時間,就會秒定位,熱啟動也是一樣的原理。

怎么實現AGPS秒定位呢?

那么,什么又是“AGPS輔助定位”呢?在傳統GPS定位方式中,定位模塊需要全頻段搜索以找到可用衛星,因而耗時較長。而“AGPS輔助定位”方式,是通過網絡直接下載當前地區的可用衛星星歷數據,并將之發送給定位模塊,定位模塊只搜索特定的衛星,從而提高了搜星速度,減少設備耗電。

想想網絡下載當前地區可用星歷,那么有好幾種方法,比如使用2G/3G/4G網絡,中控車上帶有TBOX就可以,比如通過WIFI,WIFI連接某個熱點也可以下載星歷。這里簡單說說2G怎么一個AGPS的過程。
自動駕駛之定位篇的圖17

1、設備從蜂窩基站獲取到當前位置的小區信息;
2、設備通過蜂窩網絡,將當前蜂窩小區信息傳送給網絡中的AGPS位置服務器;
3、APGS位置服務器根據當前小區信息查詢該區域當前可用的衛星信息(包括衛星的頻段、方位、仰角
等相關信息),生成對應星歷文件,并返回給設備;
4、通信模塊通過串口把收到的星歷文件傳輸給定位模塊;
5、定位模塊根據星歷文件,得到的可用衛星信息,快速找到當前可用的GPS衛星,針對性的搜星,大大提升定位時間。
冷啟動像是多項選擇題,要把所有選項計算一遍,才能找到正確答案;而“AGPS輔助定位”就像是作弊器,排除掉了很多錯誤答案,只要計算少數幾個即可。從而提高效率和準確率。

所以大家可以明白,都是通過GPS導航,手機的定位時間會比車載中控的快很多,也就是這個AGPS輔助快速定位的區別,比較老的車載中控導航很少有4G模塊,都是通過GPS,第二天開車就屬于冷啟動方式,至少要30秒左右才能定位了。

想想如果此時是老式的導航機器,沒有4G,沒有WIFI,只有藍牙怎么做到快速定位呢,其實有可以通過手機的4G信號下載星歷,然后通過手機藍牙和車機藍牙相互連接,此時通過連接后把對應的信息傳輸過來就可以做到快速定位,這個已經有手機廠商寫了相關專利。

自動駕駛之定位篇的圖18

GPS定位精準度問題

1983 年,韓國007 號客機導航系統故障誤入蘇聯領空被擊落,時任美國總統里根旋即宣布一旦GPS 建成將開放給公眾使用,GPS 民用的大門就此開啟。
 
美國政府在GPS設計中,計劃提供兩種服務。一種為標準定位服務(SPS),利用粗碼(C/A)定位,精度約為100m,提供給民用。另一種為精密定位服務(PPS),利用精碼(P碼)定位,精度達到10m,提供給軍方和特許民間用戶使用。
 
GPS 衛星將發射兩種不同的測距碼,即軍用的P 碼和民用的C/A 碼,分別對應精密定位服務(PPS)和標準定位服務(SPS)。由于C/A 碼無法用雙頻技術消除電離層折射影響,美國技術人員預測定位精度會在百米級別。不過,測試表明C/A 碼定位精度遠高于預測值,能達到14 米左右,,這就是實力,本來以為設計的精度有100米左右,結果竟然達到了14米,哎,他們的工程師太保守了,這和我們國內某些領域的“叫獸”經常說我們某項技術國際領先,國內一流的技術相比還是too yong to simple。
 
由于多次試驗表明,SPS的定位精度已高于原設計,美國政府出于對自身安全的考慮,對民用碼進行了一種稱為“選擇可用性SA(Selective Availability)”的干擾,以確保其軍用系統具有最佳的有效性。由于SA通過衛星在導航電文中隨機加入了誤差信息,使得民用信號C/A碼的定位精度降至二維均方根誤差在100米左右。 

自動駕駛之定位篇的圖19

1993年11月美國一個叫做詹尼弗·庫恩的女孩遭綁架之后被殺害,在這個過程當中,庫恩用手機撥打了911電話,但是911呼救中心無法通過手機信號確定她的位置。由于這個事件,導致美國的FCC(美國通信委員會)在1996年推出了一個行政性命令E911,要求強制性構建一個公眾安全網絡,即無論在任何時間和地點,都能通過無線信號追蹤到用戶的位置?!?/span>
 
在GPS 民用逐漸廣泛背景之下,SA 政策顯得尤為顯眼,美國GPS 工業委員會也一直大力推動關閉SA。1996 年,克林頓正式發布了國家GPS 政策(PDD),明確表示美國在保護國家安全和對外政策利益的同時,推動GPS 全球衛星導航系統的應用,增強美國民用衛星導航系統工業的競爭力,為此美國政府還承諾10 年內中止使用選擇可用性技術(SA)。 
 
取消SA 干擾信號:為保持GPS 的國際領先地位,基于商業利益考慮,2000 年美國取消了對GPS 衛星民用信道的SA 干擾信號,民用GPS 的定位精度達到平均6.2 米的實用化水平。同年,GPS 被寫入《美國法典》,以法律的形式將GPS 的兩用性質予以保障,以在維護國家安全利益的前提下推動民用。
 
目前GPS的實際絕對精度在5米左右,而軍隊使用的精度是0.3米。

自動駕駛之定位篇的圖20

GPS地圖坐標系轉換

俗話說的好,國有國法,家有家規,每個行業都有自己輸出的格式標準。
 
GPS數據遵循NMEA-0183協議,該數據標準是由NMEA(National Marine Electronics Association,美國國家海事電子協會)于1983年制定的。統一標準格式NMEA-0183輸出采用ASCII 碼,其串行通信的參數為:波特率=4800bps,數據位=8bit,開始位=1bit,停止位=1bit,無奇偶校驗。
 
數據傳輸以“語句”的方式進行,每個語句均以“$”開頭,然后是兩個字母的“識別符”和三個字母的“語句名”,接著就是以逗號分割的數據體,語句末尾為校驗和,整條語句以回車換行符結束。
 
我們就以公司的地址通過GPS接收機,接收到的代碼為例子。
我們再來看一下NEMA-0183中的定位GGA格式:
格式:
$--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh
 
創維大廈公司陽臺定位搜下來的代碼示例:
$GPGGA,065545.789,2232.3526,N,11357.0576,E,1,9,0.85,18.1,M,8.0,M,,*5E

自動駕駛之定位篇的圖21

GGA輸出格式:ddmm.mmmm(度-分)
日常使用格式:dd.dddddd(度)
那么如何把GGA 輸出的數據轉換為我們日常使用的格式呢?學霸看一眼就會說, 這個問題很簡單嘛,balabala~~~作為學渣的我,一頭霧水;
公式如下:
ddmm.mmmm → 小數點前移兩位 → dd.mmmm → dd + 0.(mmmm/60) = dd.dddddd
舉例:
11357.0576 → 113.570576 → 113 + 0.(570576÷60) = 113.95096
 
此時把這個經緯度放到百度地圖里面會發現有問題,根本不準。
實際我們所在位置是創維大廈,當時把搜下來的經緯度放到百度地圖中的時候,就胡發現已經偏離到軟件園那邊去了,預計有3公里左右的偏差。

自動駕駛之定位篇的圖22

之所以會產生“偏差”,這就涉及到一個有關坐標系轉換的問題:GCJ-02 火星坐標系統糾偏。上面提到GSP模塊輸出數據的格式為NMEA-0183,使用的坐標系是WGS-84。通常,國際上其他國家的地圖軟件也都是使用WGS-84,相安無事。
 
不過,中國國家測繪局要求所有從事地理測量、地圖繪制的公司、單位機構、個人必須使用GCJ-02坐標系(G表示Guojia國家,C表示Cehui測繪,J表示Ju局)。也就是說,國內的地圖軟件大都是使用的GCJ-02坐標系。所以開發者/用戶如果將WGS-84的經緯度填入國內的地圖軟件,就會產生極大的偏差。

(所有的電子地圖、導航設備,都需要使用GCJ-02坐標系。第一步,地圖公司測繪地圖,測繪完成后,送到國家測繪局,將真實坐標WGS-84的電子地圖,加密成“GCJ-02火星坐標”,這樣的地圖才是可以出版和發布的。第二步,所有的面向客戶的設備廠商,要在軟件中加入該轉換算法,將定位模塊輸出的真實WGS-84坐標,轉換成GCJ-02的坐標。這樣一來,“以偏治偏”,坐標系才可以完全匹配,也就沒有“偏差”了)
 
那么,是不是所有的國內地圖都使用了GCJ-02坐標系呢?非也……百度、搜狗又自成體系,自立坐標了。

自動駕駛之定位篇的圖23

大家使用一下經緯度查詢這個小程序,你會發現只有百度地圖和谷歌、高德、騰訊地圖的經緯度有不同。
 
其中百度較為特殊,需要 WGS-84 → GCJ-02 → BD-09 兩次轉換,因為它使用的是自己的坐標系,此時的經緯度就會同其他地圖廠家有經緯度有區別,從上面地圖定位來看,最終定位的效果來看,如果直接把其他地圖坐標的GPS的經緯度放到百度地圖中去,會有2-3公里的偏差,這個完全是不能使用的。
—END—
自動駕駛之定位篇的圖24
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP