激光slam Gmapping安装与测试

slam_gmapping安装与测试

既然想做一个小车,就干脆把小车做的有趣一点,小车现在已经可以接受键盘的控制实现行走了,下一步就是给它加一个新功能,比如利用激光slam实现定位与导航。

安装

1.直接通过命令安装(前提是安装好了ros kinetic环境)

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

2.下载用于测试的数据包,这里直接通过网盘下载,因为原链接已经失效

测试数据.bag

测试

1.运行roscore

roscore

2.新开终端,设置参数,确保在任何节点使用前设定use_sim_time参数为true,这个参数当回放bag数据集是设置为true,此时说明系统使用的是仿真时间

rosparam set use_sim_time true

3.新开终端,运行slam_gmapping节点,它将在base_scan主题上收听激光扫描数据

rosrun gmapping slam_gmapping scan:=base_scan

4.新开终端,进入下载的数据的位置,并play,例如我的就是basic_localization_stage_indexed.bag,把它改成你下载的数据的名字,它的作用是把激光数据发送给slam_gmapping节点。

rosbag play --clock basic_localization_stage_indexed.bag 

激光slam Gmapping安装与测试_第1张图片
5.利用ros的rviz工具可以看到你建立的地图,新开终端,打开rviz。

rviz rviz

点击add,让其topic为/map,即可看到创建的2D地图。
激光slam Gmapping安装与测试_第2张图片

6.创建的地图。
激光slam Gmapping安装与测试_第3张图片

到这里,安装测试就已经完成了,需要进一步了解的可以继续往下看。

7.节点、话题、发布者和订阅者之间关系可以通过状态图(graph)直观地表示。
执行:

rqt_graph

rosrun rqt_graph rqt_graph

激光slam Gmapping安装与测试_第4张图片

状态图是当前正在运行的消息通信的图形表示,通过它我们可以直观的看到我们使用数据集测试slam_gmapping时节点和话题之间的关系。

———————————————————————————————————————————————————————
我们已经成功安装了Gmapping,下一步会介绍如何使用激光传感器,而不是测试数据来实现建图过程。最终实现让ros小车搭载激光传感器自主建图与定位,在这个过程中,我们将会逐渐了解ros机器人系统的工作原理与使用方式,同时学习Gmapping的数学原理。

附:Gmapping官方说明

1.硬件需求

To use slam_gmapping, you need a mobile robot that provides odometry data and is equipped with a horizontally-mounted, fixed, laser range-finder. The slam_gmapping node will attempt to transform each incoming scan into the odom (odometry) tf frame. See the “Required tf transforms” for more on required transforms.

gmapping需要一个能提供里程数据的移动机器人,水平安装的激光雷达。slam_gmapping节点把传进的激光扫描数据转换为tf框架下的里程数据(odom)。

2.节点

slam_gmapping

The slam_gmapping node takes in sensor_msgs/LaserScan messages and builds a map (nav_msgs/OccupancyGrid). The map can be retrieved via a ROS topic or service.

slam_gmapping节点接收sensor_msgs/LaserScan消息,创建网格地图。

3.订阅

tf (tf/tfMessage)
Transforms necessary to relate frames for laser, base, and odometry (see below)
scan (sensor_msgs/LaserScan)
Laser scans to create the map from

slam_gmapping订阅tf和scan话题。

4.发布话题

map_metadata (nav_msgs/MapMetaData)
Get the map data from this topic, which is latched, and updated periodically.
map (nav_msgs/OccupancyGrid)
Get the map data from this topic, which is latched, and updated periodically
~entropy (std_msgs/Float64)
Estimate of the entropy of the distribution over the robot’s pose (a higher value indicates greater uncertainty).

slam_gmapping发布map_metadata(地图元数据),map(地图网格数据),~entropy(机器人估计位置)等话题。

激光slam Gmapping安装与测试_第5张图片

订阅:/scan /tf

发布:/map /map_metadata /slam_gmapping/entropy

你可能感兴趣的:(ros小车,Gmapping,ros系统)