移動機器人的自主定位導航過程如下:
1)采用激光掃描儀或深度相機創(chuàng)建地圖;
2)定位:機器人根據(jù)傳感器的信息并采用自適應蒙特卡羅定位算法計算機器人在地圖中的當前位置。
3)全局路徑規(guī)劃:采用Dijkstra(迪杰斯特拉)算法規(guī)劃出機器人從當前位置到目標位置的全局最優(yōu)路徑,該算法以起始點為中心向外層擴展,直到擴展到終點為止。
4)控制機器人運動:采用動態(tài)窗口法計算出控制命令并發(fā)送給移動平臺,使其沿規(guī)劃的路徑前進,如圖1所示。
圖1移動機器人的導航定位
下面將以TurtleBot機器人為例,介紹實現(xiàn)自主定位導航的方法。
1導航仿真
為了簡單,我們使用采用rbx1_nav/maps中的地圖進行定位導航仿真實驗。
在終端窗口中,分別運行下面的命令:
$ roslaunch rbx1_bringup fake_turtlebot.launch
$ roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml
$ rosrun rviz rviz -d `rospack find rbx1_nav`/amcl.rviz
其中fake_amcl.launch文件位于rbx1_nav/launch目錄下,它的作用是加載地圖、啟動并配置move_base節(jié)點、運行fake_location節(jié)點。
運行結(jié)果如圖2所示:
圖2啟動定位導航
使用rviz工具欄上的2DNav Goal,為機器人設置目標位姿(綠色箭頭),運行效果如圖3所示。