<th id="7vyfh"></th>

    <dd id="7vyfh"><pre id="7vyfh"></pre></dd>

    服務機器人行業領先品牌

    技術專欄 當前位置:首頁 > 資訊中心 > 技術專欄

    ROS 機器人如何使用GPS定位導航

    發布時間:2018-10-29瀏覽次數:17322字號:

    1. GPS簡述


    GPS定位已經是非常普及的技術了,不夸張的說,現今社會幾乎人人都在主動或被動的使用它。最最常見的應用案例就是智能手機了?,F在每一款手機都內置有GPS定位功能,使用者可以隨時知道自己所在的位置。

    GPS的全稱是“全球衛星定位系統”,目前投入商業應用的主要有四套選擇:GPS 系統(美國)、BDS 系統(中國北斗)
    、GLONASS 系統(俄羅斯)和伽利略衛星導航系統(歐盟)。

    GPS就是利用設備接收到的組網衛星信號來計算出設備當前的準確的地理位置,實現原理并不神秘,想了解更多技術原理請百度一下,此處不再重述。

    毋庸置疑,美國的GPS系統目前是完備和商用化最普及的首選系統,中國的北斗系統這幾年發展迅猛,盡管定位精度和使用范圍現在還稍遜于美國的GPS系統,但估計很快就要達到甚至超過美國。俄羅斯和歐盟的自主GPS系統由于受到經費預算成本的困擾,近期發展進步并不明顯,因此用戶數量有限,尚未全面普及。



    2. 機器人利用GPS模塊來定位的可行性與局限性


    GPS模塊在戶外機器的定位導航方面是一個最基本的配置。注意這里主要是針對在戶外工作的機器人,若您的機器人是室內使用的,根本不會被允許到室外工作,那么GPS模塊就沒有任何價值了。因為建筑物的屋頂和墻體會把GPS衛星信號大幅度削弱,一般商用級別的GPS模塊根本接收不到符合要求的信號。

    是不是戶外機器人搭載GPS模塊,就可以精確知道自己的位置?是,也不是!說是,是因為在大尺度地圖(比例尺一般為每厘米100米左右)上,普通商用經濟款的GPS模塊一般能達到的定位精度是20米~50米,在100米/厘米這個級別的地圖上可以比較準確的知道機器人當前位置。說不是,是指在機器人工作區域的微尺度地圖(一般是每厘米10米以下),GPS模塊給出的位置誤差范圍太大,僅僅利用GPS模塊算出來的經緯度坐標無法實現機器人的準確定位,當然更無法推算出機器人的準確運動方向。很遺憾,20米~50米的位置誤差對機器人完成指定任務的應用來說是不可接受的。

    有些人可能很好奇,為什么很多商用的GPS模塊的技術參數上都寫的是2.5米的精度,你這里卻說是10~50米,是不是你用的GPS太LOW了?有過GPS模塊使用經驗的工程師會告訴你,沒錯!理論上標稱2.5米的誤差的普通商用經濟款GPS模塊,在實際應用中,10~50米的誤差是非常正常的。產生這個誤差的原因有很多,在此暫不展開。


    3. ROS機器人如何利用GPS模塊來精確定位


    看到上面的結論,是不是說GPS對機器人的定位導航作用不大?非也!現在的機器人絕對不只是搭載GPS這一種傳感器,常見的機器人都配置有激光雷達、聲納雷達、視覺測距等短距離精確測距設備,利用這些設備,一方面機器人可以及時發現周圍障礙物并及時躲避,另一方面機器人也可是利用這個寫精確測距傳感器來實現局部環境識別定位與導航。

    很顯然,利用GPS模塊來實現20~50米范圍內的粗略位置定位,再利用機器人搭載的短距離精確測距設備(聲納、激光雷達等等)來實現小范圍的局部精確定位,這樣就可以使戶外機器人在任何大小尺度的地圖范圍內都可以準確定位了。



    4. GPS模塊接收到的數據如何變成機器人工作地圖的位置坐標


    普通商用GPS模塊輸出的數據格式均符合NMEA0183標準,通過串口通訊,機器人可以獲得的GPS數據實例如下:
    $GNGGA,084852.000,2236.9453,N,11408.4790,E,1,05,3.1,89.7,M,0.0,M,,*48
    $GNGLL,2236.9453,N,11408.4790,E,084852.000,A,A*4C
    $GPGSA,A,3,10,18,31,,,,,,,,,,6.3,3.1,5.4*3E
    $BDGSA,A,3,06,07,,,,,,,,,,,6.3,3.1,5.4*24
    $GPGSV,3,1,09,10,78,325,24,12,36,064,,14,26,307,,18,67,146,27*71
    $GPGSV,3,2,09,21,15,188,,24,13,043,,25,55,119,,31,36,247,30*7F
    $GPGSV,3,3,09,32,42,334,*43
    $BDGSV,1,1,02,06,68,055,27,07,82,211,31*6A
    $GNRMC,084852.000,A,2236.9453,N,11408.4790,E,0.53,292.44,141216,,,A*75
    $GNVTG,292.44,T,,M,0.53,N,0.98,K,A*2D
    $GNZDA,084852.000,14,12,2016,00,00*48
    $GPTXT,01,01,01,ANTENNA OK*35
    數據里面有三種數據類型GN、GP、BD ,他們分別代表雙模模式、GPS 模式、北斗模式
    NMEA0183 協議 幀格式內容可以參考以下幾個表格
    (1) $GPGGA (GPS 定位信息)
    (2) L $GPGLL (地理定位信息)
    (3)A $GPGSA (當前衛星信息)
    (4) $GPGSV (可見衛星信息)
    (5) $GPRMC (最簡定位信息)
    (6) $GPVTG (地面速度信息)(7)天線狀態輸出
    我們主要使用GPGGA(或GNGGA)這一幀的數據,具體分析如下:


    1) UTC 時間,格式是 hhmmss.sss ,小數點后三位秒忽略,那就 08 點 48 分 52秒。UTC + 時區差 = 本地時間時區差東為正,西為負。在此,把東八區時區差記為 +08, 所以北京時間是 16 點 48 分 5 秒

    2) 收到的經緯度的數據格式是度分格式,實際使用中為了方便要換算成度+十進制小數,例如:
    緯度:ddmm.mmmm 北緯 2236.9453 22+(36.9453/60)= 22.615755
    經度:dddmm.mmmm 東經 11408.4790 114+(08.4790/60)=114.141317

    3)第8項是衰減因子,這個數值代表的是誤差水平。


    機器人定位主要用經緯度和衰減因子這三個指標。經緯度用來定位,衰減因子用來計算出定位誤差半徑。

    對于已經繪制好的機器人地圖,ROS架構下用的最多的PGM格式的占位地圖,由這種地圖的定位是以米為單位的XY二維平面坐標系,這個坐標系和GPS提供的經緯度坐標系需要用至少兩個點來標定轉換才能互通,因此,當機器人使用二維PGM格式的占位地圖來定位導航時,我們必須先選取PGM地圖上的兩個點作為標定參考點(通常選坐標原點和X軸上的最遠距離點作為標定參考點),然后再記錄下這兩個標定點的經緯度數值,通過平面幾何的三角函數計算出GPS經緯度坐標系和PGM地圖坐標系之間的轉換函數,這樣就將GPS獲得的經緯度數據與機器人的地圖坐標一一對應起來


    為了能讓ROS機器人利用接收到的GPS信息進行定位導航這里需要編寫兩個專門的節點,一個用來讀取GPS模塊的幀信息,另一個用來把GPS信息轉化為ROS地圖坐標的節點,用C++或PYTHON可以比較容易的實現上述經緯度和PGM坐標

    系之間的轉換函數。


    當然,普通商業用途的GPS模塊轉化來的坐標信息有10米~20米左右的精度誤差,這一點就需要再ROS下的改良過的AMCL

    節點來進行二次處理,才能精確的實現諸如巡檢機器人、安防機器人等ROS架構機器人的精確定位與導航

     

    上一篇:已經沒有了

    下一篇:ROS機器人軟件開發平臺的前世今生

     
    在線咨詢
    QQ客服一
    QQ客服二
    微信客服
    15013678826
    返回
    頂部
    亚洲古装无码色网站 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>