Try   HackMD

使用ROS的人,常常不是為了ROS,而是在尋求導航的過程中知道ROS這個東西。

無可否認的,導航是ROS重要的一個應用。各種導航用的package以及支援ROS的光達共同打造了這個優秀且巨大的成果。

要達成導航功能,機器人有幾個能力必須要具備:

  • 知道自己現在相對於起點的位置。
  • 知道自己在地圖中的全局位置。
  • 知道目前該前進的方向。

而第一點我們會累計車輪旋轉的距離來計算(通常會使用帶編碼器的馬達和加速度計)。這個數據稱為''里程計'',在導航中幾乎可以說是不可或缺的要素,我們下一小節會討論這個東西。

第二點則需要依靠已有的地圖訊息和光達加以比對推測,搭配第一點的相對於起點位置可以更精確的推估當前位置。

第三點則是需要以當前的位置搭配目標位置進行運算。這個方向會拆為兩個部分--一個是前進的大方向,比方說我們想從台北到台南顯然是要維持往南開,這個前進方向我們稱為全域導航規劃;第二個是當前的小方向,比方說我們只能行駛道路,不可能維持一直線向南開,這個局部的細部控制我們稱為局部導航規劃

接下來我們依據上面提到的順序,來對如何在ROS中完成導航進行簡單的介紹和說明。