官方文档参阅:http://rtv.github.io/Stage/modules.html

stage_ros是一个基于stage的2D模拟器,用于ROS的仿真测试。虽然现在越来越多的人在使用gazebo,但是在很多轻量测试领域,stage_ros仍然有一席之地。

最常用的基于stage_ros的package是navigation_stage。它集成了对stage_ros的一些调用。但它只使用了dwa和trajactory planner,并且只有有限的几张地图,对我们的测试并不是很方便。所以我们需要制定自己的“my navigation_stage”。

这里简单介绍一下stage_ros需要使用的world文件的配置方法。

define block model
(
size [0.500 0.500 0.750]
gui_nose 0
) define topurg ranger
(
sensor(
range_max 30.0
fov 270.25
samples 1081
)
# generic model properties
color "black"
size [ 0.050 0.050 0.100 ]
) define pr2 position
(
size [0.650 0.650 0.250]
origin [-0.050 0 0 0]
gui_nose 1
drive "omni"
topurg(pose [ 0.275 0 0 0 ])
) define floorplan model
(
# sombre, sensible, artistic
color "gray30" # most maps will need a bounding box
boundary 1 gui_nose 0
gui_grid 0 gui_outline 0
gripper_return 0
fiducial_return 0
ranger_return 1
) # set the resolution of the underlying raytrace model in meters
resolution 0.01 interval_sim 100 # simulation timestep in milliseconds window
(
size [ 745.000 448.000 ] rotate [ 0 -1.560 ]
scale 30.287
) # load an environment bitmap
floorplan
(
name "willow"
bitmap "../maps/willow-full-0.025.pgm"
size [58.300 45.625 1.000]
pose [ -22.812 29.150 0 90.000 ]
) # throw in a robot
pr2( pose [ -26.068 12.140 0 87.363 ] name "pr2" color "blue")
block( pose [ -25.251 10.586 0 180.000 ] color "red")

上面是navigation_stage里的一个示例。具体每个元素的语法请之后参阅官方文档。这里只针对文件的结构和自定义元素关系简单说明下:

1)define block model:

define block model
(
size [0.500 0.500 0.750]
gui_nose 0
)

这是在定义一个块的模型,具体是做什么用的呢?现在还不知道,要读到下面才知道。这就像是定义了一个类,设置了成员变量的默认值,但还没有生成实例。

2)define topurg ranger:

define topurg ranger
(
sensor(
range_max 30.0
fov 270.25
samples 1081
)
# generic model properties
color "black"
size [ 0.050 0.050 0.100 ]
)

这是在定义一个模拟的声纳或雷达的模型,指定了雷达的最大范围等一些参数。同样,这只是“类”的定义,还没有实例。

3) define pr2 position:

define pr2 position
(
size [0.650 0.650 0.250]
origin [-0.050 0 0 0]
gui_nose 1
drive "omni"
topurg(pose [ 0.275 0 0 0 ])
)

这是在定义机器人底盘,也可以说算是在定义一个机器人。我们可以在里面看到,它把2)中的topurg当作一个属性包含在了里面。就类似一个类中包含了类另一个类作为成员变量。从结构上我们能看出来,它是想定义一个带ranger的机器人抽象模型。

4)define floorplan model:

define floorplan model
(
# sombre, sensible, artistic
color "gray30" # most maps will need a bounding box
boundary 1 gui_nose 0
gui_grid 0 gui_outline 0
gripper_return 0
fiducial_return 0
ranger_return 1
)

这是在为地图环境定义一个容器模型。map的地图数据是抽象的,stage_ros是不能直接使用的。所以要有一个容器把这些数据装起来,构造和模拟成一个“真实世界”,变成具体数据,然后才方便去和stage中定义的如前面的block,pr2去计算是否碰撞等。

。如果你启动了move_base_amcl_2.5cm.launch文件的话,可以在stage的窗口中看到它,是一个红色的块

5)world:

# set the resolution of the underlying raytrace model in meters
resolution 0.01 interval_sim 100 # simulation timestep in milliseconds

这是world本身属性的定义控制分辨率,模拟频率等。这里要注意一点,这个分辨率是stage本身使用的,不是map的分辨率。这个尤其重要,它主要是影响一些类似碰撞检测等stage本身的机制的。这是个坑,至于为什么,下面说到具体的模拟实例时会解释。

6)window:

window
(
size [ 745.000 448.000 ] rotate [ 0 -1.560 ]
scale 30.287
)

这是对显示出来的stage_ros的窗口的定义。属性基本都是在调大小,角度之类的,问题不大。唯一需要注意的是,这个size是包含了窗口状态栏的总大小,不只是地图有效区域,这个特别逗。

7)floorplan:

floorplan
(
name "willow"
bitmap "../maps/willow-full-0.025.pgm"
size [58.300 45.625 1.000]
pose [ -22.812 29.150 0 90.000 ]
)

从这里开始往下就是开始生成我们自己定义的模型的实例的部分了。从这个生成定义我们可以看到,它加载了"../maps/willow-full-0.025.pgm"作为地图数据,也就是静态地图。size是怎么算的呢?用你的图片分辨率乘resolution即可。但要注意,这个resolution可不是5)中定义的那个,而是map server里定义的!这就是前面说到的坑了。整个配置文件里所有的size,pose等实际用的resolution,都是map server里的,不是这个文件本身定义的这个。包含下面的8)中也是这样。

8)pr2 and block:

pr2( pose [ -26.068 12.140 0 87.363 ] name "pr2" color "blue")
block( pose [ -25.251 10.586 0 180.000 ] color "red")

