ROS:基于gazebo仿真運(yùn)行SLAM算法包(二):運(yùn)行rtabmap算法包并建圖

接上篇http://www.reibang.com/p/fb91063a9fd7

rtabmap算法簡(jiǎn)介

rtabmap全名是Real-Time Appearance-Based Mapping, 是一個(gè)基于RGB-D, Stereo和雷達(dá)的Graph-Based SLAM算法,并使用了增長(zhǎng)式閉環(huán)檢測(cè)。具體算法詳解請(qǐng)看:https://blog.csdn.net/xmy306538517/article/details/78771104
其中包括使用詞袋法优烧,SURF特征檢測(cè)等算法。

安裝rtabmap算法

具體步驟可以根據(jù)官方網(wǎng)站:https://github.com/introlab/rtabmap_ros#installation
要在workspace中配置的趋箩,可從"Build from source"開(kāi)始follow。
運(yùn)行官方Demo:
由于官方Demo在google drive,鑒于種種原因加派,已轉(zhuǎn)放在鏈接: https://pan.baidu.com/s/1MgxAjnfi2NYk_v9x7MmR5w 提取碼: 7y9s

$ roslaunch rtabmap_ros demo_robot_mapping.launch
$ rosbag play --clock demo_mapping.bag

運(yùn)行沒(méi)問(wèn)題即安裝完成叫确。

在gazebo世界啟動(dòng)機(jī)器人并運(yùn)行rtabmap建圖

先上視頻連接:http://www.iqiyi.com/w_19s9z71je9.html
先看啟動(dòng)rtabmap算法的launch文件:rgbd_mapping.launch


<launch>
  <!-- Choose visualization -->
  <arg name="rviz"                    default="false" />
  <arg name="rtabmapviz"              default="true" /> 
  
  <!-- Localization-only mode -->
  <arg name="localization"            default="false"/>
  
  <!-- Corresponding config files -->
  <arg name="rtabmapviz_cfg"          default="~/.ros/rtabmap_gui.ini" />
  <arg name="rviz_cfg"                default="$(find rtabmap_ros)/launch/config/rgbd.rviz" />
  
  <arg name="frame_id"                default="base_link"/>   <!-- Fixed frame id, you may set "base_link" or "base_footprint" if they are published -->
  <arg name="database_path" />
  <arg name="rtabmap_args"            default=""/>
  <arg name="launch_prefix"           default=""/>              <!-- for debugging purpose, it fills launch-prefix tag of the nodes -->
  <arg name="approx_sync"             default="true"/>         <!-- if timestamps of the input topics are not synchronized -->
   
  <arg name="rgb_topic"               default="/rgb/image_raw" />
  <arg name="depth_registered_topic"  default="/depth/image_raw" />
  <arg name="camera_info_topic"       default="/rgb/camera_info" />
  <arg name="compressed"              default="false"/>
   
  <arg name="subscribe_scan"          default="true"/>         <!-- Assuming 2D scan if set, rtabmap will do 3DoF mapping instead of 6DoF -->
  <arg name="scan_topic"              default="/robot/laser/scan"/>
  
  <arg name="subscribe_scan_cloud"    default="false"/>         <!-- Assuming 3D scan if set -->
  <arg name="scan_cloud_topic"        default="/scan_cloud"/>
  
  <arg name="visual_odometry"         default="true"/>          <!-- Generate visual odometry -->
  <arg name="odom_topic"              default="/odom"/>         <!-- Odometry topic used if visual_odometry is false -->
  <arg name="odom_frame_id"           default=""/>              <!-- If set, TF is used to get odometry instead of the topic -->
   
  <arg name="namespace"               default="rtabmap"/>
  <arg name="wait_for_transform"      default="0.2"/>
  
  <include file="$(find rtabmap_ros)/launch/rtabmap.launch">
    <arg name="rtabmapviz"              value="$(arg rtabmapviz)" /> 
    <arg name="rviz"                    value="$(arg rviz)" />
    <arg name="localization"            value="$(arg localization)"/>
    <arg name="gui_cfg"                 value="$(arg rtabmapviz_cfg)" />
    <arg name="rviz_cfg"                value="$(arg rviz_cfg)" />
  
    <arg name="frame_id"                value="$(arg frame_id)"/>
    <arg name="namespace"               value="$(arg namespace)"/>
    <arg name="database_path"           value="$(arg database_path)"/>
    <arg name="wait_for_transform"      value="$(arg wait_for_transform)"/>
    <arg name="rtabmap_args"            value="$(arg rtabmap_args)"/>  
    <arg name="launch_prefix"           value="$(arg launch_prefix)"/>          
    <arg name="approx_sync"             value="$(arg approx_sync)"/>

    <arg name="rgb_topic"               value="$(arg rgb_topic)" />
    <arg name="depth_topic"             value="$(arg depth_registered_topic)" />
    <arg name="camera_info_topic"       value="$(arg camera_info_topic)" />
    <arg name="compressed"              value="$(arg compressed)"/>                                                                                
   
    <arg name="subscribe_scan"          value="$(arg subscribe_scan)"/>
    <arg name="scan_topic"              value="$(arg scan_topic)"/>
  
    <arg name="subscribe_scan_cloud"    value="$(arg subscribe_scan_cloud)"/>
    <arg name="scan_cloud_topic"        value="$(arg scan_cloud_topic)"/>
   
    <arg name="visual_odometry"         value="$(arg visual_odometry)"/>          
    <arg name="odom_topic"              value="$(arg odom_topic)"/>    
    <arg name="odom_frame_id"           value="$(arg odom_frame_id)"/>         
    <arg name="odom_args"               value="$(arg rtabmap_args)"/>
  </include>
