ROS系列之初識gmapping,ros初識gmapping
簡介
ROS 提供的 gmaping 包是用來產生地圖的,它是對著名的開源 OpenSlam 包在 ROS 架構下的一個實現。這個包提供了對雷射裝置的 Slam,根據雷射裝置的輸入和姿態資料從而建立一個基於網格的的2D地圖。它需要從 ROS 系統監聽許多 Topic,並輸出一個 Topic——map(nav_msgs/OccupancyGrid),這也是 RViz 的輸入 Topic。
操作流程下載gmaping及樣本資料
sudo apt-get install ros-indigo-slam-gmapping
wget http://pr.willowgarage.com/data/gmapping/basic_localization_stage.bag
啟動ROS master
這是所有 ROS 操作的第一步,就像開機一樣。
roscore
啟動後將終端掛起,另開終端進行其他程式。
設定ROS系統時間
配置 ROS 啟用重放資料中的時間而非本機時間,影響整個系統所有時間 API 的輸出結果。在預設情況下,ROS 使用 ubuntu 系統的時間,也就是牆上時鐘時間(wall clock)。但我們重播一個記錄曆史檔案時,裡面記錄的是曆史時間,所以我們需要告訴ROS從現在起開始啟用類比時間。
rosparam set use_sim_time true
啟動gmapping
啟動 gmapping, 並監聽 scan_base topic 發來的訊息。該 topic 是由模擬器發布的。
rosrun gmapping slam_gmapping scan:=base_scan
啟動後將終端掛起,另開終端進行其他程式。
啟動RViz
啟動 RViz,點擊 add 按鈕(左下方),在彈出的列表中選擇 map,點擊 OK,這時開始展現一個空的地圖。
rosrun rviz rviz
最關鍵的一步,要告訴 RViz 產生 map 資訊的 topic 是什麼,我們前面講到過,gmapping 輸出的 topic 是 /map ,因此將其 topic 配置成 /map。
啟動後將終端掛起,另開終端進行其他程式。
啟動模擬器重放資料
rosbag play --clock basic_localization_stage.bag
立即可以在 RViz 中可以看到地圖的動態建立了。