这两个就是定义我们的机器人和无用的块实例的地方了。机器人的名字被赋成了“pr2”,所以如果你在stage的窗口中用鼠标去选中它,就会显示出来这个名字了。颜色数据也在这里被赋值了,用于区分哪个是机器人,哪个是无用的块。

PS:特别需要注意一点,地图的格式最好用jpeg。似乎是stage的代码有bug,用gif可能会完全无法正常显示,用png和pgm可能会出现地图缺失导致剩余部分被拉伸。目前测试只有jpeg是正常的。

以上就是一个world文件的基本结构了。想要更多的配置和定义信息,可以参阅官方文件的解释。

stage_ros的world文件配置方法的更多相关文章

  1. NHibernate各种数据库连接参数文件配置方法说明

    //NHibernate各种数据库连接参数文件配置方法说明 //配置文件Config/Hibernate.cfg.xml内容如下所示: <?xml version="1.0" ...

  2. iis中限制访问某个文件或某个类型的文件配置方法

    Note:此处不是权限设置问题,此处不是权限设置问题,此处不是权限设置问题!只是出于数据或者网络安全,禁止扫描工具直接扫描到某些包含敏感信息的文件,尤其比如日志.配置等 默认ASP.NET已经考虑到了 ...

  3. Spring property文件配置方法以及如何与工程分离

    1,Spring使用property文件作为配置源    工程中难免出现一些需要每次部署都需要配置的参数,如数据源连接参数等,测试环境跟实际运行环境是不一样的.    使用spring框架的话,这些参 ...

  4. Linux操作系统下/etc/hosts文件配置方法

    1.关于/etc/host,主机名和IP配置文件 Hosts - The static table lookup for host name(主机名查询静态表) hosts文件是Linux系统中一个负 ...

  5. Spring中注入List,Set,Map,Properties的xml文件配置方法

    下面的例子展示了如何注入 List – <list/> Set – <set/> Map – <map/> Properties – <props/> ...

  6. Apache日志不记录图片文件设置方法和来源日志的配置

    Apache日志不记录图片文件设置方法 <FilesMatch "\.(ico|gif|jpg|swf)">SetEnv IMAG 1</FilesMatch&g ...

  7. robots.txt文件配置和使用方法详解

    robots.txt文件,提起这个概念,可能不少站长还很陌生:什么是robots.txt文件?robots.txt文件有什么作用?如何配置robots.txt文件?如何正确使用robots.txt文件 ...

  8. 使用外部属性文件配置Bean以及Bean的生命周期方法

    1.使用外部属性文件配置Bean 在配置文件里配置 Bean 时, 有时需要在 Bean 的配置里混入系统部署的细节信息(例如: 文件路径, 数据源配置信息等). 而这些部署细节实际上需要和 Bean ...

  9. [转]IIS6 伪静态 IIS文件类型映射配置方法 【图解】

    1.右键点击 要设置网站的网站 2.属性 -->主目录 -->配置--> 3.如右侧窗口,找到 .aspx 扩展名-->编辑-->复制 可执行文件的路径-->关闭 ...

随机推荐

  1. burpsuit用法

    1. 学习Proxy首先看标红,intercept is on 为拦截状态  其对应的intercept is off 为非拦截状态,设置完代理后打开拦截状态 ,浏览器发起的请求会被burpsuite ...

  2. MongoDB与Redis的简单使用

    mongodb 概念解析 SQL术语/概念 MongoDB术语/概念 解释说明 database database 数据库 table collection 数据库表/集合 row document ...

  3. python语言快捷注释

    1.注释单行 (1)方法1:直接在单行代码前边加 # (2)方法2:选中需要注释的代码,Ctrl+/ 即可注释 2.注释多行代码 选中想要注释的N行代码,直接Ctrl+/ 即可注释 3.取消注释多行代 ...

  4. spark 源码分析之二十二-- Task的内存管理

    问题的提出 本篇文章将回答如下问题: 1.  spark任务在执行的时候,其内存是如何管理的? 2. 堆内内存的寻址是如何设计的?是如何避免由于JVM的GC的存在引起的内存地址变化的?其内部的内存缓存 ...

  5. 【Maven】Mac 使用 zsh 后 mvn 命令就无效

    RT -- 解决方法: 打开 .zshrc 文件,将 Maven 环境变量配置加入其中,或者 将 source ~/.bash_profile 添加到 .zshrc 中. PS: 之前搞不懂,每次使用 ...

  6. 【Android】Genymotion 模拟器 Unable to create virtual device

    安装 Genymotion 模拟器的时候报了这个错误,如下: 后来找到了解决方法,见下图: 在 Setting -> Network, 勾选 Use HTTP Proxy, HTTP Proxy ...

  7. 【SVN】SVN Working copy is too old

    前天在使用 SVN 客户端 CornerStone 的时候遇到了这个问题,代码不能提交了…… 遇到这个问题的时候怎么办? 解决办法: 找到报错对应的文件夹,里面有个 .svn 的文件夹,去掉再 com ...

  8. hdoj 4762 Cut the Cake

    题意很简单就不说了. 解题的关键就是这个公式 answer=n/(m^(n-1)); 要用到大数的乘法.然后java水过. import java.util.*; import java.math.* ...

  9. MyBatis 核心配置综述之StatementHandler

    目录 MyBatis 核心配置综述之StatementHandler MyBatis 四大组件之StatementHandler StatementHandler 的基本构成 StatementHan ...

  10. 使用 Docker 生成 Let’s Encrypt 证书

    概念 什么是 Container ? https://www.docker.com/resources/what-container https://www.docker.com/why-docker ...