RViz 实时观测机器人建立导航2D封闭空间地图过程 (SLAM) ----27
2016-04-12 19:36
302 查看
原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/
ROS提供了非常强大的图形化模拟环境 RViz,这个 RViz 能做的事情非常多。今天我们学习一下如何使用 RViz 对机器人在路径探索过程中对地图动态观测。我们将学习重放已经采集的数据来模拟机器人输入,从而将精力放到SLAM和地图的建立以及RViz的使用上。下面是效果图:
这个包需要单独下载 ,命令 :
操作过程:
1.启动ROS master. 这是所有ROS操作的第一步,启动节点管理器。
2.配置ROS启用重放数据中的时间而非本机时间,影响整个系统所有时间API的 输出结果。在默认情况下,ROS使用ubuntu系统的时间,也就是墙上时钟时间(wall clock)。但我们重播一个记录历史文件时,里面记录的是历史时间,所以我们需要告诉ROS从现在起开始启用模拟时间。
3.下载ROS提供的激光数据采集记录文件
4.启动gmapping, 并监听 scan_base topic发来的消息。该topic是由模拟器发布的。
5启动模拟器重放激光数据
6.启动RViz,点击 add 按钮(左下方) ,在弹出的列表中选择 map,点击OK,这时开始展现一个空的地图
7.最关键的一步,要告诉RViz 生成map信息的topic是什么。我们前面讲到过,gmapping输出的topic是 /map. 如下图配置,立即就可以看到地
ROS提供了非常强大的图形化模拟环境 RViz,这个 RViz 能做的事情非常多。今天我们学习一下如何使用 RViz 对机器人在路径探索过程中对地图动态观测。我们将学习重放已经采集的数据来模拟机器人输入,从而将精力放到SLAM和地图的建立以及RViz的使用上。下面是效果图:
基本概念
ROS 对机器人导航提供了非常强大的支持,这可以让我们在不了解细节和海量复杂无比的科学计算的情况下就可以对机器人的导航,定位,路径规划。这其中第一步就是 要建立一个封闭环境的地图,这个过程叫做SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。 SLAM最早由Smith、Self和Cheeseman于1988年提出。 由于其重要的理论与应用价值,被很多学者认为是实现真正全自主移动机器人的关键。ROS gmaping 工具
ROS 提供的gmaping包是用来生成地图的,它是对著名的开源OpenSlam包在ROS框架下的一个实现。这个包提供了对激光设备的Slam, 根据激光设备的输入和姿态数据从而建立一个基于网格的的2D地图(就像建立楼房设计的 平面图)。它需要从ROS系统监听许多Topic,并输出一个Topic --map (nav_msgs/OccupancyGrid),这也是RViz的输入Topic.这个包需要单独下载 ,命令 :
sudo apt-get install ros-indigo-slam-gmapping
操作过程:
1.启动ROS master. 这是所有ROS操作的第一步,启动节点管理器。
roscore
2.配置ROS启用重放数据中的时间而非本机时间,影响整个系统所有时间API的 输出结果。在默认情况下,ROS使用ubuntu系统的时间,也就是墙上时钟时间(wall clock)。但我们重播一个记录历史文件时,里面记录的是历史时间,所以我们需要告诉ROS从现在起开始启用模拟时间。
rosparam set use_sim_time true
3.下载ROS提供的激光数据采集记录文件
wget http://pr.willowgarage.com/data/gmapping/basic_localization_stage.bag
4.启动gmapping, 并监听 scan_base topic发来的消息。该topic是由模拟器发布的。
rosrun gmapping slam_gmapping scan:=base_scan
5启动模拟器重放激光数据
rosbag play --clock basic_localization_stage.bag
6.启动RViz,点击 add 按钮(左下方) ,在弹出的列表中选择 map,点击OK,这时开始展现一个空的地图
rosrun rviz rviz
7.最关键的一步,要告诉RViz 生成map信息的topic是什么。我们前面讲到过,gmapping输出的topic是 /map. 如下图配置,立即就可以看到地
相关文章推荐
- 剑指offer系列之36:数字在排序数组中出现的次数
- Objective-C 面向对象的编程语言
- 安卓MVP设计思想,结合greendao+okhttp通过一个登陆的例子来进行学习(eclipse篇)
- Java基础学习总结(38)——Lombok的使用和原理
- Java基础学习总结(38)——Lombok的使用和原理
- LeetCode *** 62. Unique Paths
- lombok的使用和原理
- android broadcast使用总结分享
- 项目23--用多文件组织带武器的游戏角色类
- 解决unable unable to locate package问题
- 嵌入式 hi3518平台指定网卡测试是否通外网
- 【error】: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
- 润乾集算报表实现减少存储过程
- 解决did not call through to super.onDestroy()
- 十个随机变量的求和
- MBR为什么最大只能用2TB
- nginx反向代理同一主机多个网站域名
- 嵌入式 hi3518平台获取网络环境中的ip、netmask、broadcast等信息
- hdu 1546 Idiomatic Phrases Game
- 冒泡排序