7-機器人SLAM建圖

常用的 SLAM 功能包應(yīng)用

gmapping

gmapping 功能包

  • 基于激光雷達
  • Rao-Blackwellized粒子濾波算法
  • 二維柵格地圖
  • 需要機器人提供里程計信息
  • OpenSlam開源算法
  • 輸出地圖話題:
  • nav_msgs/OccupancyGrid。
graph TD
A(即時定位與地圖建模 gmapping)

B(深度信息)-->A

C(IMU信息)-->A 

D(里程計信息)-->A

<center>gmapping 功能包的總體框架</center>

安裝gmapping

sudo apt-get install ros-melodic-gmapping

<center>gmapping 功能包中的話題和服務(wù)</center>

名稱 類型 描述
Topic 訂閱 tf tf/tfMessage 用于激光雷達坐標系,基座標系。里程計坐標系之間的變換
Topic 訂閱 scan sensor_msgs/LaserScan 激光雷達掃描數(shù)據(jù)
Topic 發(fā)布 map_metedata nav_msgs/MapMeteData 發(fā)布地圖Meta數(shù)據(jù)
Topic 發(fā)布 map nav_msgs/OccupancyGrid 發(fā)布地圖柵格數(shù)據(jù)
Topic 發(fā)布 ~entropy std_msgs/Float64 發(fā)布機器人姿態(tài)分布熵的估計
Service dynamic_map nav_msgs/GetMap 獲取地圖數(shù)據(jù)

<center>gampping 功能包中的TF變換</center>

TF變換 描述
必須的TF坐標變換 <scan frame>->base_link 激光雷達坐標系之間的變換
base_link->odom 基座標系與里程計坐標系之間的變換。一般由里程計節(jié)點發(fā)布
發(fā)布的TF坐標變換 map->odom 地圖坐標系與機器人里程計坐標系之間的變換。估計機器人在地圖中的位置

保存地圖

rosrun map_server map_saver -f cloister_gmapping

hector

hector 功能包

  • 基于激光雷達
  • 高斯牛頓方法
  • 二維柵格地圖
  • 不需要機器人提供里程計信息
  • 輸出地圖話題:
  • nav_msgs/OccupancyGrid。
graph TD
A(即時定位與地圖建模 hector)

B(深度信息)-->A

<center>hector_slam 功能包的總體框架</center>

安裝hector_slam

$ git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam.git

<center>hector 功能包中的話題和服務(wù)</center>

名稱 類型 描述
Topic 訂閱 syscommand std_msgs/String 系統(tǒng)命令
Topic 訂閱 scan sensor_msgs/LaserScan 激光雷達掃描數(shù)據(jù)
Topic 發(fā)布 map_metedata nav_msgs/MapMeteData 發(fā)布地圖Meta數(shù)據(jù)
Topic 發(fā)布 map nav_msgs/OccupancyGrid 發(fā)布地圖柵格數(shù)據(jù)
Topic 發(fā)布 slam_out_pose geometry_msgs/PoseStamped 估計的機器人位置(沒用協(xié)方差)
Topic 發(fā)布 poseupdate geometry_msgs/PoseWithCovarianceStamped 估計的機器人位置(具有高斯估計的不確定性)
Service dynamic_map nav_msgs/GetMap 獲取地圖數(shù)據(jù)

<center>hector 功能包中的TF變換</center>

TF變換 描述
必須的TF坐標變換 <scan frame>->base_link 激光雷達坐標系之間的變換
base_link->odom 基座標系與里程計坐標系之間的變換。一般由里程計節(jié)點發(fā)布
發(fā)布的TF坐標變換 map->odom 地圖坐標系與機器人里程計坐標系之間的變換。估計機器人在地圖中的位置

cartographer

cartographer 功能包

  • 2016年10月5日,谷歌開源
  • 基于圖網(wǎng)絡(luò)的優(yōu)化方法
  • 二維或三維條件下的定位及建圖功能
  • 設(shè)計目的是在計算資源有限的情況下,實時獲取相對較高精度的2D地圖
  • 主要基于激光雷達
  • 后續(xù)會支持更多傳感器和機器人平臺,同時不斷增加新的功能。

安裝 cartographer

$ sudo apt-get install ros-melodic-cartographer-*

保存地圖

$ rosservice call /finish_trajectory 0
$ rosservice call /write_state "{filename: '${HOME}/mymap.pbstream'}"
$ rosrun cartographer_ros cartographer_pbstream_to_ros_map-map_filestem=${HOME}/mymap-pbstream_filename=${HOME}/mymap.pbstream-resolution=0.05

rtabmap

安裝 rtabmap

$ sudo apt-get install ros-melodic-rtabmap-ros

查看建圖結(jié)果

$ rtabmap-databaseViewer ~/.ros/rtabmap.db
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容