ROS kinetic SLAM功能包的使用方法

gmapping 功能包
基于激光雷达
Rao-Blackwellized 粒子滤波算法
二维栅格地图
需要机器人提供里程计信息

OpenSlam开源算法
输出地图话题:nav_msgs/OccupancyGrid

kinetic@vm:~$ rosmsg show nav_msgs/OccupancyGrid 
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
nav_msgs/MapMetaData info
  time map_load_time
  float32 resolution
  uint32 width
  uint32 height
  geometry_msgs/Pose origin
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w

int8[] data

参考:http://openslam.org/gmapping.html

gmapping 功能包框架图 (即时定位与地图建模)

ROS kinetic SLAM功能包的使用方法_第1张图片

安装gmapping 
        kinetic@vm:~$ sudo apt-get install ros-kinetic-gmapping

gmapping 功能包中话题和服务
ROS kinetic SLAM功能包的使用方法_第2张图片

gmapping 功能包中的TF变换

ROS kinetic SLAM功能包的使用方法_第3张图片

栅格地图取值原理
致命障碍:栅格值为254,障碍物与机器人的中心重合,此时机器人必然与障碍物发生碰撞。
内切障碍:栅格值为253,障碍物处于机器人轮廓的内切圆内,此时机器人也必然与障碍物发生碰撞。
外切障碍:栅格值为252~128,障碍物处于机器人的轮廓的外切圆内,此时机器人与障碍物临界接触,不一定发生碰撞。
非自由空间:栅格值为128~0,障碍物附近区域,一旦机器人进入该区域,将有较大概率发生碰撞,属于危险警戒区,机器人应该尽量避免进入。
自由区域:栅格值为0,此处没有障碍物,机器人可以自由通过。
未知区域:栅格值为255,此处还没有探知是否有障碍物,机器人可以前往继续建图。

参考: http://wiki.ros.org/gmapping

catkin_ws/src/mbot_navigation/launch/gmapping.launch


    

    
        		设置要订阅的里程计信息在那一个坐标系下的,里程计的坐标系一般是odom坐标系。
        		地图的更新频率,5秒钟更新一次地图
        
        	最大范围5米
        	激光雷达所检测的最大范围4.5米
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        		设置功能包的输入的激光雷达的话题
    

启动gmapping演示(激光雷达)
kinetic@vm:~/catkin_ws$ roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch 
kinetic@vm:~/catkin_ws$ roslaunch mbot_navigation gmapping_demo.launch
kinetic@vm:~/catkin_ws$ roslaunch mbot_teleop mbot_teleop.launch

建图完毕,保存地图
kinetic@vm:~/catkin_ws$ rosrun map_server map_saver -f cloister_gmapping

启动gmapping(kinect)
ubuntu@T430:~$ roslaunch mbot_gazebo mbot_kinect_nav_gazebo.launch
ubuntu@T430:~$ roslaunch mbot_navigation gmapping_demo.launch
ubuntu@T430:~$ roslaunch mbot_teleop mbot_teleop.launch





你可能感兴趣的:(ROS)