本文介绍使用机器人记录的tf变换和激光扫描数据来建立2D地图.并在ROS的图形化模拟环境rviz中通过重新回放记录的数据作为机器人真实传感器采集的输入,来观测地图动态创建过程.

1.ROS gmapping工具

ROS提供的gmapping包是用来生成地图的,它是对著名的开源openslam包在ROS框架下的一个实现.这个包提供了对激光设备的slam,根据激光设备的输入和姿态数据从而建立一个基于网格的2D地图.它需要从ROS系统监听许多Topic,并输出一个Topic,即map(nav_msgs/OccupancyGrid),这也是Rviz的输入Topic.

下载这个包的命令如下:sudo apt-get install ros-indigo-slam-gmapping

2.硬件要求

本文采用的是模拟数据,不需要任何硬件需要.

gmapping需要使用实际的机器人获取激光或者深度数据.通常这些激光距离探测器价格比较昂贵,ROS推荐使用的SCIP2.2, Hokuyo Model 04LX, 30LX ,SICK LMS2xx Lasers 价格都巨贵无比,而且尺寸都较大。ROS使用的廉价机器人TurtleBot使用的则是深度相机Kinnect来模拟,其价格在接近千元.

3.数据包准备过程

1)数据包的准备

下载ROS提供的激光数据采集记录文件

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

2)使用机器人创建自己的bag包

a)给机器人安装激光器,确保可以发布变换数据,且可以遥控操作

b)启动扫描和变换数据记录

rosbag record -O mylaserdata /base_scan /tf

当前目录将创建一个名为mylaserdata_<DATE>-topic.bag的文件

c)让机器人动起来

d)kill掉rosbag用户可以看到记录文件已经创建

4.操作过程

1)启动节点管理器master

roscore

2)配置ROS启用重放数据中的时间而非本机时间,影响整个系统所有时间API的输出结果.在默认情况下,ROS使用ubuntu系统的时间,也就是墙上时钟时间(wall clock).但我们重播一个记录历史文件时,里面记录的是历史时间,所以我们需要告诉ROS从现在起开始启用模拟时间.

rosparam set use_sim_time true

3)运行slam_gmapping节点,它将在base_scan主题上监听激光扫描数据并创建地图,base_scan是模拟器rosbag发布的.

Note:在PR2上里程坐标系名字为odom_combined

命令为:rosrun gmapping slam_gmapping scan:=base_scan _odom_frame:=odom_combined

4)重新打开一个终端,使用模拟器rosbag启动bag包回放,将数据提供给slam_gmapping节点.

rosbag play --clock basic_localization_stage.bag

5)启动rviz,在左下方选择add,然后选择map,创建一副空地图;接着指定rviz的topic为/map可以监听到地图数据

rosrun rviz rviz

6)使用map_server功能包的map_saver保存新地图到磁盘(等rosbag结束后)

rosrun map_server map_saver -f my_map

此时可以看到本地地图map.gpm已经生成,可以用图像浏览器(gimp, eog, gthumb, 等等)打开查看。例如eog my_map1.pgm

注意:最后别忘了重新设置use_sim_time参数,即使用命令:rosparam set use_sim_time false

5.下面来看一下显示的节点图

1.

2.

3.

4.

5.

6.

查看它的服务和话题

