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