ROS STAGE教程2(地图定义和GMAPPING建图)

2023-11-06

目前用在ROS Kinetic上的stage版本为4.1 官方教程http://rtv.github.io/Stage/modules.html

用户可以用stage或者gazebo来创建地图和机器人,传感器模型来进行仿真,并与自己的SLAM模型进行通讯达到虚拟仿真的目的。

单独安装和卸载stage命令(stage包含在ROS完整版安装包中无需单独安装):

sudo apt-get remove ros-kinetic-stage
sudo apt-get install ros-kinetic-stage

当然因为stage是一个二维模拟器,相比来说运行资源要求不高,仿真速度快。

ROS上关于stage的教程http://wiki.ros.org/stage/Tutorials/IntroductiontoStageControllers因为已经相对过时,并不适用于当前的版本。

下面开始介绍stage地图文件的基本组成:

首先在自己的~/catkin_ws/src下创建ROS文件包,catkin_create_pkg stage_controllers,暂时不添加依赖包

在~/catkin_ws/src/stage_controllers/下创建world文件夹以及2个文件map.inc test.world,具体内容如下:

map.inc

define floorplan model
(
  # sombre, sensible, artistic
  color "gray30"

  # most maps will need a bounding box
  boundary 1

  gui_nose 1
  gui_grid 0
  gui_outline 0
  gui_move 0
  gripper_return 1
  fiducial_return 1
  ranger_return 1
)

这里创建名为floorplan的模型 定义其中定义boundary 1表示地图的周围形成封闭边界;gui_nose表示是否显示模型的正方向;gui_grid是否显示网格;gui_move是否允许拖拽移动地图,下面表示是否允许传感器探测到,比如ranger_return表示完全能够看到,并设置intensity为1,如果为负值表示无法被探测。

test.world

include "map.inc"

resolution 0.02
interval_sim 20  # simulation timestep in milliseconds

# configure the GUI window
window
(
  size [ 800.000 800.000 ] # in pixels
  scale 25 # pixels per meter
  center [ 0.0  0.0 ]
  rotate [ 0.0  0.0 ]  			
  show_data 1# 1=on 0=off
)


# load an environment bitmap
floorplan
(
  name "roomba-stage"
  bitmap "bitmaps/roomba-stage.png"
  size [ 20.0 15.0 1.0 ]
  pose [ 0.0 0.0 0.0 0.0]
)

define laser ranger
(

  # generic model properties
  color "blue"
  size [ 0.156 0.155 0.19 ]
  sensor
  (
    range [0.0 8.0]
    fov 360.0
    samples 360    
  )

)
#define laser2 ranger
#(

  # generic model properties
 # color "blue"
 # size [ 0.156 0.155 0.19 ]
  #sensor
  #(
   # range [0.0 8.0]
  ##  fov 360.0
   # samples 360    
 # )

#)
define robot position
(
  size [ 0.33 0.33 0.2 ]
  #pose [ 0.0 0.0 0.0 0.0 ]  
  localization "odom"
  localization_origin [ 0.0 0.0 0.0 0.0 ]

  # odometry error model parameters, 
  # only used if localization is set to "odom"
  odom_error [ 0.0 0.0 0.0 0.0 ]
  color "gray50"
  origin [ 0.0 0.0 0.0 0.0 ]
  #positonal things
  drive "diff"
  gui_nose 1
  laser(
        pose [ 0.0 0.0 0.5 0.0 ] 
	ctrl "lasernoise" 
	alwayson 1	
	)
  #laser2(
        #pose [ 0.0 0.0 0.5 0.0 ] 
	#ctrl "lasernoise" 
	#alwayson 1	
	#)
  #ctrl "wander" #uncomment this when $stage test.world

)
robot
(
 name "roomba"
 pose [-8.0 6.0 0.0 0.0] 
 #color "green"

)

这里引用了map.inc文件,在同一个路径下

window下定义了窗口的一些信息,大小比例等;

创建了floorplan的实例,名为roomba-stage