</launch>

這里主要是有幾處改動(dòng):


rgbd_mapping_1.png

在frame_id屬性,須設(shè)定為機(jī)器人的根節(jié)點(diǎn)(base_link or base_footprint)芍锦,如果只是用相機(jī)竹勉,因?yàn)槭菃我还?jié)點(diǎn),所以只需要設(shè)為所用傳感器的frame_id即可娄琉。database_path是指定要儲(chǔ)存建圖數(shù)據(jù)庫(kù)的存放地址次乓,原本設(shè)定為一個(gè)默認(rèn)路徑,但是鑒于在每次建圖時(shí)孽水,不設(shè)定的話會(huì)進(jìn)行覆蓋檬输,為避免此種情況,盡量手動(dòng)指定路徑匈棘。


rgbd_mapping_3.png

這里定義的topic 是對(duì)應(yīng)上gazebo文件中定義的topic名稱。
rgbd_mapping_2.png

這里是說(shuō)明是否接受雷達(dá)數(shù)據(jù)析命,因?yàn)樵谏掀恼轮兄魑溃玫臋C(jī)器人文件有使用雷達(dá)插件逃默,因此這里啟用,并定義相應(yīng)的topic 名稱簇搅。


rgbd_mapping_4.png

這里是引用了另外的launch文件完域,實(shí)際上是同時(shí)運(yùn)行了rtabmap.launch文件并傳入了參數(shù)。
啟動(dòng)launch文件:
roslaunch rtabmap_ros rgbd_mapping.launch database_path:=~/dev/catkin_ws/rtabmap.db

打開(kāi)后:


gazebo_rtabmap_origin.png

完成建圖后瘩将,打開(kāi)建圖數(shù)據(jù)庫(kù):


rtabmap_database_1.png

打開(kāi)3d地圖:


rtabmap_database_2.png

至此吟税,基于gazebo仿真rtabmap算法就完成了。
目前還沒(méi)涉及到建圖結(jié)果和ground truth數(shù)據(jù)的比對(duì)姿现,后續(xù)將會(huì)嘗試記錄為rosbag肠仪,并從中根據(jù)topic導(dǎo)出csv文件,與建圖后的csv文件進(jìn)行比對(duì)备典,評(píng)估建圖效果异旧。

參考連接:http://wiki.ros.org/rtabmap_ros/Tutorials/HandHeldMapping

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市提佣,隨后出現(xiàn)的幾起案子吮蛹,更是在濱河造成了極大的恐慌,老刑警劉巖拌屏,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潮针,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡倚喂,警方通過(guò)查閱死者的電腦和手機(jī)每篷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)务唐,“玉大人雳攘,你說(shuō)我怎么就攤上這事》愕眩” “怎么了吨灭?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)刑巧。 經(jīng)常有香客問(wèn)我喧兄,道長(zhǎng),這世上最難降的妖魔是什么啊楚? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任吠冤,我火速辦了婚禮,結(jié)果婚禮上恭理,老公的妹妹穿的比我還像新娘拯辙。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布涯保。 她就那樣靜靜地躺著诉濒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪夕春。 梳的紋絲不亂的頭發(fā)上未荒,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音及志,去河邊找鬼片排。 笑死,一個(gè)胖子當(dāng)著我的面吹牛速侈,可吹牛的內(nèi)容都是我干的率寡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼锌畸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼勇劣!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起潭枣,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤比默,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后盆犁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體命咐,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年谐岁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了醋奠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伊佃,死狀恐怖窜司,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情航揉,我是刑警寧澤塞祈,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站帅涂,受9級(jí)特大地震影響议薪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜媳友,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一斯议、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧醇锚,春花似錦哼御、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尿扯。三九已至,卻和暖如春焰雕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背芳杏。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工矩屁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爵赵。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓吝秕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親空幻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烁峭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容