在slam_gmapping中使用Log数据创建地图的更多相关文章

  1. 在 SharePoint 2013 中针对地理位置字段创建地图视图

    在 SharePoint 2013 中针对地理位置字段创建地图视图 了解如何通过在 SharePoint 2013 列表中使用地图视图来显示位置信息.您可以通过 SharePoint 用户界面 (UI ...

  2. 创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息。

    创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息. <html> & ...

  3. 在Microsoft Power BI中创建地图的10种方法

    今天,我们来简单聊一聊“地图”. 在我们日常生活中,地图地位已经提升的越来越高,出门聚餐.驾驶.坐车.旅行......应运而生的就是各种Map APP. 作为数据分析师,我们今天不讲生活地图,要跟大家 ...

  4. C语言中怎么将文件里的数据创建到(读到)链表中?

    定义的结构体: struct student { ]; //学生学号 ]; //学生姓名 struct student *next; //next 指针 指向 struct student 类型的变量 ...

  5. 【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)

    原文地址:http://blog.csdn.net/zwan0518/article/details/11972853 目录(?)[-] 一查询优化 1创建索引 2缓存的配置 3slow_query_ ...

  6. Sql server中用现有表中的数据创建Sql的Insert插入语句

    之前,在Codeproject发表过一篇关于用现有表中数据创建Insert的Sql语句的存储过程,今天将其搬到这里来,注意本存储过程仅适用于SQL SERVER. 介绍 一些时候,你想导出一些现有表中 ...

  7. iOS中偏好设置的创建,数据写入与读取

    NSUserDefaults与NSDictinary? 应用通过NSUserDefaults用键值对的方式来读取和保存偏好设置数据,与通过键从NSDictionary对象中获取数据一样,不同之处在于N ...

  8. 通过Python提取10000份log中的产品数据

    一.背景 协助产品部门在10000份产品log信息中提取产品的SN号.IMEI号.ICCID号到Excel表格中. 1.l原始的og内容: 2.提取后的Excel表格: 二.实现 1.思路 a.for ...

  9. 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)

    原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图. ...

随机推荐

  1. sapconnector.dll download

    Sapnoc30Demo_Yan.rar Sap30Server.rar SAPNCO_Sample_Code.zip sapcon3.0_X64.rar DbEntry.Net.4.1.Setup. ...

  2. Tornado输出和响应头

    1.输出 再来看看输出`write`,实际上,`write`并没有直接把数据返回给前端,而是先写到缓存区,函数结束之后才会返回到前端,我们验证如下 class FlushHandler(tornado ...

  3. 常用DNS列表(电信、网通)

    电信 DNS 列表 -- 共 32 条 (按拼音排序) 电信 A安徽 202.102.192.68 202.102.199.68     电信 A澳门 202.175.3.8 202.175.3.3 ...

  4. 【转】Python自动化测试 (一) Eclipse+Pydev 搭建开发环境

    原文网址:http://www.cnblogs.com/TankXiao/archive/2013/05/29/3033640.html C#之所以容易让人感兴趣,是因为安装完Visual Studi ...

  5. memcache使用经历

    memcache可以看成是一个大内存库,因为可以集群,所以可以看成是无限大的内存库.既然是内存库,那么我们放的就是一些map了.map里就键值对,虽然内存可以通过集群的方式无限扩展,但单个键值对的大小 ...

  6. 使用Spring的StingUtils的commaDelimitedListToStringArray来获取字符串数组

    有时候我们需要把一些带逗号的字符串解析为数组或者List.Set,如果自己转换的话比较麻烦,可以直接使用Spring的工具类StringUtils,通过配置文件调用该工具类方法即可.具体看例子 < ...

  7. LVS+Keepalived搭建

    LVS+Keepalived搭建 原理说明 (推荐): http://www.cnblogs.com/likehua/archive/2014/06/19/3796849.html http://ou ...

  8. 高速PCB设计注意事项

    和SERDES应用相关的高速系统PCB设计注意事项如下: (1)微带(Microstrip)和带状线(Stripline)布线. 微带线是用电介质分隔的参考平面(GND或Vcc)的外层信号层上的布线, ...

  9. RecyclerView(滚动控件)的用法

    1.首先在build.gradle中添加依赖库 compile 'com.android.support:recyclerview-v7:24.2.1' 2.修改activity_main.xml & ...

  10. git 本地文件里内容 操作记录

    本地环境文件合并分支(以下的都分别 commit提交了的) [一.分支[追加] 和 [新增] 新信息 合并主线  情景] 分支内容: dr.find_element_by_id("su&qu ...