stage_ros的world文件配置方法
官方文档参阅: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文件配置方法的更多相关文章
- NHibernate各种数据库连接参数文件配置方法说明
//NHibernate各种数据库连接参数文件配置方法说明 //配置文件Config/Hibernate.cfg.xml内容如下所示: <?xml version="1.0" ...
- iis中限制访问某个文件或某个类型的文件配置方法
Note:此处不是权限设置问题,此处不是权限设置问题,此处不是权限设置问题!只是出于数据或者网络安全,禁止扫描工具直接扫描到某些包含敏感信息的文件,尤其比如日志.配置等 默认ASP.NET已经考虑到了 ...
- Spring property文件配置方法以及如何与工程分离
1,Spring使用property文件作为配置源 工程中难免出现一些需要每次部署都需要配置的参数,如数据源连接参数等,测试环境跟实际运行环境是不一样的. 使用spring框架的话,这些参 ...
- Linux操作系统下/etc/hosts文件配置方法
1.关于/etc/host,主机名和IP配置文件 Hosts - The static table lookup for host name(主机名查询静态表) hosts文件是Linux系统中一个负 ...
- Spring中注入List,Set,Map,Properties的xml文件配置方法
下面的例子展示了如何注入 List – <list/> Set – <set/> Map – <map/> Properties – <props/> ...
- Apache日志不记录图片文件设置方法和来源日志的配置
Apache日志不记录图片文件设置方法 <FilesMatch "\.(ico|gif|jpg|swf)">SetEnv IMAG 1</FilesMatch&g ...
- robots.txt文件配置和使用方法详解
robots.txt文件,提起这个概念,可能不少站长还很陌生:什么是robots.txt文件?robots.txt文件有什么作用?如何配置robots.txt文件?如何正确使用robots.txt文件 ...
- 使用外部属性文件配置Bean以及Bean的生命周期方法
1.使用外部属性文件配置Bean 在配置文件里配置 Bean 时, 有时需要在 Bean 的配置里混入系统部署的细节信息(例如: 文件路径, 数据源配置信息等). 而这些部署细节实际上需要和 Bean ...
- [转]IIS6 伪静态 IIS文件类型映射配置方法 【图解】
1.右键点击 要设置网站的网站 2.属性 -->主目录 -->配置--> 3.如右侧窗口,找到 .aspx 扩展名-->编辑-->复制 可执行文件的路径-->关闭 ...
随机推荐
- 解决eclipse oxygen+java 10+Tomcat的Could not create the Java virtual machine问题
本文首发于cartoon的博客 转载请注明出处:https://cartoonyu.github.io/cartoon-blog 这个坑我遇到了两次了,所以就写下来以防自己再遇 ...
- Spring WebClient vs. RestTemplate
1. 简介 本教程中,我们将对比 Spring 的两种 Web 客户端实现 -- RestTemplate 和 Spring 5 中全新的 Reactive 替代方案 WebClient. 2. 阻塞 ...
- python 实现两个文本文件内容去重
实现两个文本内容去重,输出两个文本不重复的结果 两个测试文本内容如下 1.txt中内容为 1 2 3 4 5 6 7 8 2.txt中内容为 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- 我的ubuntu kylin中mentohust的使用历程
1首先下载mentohus 最新版下载(包括源码):http://code.google.com/p/mentohust/downloads/list 2打开终端(Ctrl+Alt+T) 输入sudo ...
- win10去除快捷方式小箭头
切忌删除注册表项: HKEY_CLASSES_ROOT -> lnkfile -> IsShortcut 这个方法以前是可以的,但是在2018年之后更新的系统就会出现任务栏图标打不开的情况 ...
- Pyenv虚拟环境的创建(虚拟机)
创建pyenv虚拟环境 sudo yum install openssl* 安装其所需要的库文件 git clone https://github.com/yyuu/pyenv.git ~/.pyen ...
- Centos安装git并配置ssh
1.下载git安装包 git-2.9.4.tar.gz 2.解压 tar -xzvf git-2.9.4.tar.gz 3.修改解压后的文件名 mv git-2.9.4 git 4.安装git依赖的库 ...
- asp.net core 一个中小型项目实战的起手式——项目搭建与仓储模式下的持久层创建(1)
常规的中小型项目搭建方式一般是三层架构加上mvc与webapi作为一个主要框架,再加上一些第三方库,例如orm框架(EF.SqlSugar.Dapper等),API文档工具(Swagger)这些的应用 ...
- 新手的java学习建议
前言 进入IT领域,就像进入大海—浩瀚而广阔.然而,它又很容易让人迷茫,不知所措.所以,在IT的海洋中,找好一艘船特别重要,这艘船带你前进.减少迷失.这艘船或许是一个人,或一本书,又或许是一篇文章. ...
- [转载]线程池ThreadPoolExecutor使用简介
一.简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int ...