这里只是简单定义了一个机器人和一个激光传感器,同样是先创建模型再创建实例。这样便于快速的创建N个重复的模型。

size(0.33 0.33 1)表示模型实际大小。

show_data 1#表示雷达数据可见

主要在机器人模型中创建了一个lasers()。

odom_error [x y z theta]

parameters for the odometry error model used when specifying localization "odom". Each value is the maximum proportion of error in intergrating x, y, and theta velocities to compute odometric position estimate. For each axis, if the the value specified here is E, the actual proportion is chosen at startup at random in the range -E/2 to +E/2. Note that due to rounding errors, setting these values to zero does NOT give you perfect localization - for that you need to choose localization "gps".

注意这里,如果假设模型位置误差为0,则应该选择gps,而不是odom

localization "gps"

编辑完成后就可以在此world文件夹中打开terminal

方法1:启动stage地图和模型

rosrun stage_ros stageros test.world

查看创建的地图。

键盘上R 可以切换视角 P 暂停 

可以看到雷达扫描的区域,并且仿真速度很快。

当然也可以打开rviz来查看点云数据!
可以安装键盘控制

sudo apt-get install ros-kinetic-teleop-twist-keyboard

并启动

rosrun teleop_twist_keyboard teleop_twist_keyboard.py
用键盘就可以控制图中的机器人移动

可以将点云数据通过gmapping来建图,通过rviz查看地图

rosrun gmapping slam_gmapping scan:=base_scan

方法2:添加第2个ranger,并且用ctrl "wander" 来进行自主控制,缺点是无法与ros进行通讯

stage test.world

注释: Ctrl “lasernoise”用来给laser添加噪声,比例是,方差0.05

可查看路径下是否有对应文件:/opt/ros/kinetic/lib/Stage-4.1/lasernoise.so以及wander.so

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS STAGE教程2(地图定义和GMAPPING建图) 的相关文章

