RViz 實時觀測機器人建立導航2D封閉空間地圖過程 (SLAM) ----27


原創博客:轉載請表明出處:http://www.cnblogs.com/zxouxuewei/

 

ROS提供了非常強大的圖形化模擬環境 RViz,這個 RViz 能做的事情非常多。今天我們學習一下如何使用 RViz 對機器人在路徑探索過程中對地圖動態觀測。我們將學習重放已經采集的數據來模擬機器人輸入,從而將精力放到SLAM和地圖的建立以及RViz的使用上。下面是效果圖:

 基本概念

ROS 對機器人導航提供了非常強大的支持,這可以讓我們在不了解細節和海量復雜無比的科學計算的情況下就可以對機器人的導航,定位,路徑規划。這其中第一步就是 要建立一個封閉環境的地圖,這個過程叫做SLAM (simultaneous localization and mapping),也稱為CML (Concurrent Mapping and Localization), 即時定位與地圖構建,或並發建圖與定位。 SLAM最早由Smith、Self和Cheeseman於1988年提出。 由於其重要的理論與應用價值,被很多學者認為是實現真正全自主移動機器人的關鍵。

 ROS gmaping 工具

ROS 提供的gmaping包是用來生成地圖的,它是對著名的開源OpenSlam包在ROS框架下的一個實現。這個包提供了對激光設備的Slam, 根據激光設備的輸入和姿態數據從而建立一個基於網格的的2D地圖(就像建立樓房設計的 平面圖)。它需要從ROS系統監聽許多Topic,並輸出一個Topic --map (nav_msgs/OccupancyGrid),這也是RViz的輸入Topic.

這個包需要單獨下載 ,命令  :

 sudo apt-get install ros-indigo-slam-gmapping

 操作過程:

1.啟動ROS master.  這是所有ROS操作的第一步,啟動節點管理器。

roscore

2.配置ROS啟用重放數據中的時間而非本機時間,影響整個系統所有時間API的 輸出結果。在默認情況下,ROS使用ubuntu系統的時間,也就是牆上時鍾時間(wall clock)。但我們重播一個記錄歷史文件時,里面記錄的是歷史時間,所以我們需要告訴ROS從現在起開始啟用模擬時間。

rosparam set use_sim_time true  

3.下載ROS提供的激光數據采集記錄文件

wget http://pr.willowgarage.com/data/gmapping/basic_localization_stage.bag  

4.啟動gmapping, 並監聽 scan_base topic發來的消息。該topic是由模擬器發布的。

rosrun gmapping slam_gmapping scan:=base_scan  

5啟動模擬器重放激光數據

rosbag play --clock basic_localization_stage.bag  

6.啟動RViz,點擊 add 按鈕(左下方) ,在彈出的列表中選擇 map,點擊OK,這時開始展現一個空的地圖

rosrun rviz rviz 

7.最關鍵的一步,要告訴RViz  生成map信息的topic是什么。我們前面講到過,gmapping輸出的topic是 /map.  如下圖配置,立即就可以看到地


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM