無人駕駛是這幾年大火的乙個研究方向,研究無人駕駛需要了解的知識非常多,但是導航定位技術一定是其中必不可少的一環。
l 衛星導航實現定位的原理;
l 輔助增強系統如何實現厘公尺級定位。
本篇文章的目標讀者是對定位導航一無所知的小白玩家,大神請繞路。
提到衛星導航系統,相信就算對此不了解的人也一定聽說過,三顆衛星就能確定乙個地面座標的說法。那麼這個說法是如何來的呢?
假設小明在戶外活動時候迷了路,於是他打**報警讓警察接他回家,警察告訴他不用著急,會首先通過衛星定位他的手機訊號確定他的位置座標資訊,所謂位置座標資訊就是小明此時的(x,y,z)的資訊。
定位原理如圖所示:
假設小明此時的位置座標資訊為(x,y,z),與小明進行訊號通訊的三顆衛星編號分別為衛星1號,衛星2號和衛星3號。這三顆衛星座標與小明手機發射的訊號抵達三顆衛星的時間分別如上圖所示,則顯然有如下方程成立:
解這個三元三次方程組之後,很快就能知道小明的座標資訊。小明很開心,坐等救援隊的到來,結果一天一夜過去了,救援隊並沒有人來,小明趕緊打**問為什麼還沒到?救援隊接**的人氣喘吁吁的說,不對啊老弟,按照給定的位置訊號找不到你啊,你是不是亂跑了啊,小明說哪能呢,我一動沒敢動啊。
那麼到底是哪齣了問題呢?小明仔細的研究這個方程組,最後發現,最有可能出問題的地方就是衛星接收到訊號的時間。意思就是接收小明訊號的三個衛星可能初始時間並不統一,這樣造成的後果就是,衛星1以為自己接收到小明訊號的時間是5s,實際上可能是5.2s,衛星2以為自己接收到小明訊號的時間可能是5.1s,實際可能是4.9s,衛星3以為自己接收到小明訊號的時間是5.4s,實際可能是5.5s。這種情況是由時鐘誤差造成,這裡不展開,本文僅講述如何在演算法上消除這種誤差,很簡單,將上述方程的時間作調整,得到新的方程如下:
想法很**,現實很骨感,因為小明很沮喪的發現,這些衛星並不知道自己的時間包含多少誤差量,於是小明靈機一動,既然三顆衛星互相之間各種推諉,那就委託第三方來處理,於是小明又找到了第四顆衛星,以這一顆衛星作為標準衛星,假設該標準衛星的位置資訊為
該方程組包含4個未知數,四個方程,因此可解。
到了這裡,小明就能很快得救了嗎?如果真的這樣想就大錯特錯了。因為訊號在通過電離層、對流層等區域的時候,會很曲折,這時候又會產生新的傳輸誤差。
你看,本來走直線的訊號在經過大氣層的時候開始拐彎了,當然了,具體怎麼拐的彎我們並不知道,但是誤差卻產生了。怎麼辦呢?
小明突然想到在附近貌似有個訊號塔,這個訊號塔的位置是確定的,而小明通過手機定位這個訊號塔,也能夠確定自己和訊號塔之間的距離。現在小明和訊號塔同時給衛星發射訊號進行定位,結果訊號塔的定位結果和實際結果之間存在誤差,**由於訊號塔本身位置是確定的,因此衛星和訊號塔之間的距離傳輸誤差很容易被確定,然後訊號塔就會告訴小明這個誤差值,小明根據這個誤差值就可以修正自己的位置,然後告訴救援隊自己的真實位置了。**這種做法的好處是通過訊號塔把所有從衛星到地面標的物之間的誤差統一考慮了,但是這樣做的前提是訊號塔和小明的距離不能太遠,這個訊號塔其實就是rtk。
為什麼rtk和標的物不能距離過遠,這是由於當距離較遠時,導航衛星收到的電離層和對流層的干擾情況會變的不同,此時無法有效修正誤差。
小明獲救後,救援隊為了防止再次出現類似事件,於是建立了許多參考基準站並組成了網路。當再有救援活動出現時,可以根據目標的初始位置迅速鎖定目標周圍的三個距離最近的基站,然後根據三個基站的傳輸資料定位出帶救援人員的精確座標。
總而言之,單純通過gps做定位誤差會比較大,但是如果增加適當的輔助措施,則可以有效的減小這種誤差。關於導航系統的誤差**,作者簡單整理如下圖所示:
以上就是關於導航的最基礎的知識,作者目前在做乙個關於無人工地的專案,裡面涉及到大量的無人駕駛、多機協同控制等內容,當前作者在這些領域也是小白乙個,隨著專案的進行,作者會將蒐集到的資料編製成文件與大家分享,如果有大神路過,還請多多指教。
Qt 模擬乙個導航定位系統
軟體結構 現在開始講一下原始碼吧 重點 anchors錨布局 discover qml的布局方式一般採用兩種,一種就是直接設定x與y座標的值。一種是採用相對位置布局,anchors錨布局,使用錨布局能夠使介面更緊湊,更有整體化,我們將這種機制成為錨點 anchor 錨點允許我們靈活地設定兩個元素的相...
乙個小白的vue理解
幾個主要的鉤子函式 1.beforecreate 建立前 資料觀測和初始化事件還未開始 2.created 建立後 3.beforemouted 載入前 相關的render函式首次被呼叫,把data裡面的資料和模板生成html。注意此時還沒有掛載html到頁面上。完成資料觀測,屬性和方法的運算,初始...
乙個小白對Arguments的理解
2 arguments與形參保持不同的儲存空間,只有當形參被賦值之後兩者才會相等 3 傳說在嚴格模式下函式內自調,arguments.callee失效了,arguments.callee function name function tomg a,b,c console.log a console....