随机推荐

  • Spring Boot + Vue 开发网易云,QQ音乐(附源码)!

    来源 segmentfault com a 1190000021376934 前言 虽然 B S 是目前开发的主流 但是 C S 仍然有很大的市场需求 受限于浏览器的沙盒限制 网页应用无法满足某些场景下的使用需求 而桌面应用可以读写本地文件
  • Markdown嵌入视频

    博客 安卓之家 微博 追风917 CSDN 蒋朋的家 简书 追风917 博客园 追风917 操作 今天看到别人github里可以看youtube视频 小白表示惊呆了有木有 于是乎 于是乎 查看了下人家的代码 表示不懂 然后搜索了下 瞬间正能
  • 职场篇—从网络安全行业人才需求讲个人规划

    如果你是一名正在找工作的网络安全方向大学生 或者是刚刚踏入网络安全领域的新手 这篇文章很适合你 如果你是一名老网安人 看看有哪些你中招了 当你打开BOSS直聘 拉钩等招聘类网站后 在首页的快速导航页面很难找到关于网络安全岗位招聘的引导信息
  • unity 监测UI EventTrigger事件

    如果想控制 只是监听点击一次 设置Image的 Raycast Target 的bool值 这样子就不用反复的注销 注册监听了 注销只在销毁的时候 EventTrigger的所有事件类型 PointerEnter 0 鼠标进入 Pointe
  • DAY10栈与队列:232 用栈实现队列

    一 232 用栈实现队列 class MyQueue public stack
  • Java JDK1.8中类常量池、运行时常量池、字符串常量池所处区域

    类常量池 诞生时间 编译时 所处区域 方法区 类常量池存在Class文件中 一个Class文件对应一个类常量池 储存内容 符号引用和字面量 字符串常量池 诞生时间 编译时 所处区域 堆 储存内容 堆内的字符串对象的引用和字符串常量 运行时常
  • untiy AVProVideo 判断视频是否加载完成,可以播放

    我的插件版本是5 3 不同版本API可能会不同 如果一开就跳转视频 会因为视频没有加载完 导致跳转失败 因此必须等待视频加载完再进行跳转 可以直接等一小会再跳转 但是如果固定等待时间的话 一是每个视频加载耗时不一样 不能精确控制 而是由明显
  • 线性表的顺序结构,C语言实现

    线性表的顺序结构 C语言实现 include
  • C++中operator关键字(重载操作符)

    C 中operator关键字 重载操作符 C 编程语言中重载运算符 operator 介绍 C 编程语言中赋值运算符重载函数 operator 介绍 operator operator operator 操作符重载 参考 C 编程语言中赋值
  • 后端即服务BaaS

    Bmob LeanCloud 腾讯TAB APICloud 作为移动开发者 你应该了解Baas 后端即服务 移动端免费可用的BaaS接入方案 通过Bmob Android轻松制作一个APP Android高效率编码 第三方SDK详解系列 二
  • Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification 论文笔记

    Multi Object Tracking with Multiple Cues and Switcher Aware Classification 似乎是商汤投 CVPR2019的论文 文中提出了一个统一的多目标跟踪 MOT 框架 学习充
  • MFC实现图片浏览器

    MFC实现图片浏览器 源代码可以加微信 DDDDYKAJ 一 功能介绍 该程序是基于对话框的图片管理的程序 改程序有以下几个功能 1 获取加载图片的图片数目 2 按下 下一张 浏览所有图片 3 图片按照序号定位 并显示 4 获取每一张图片的
  • 前端练习项目

    30 Web Projects 30 多个带有 HTML CSS 和 JavaScript 的 Web 项目 由 Packt Publishing 提供 https github com PacktPublishing 30 Web Pro
  • Greenplum 查看连接与锁信息数据字典

    Greenplum 查看连接与锁信息数据字典 目录 查看系统中会话 连接 SQL与锁情况 1 查看当前活动的客户端连接数 2 查询客户端连接的情况 3 查看持有锁和等待锁的一些信息 已经修改验证 4 查询系统中正在执行的或者等待执行的事务
  • 怎么给word文档注音_怎么为整篇word文字添加拼音标注

    类型 教育学习大小 21 8M语言 中文 评分 10 0 标签 立即下载 有时候一篇文章时给小朋友或者中文初学者看的 那么怎样给整篇文章每个字批量添加拼音标注呢 下面小编就来教一下大家 由于对word宏命令不太熟悉 我将个任务分解为三部分
  • 使用Opencv+Python的AR小demo

    摘要 浅浅了解一下 Python OpenCV 试着给自己的 iphone 8 做一下相机标定 github 源码 https github com aeeeeeep OpenCvArDemo 定义 增强现实 AR 是一种真实世界环境的交互
  • java 读取svg_Java Batik操作SVG,实现svg读取,生成,动态操作

    SVG在现在的应用场景中还是很常见的 例如绘制复杂的矢量图形 说到SVG 就不得提下Canvas 在这里我就不详细列举它们之间的不同之处 以及为什么要选择SVG或Canvas了 首先 我的项目是一个Maven项目 所以只需要导入batik的
  • Vuex的简单使用--累加器

    简介 Vuex 是一个专为 Vue js 应用程序开发的 状态管理模式 它采用集中式存储管理应用的所有组件的状态 并以相应的规则保证状态以一种可预测的方式发生变化 安装 在项目根目录执行如下命令来安装 Vuex依赖包 npm install
  • Windows10通过局域网共享文件的方法

    要实现局域网共享 必须两台电脑必须在同一个网段 就是要同时连接同一个路由器 两台电脑最好都使用以下设置 在主电脑和需要复制文件的电脑中 点击 开始 菜单 选择 设置 打开后点击 网络 选择共享中心 在主电脑中需要共享的文件夹中做以下设置 要
  • ROS STAGE教程2(地图定义和GMAPPING建图)

    目前用在ROS Kinetic上的stage版本为4 1 官方教程http rtv github io Stage modules html 用户可以用stage或者gazebo来创建地图和机器人 传感器模型来进行仿真 并与自己的SLAM模