关于ros stage与navigation仿真总结5月16号
主要总结内容
在costmap里是怎么判断机器人和障碍物碰撞了
stage_ros包输入输出,stage是怎么回事
rviz 中footprint和stage中position怎么联系到一起
voxel grid和voxel layer怎么在costmap里起作用
costmap map type
在costmap里是怎么判断机器人和障碍物碰撞了
图片网址:http://wiki.ros.org/costmap_2d?action=AttachFile&do=get&target=costmapspec.png
在这幅图片里可以看到左下角有两个圆,一个机器人轮廓外切圆一个机器人内切圆
机器人在costmap里就能够简化成为这两个圆
Inflation is the process of propagating cost values out from occupied cells that decrease with distance. For this purpose, we define 5 specific symbols for costmap values as they relate to a robot.
- "Lethal" cost means that there is an actual (workspace) obstacle in a cell. So if the robot's center were in that cell, the robot would obviously be in collision.
- "Inscribed" cost means that a cell is less than the robot's inscribed radius away from an actual obstacle. So the robot is certainly in collision with some obstacle if the robot center is in a cell that is at or above the inscribed cost.
"Possibly circumscribed" cost is similar to "inscribed", but using the robot's circumscribed radius as cutoff distance. Thus, if the robot center lies in a cell at or above this value, then it depends on the orientation of the robot whether it collides with an obstacle or not. We use the term "possibly" because it might be that it is not really an obstacle cell, but some user-preference, that put that particular cost value into the map. For example, if a user wants to express that a robot should attempt to avoid a particular area of a building, they may inset their own costs into the costmap for that region independent of any obstacles. Note, that although the value is 128 is used as an example in the diagram above, the true value is influenced by both the inscribed_radius and inflation_radius parameters as defined in the code.
- "Freespace" cost is assumed to be zero, and it means that there is nothing that should keep the robot from going there.
- "Unknown" cost means there is no information about a given cell. The user of the costmap can interpret this as they see fit.
- All other costs are assigned a value between "Freespace" and "Possibly circumscribed" depending on their distance from a "Lethal" cell and the decay function provided by the user.
The rationale behind these definitions is that we leave it up to planner implementations to care or not about the exact footprint, yet give them enough information that they can incur the cost of tracing out the footprint only in situations where the orientation actually matters.
这段话大概意思是
膨胀代价值随着机器人离障碍物距离增加而减少
想象一幅图都是格子,每个格子里有代价值:
"Lethal" cost代价值 一定有障碍物,这个格子上
"Inscribed" cost代价值说明这个格子离障碍物距离小于机器人内切圆半径
"Possibly circumscribed"代价值说明这个格子离障碍物距离小于机器人外切圆半径,但是大于内切圆半径
当机器人中心在一个有着"Lethal" cost代价值格子上,看图是256,则机器人肯定和障碍物相碰了
当机器人中心在一个有着"Inscribed" cost代价值格子上则机器人也肯定和障碍物相碰
当机器人中心在一个有着大于或者等于"Possibly circumscribed"代价值的格子上。则机器人不一定与障碍物相碰,这个取决于机器人方位
Note: In the picture above, the red cells represent obstacles in the costmap, the blue cells represent obstacles inflated by the inscribed radius of the robot, and the red polygon represents the footprint of the robot. For the robot to avoid collision, the footprint of the robot should never intersect a red cell and the center point of the robot should never cross a blue cell.
这段话说明机器人轮廓不能与红色格子相交
机器人中心不能与蓝色格子相交,蓝色格子就是代价值为"Inscribed" 格子
stage是怎么回事
stage是一个仿真器提供了许多虚拟器件比如声呐,激光,和移动平台
这些都定义在.world文件里
.world怎么写:
http://playerstage.sourceforge.net/doc/stage-cvs/group__window.html
stage_ros包输入输出,是怎么回事
stage_ros封装了stage一些model
laser, position and camera models
poition定义了移动小车
laser定义了激光数据
并且将数据用topic引出来
比如laser有/base_scan topic
这些topic被navigation接受,用于move_base进行local costmap创建
然后move_base路径规划器在costmap上进行路径规划输出cmd_vel
cmd_vel是stage_ros订阅的主题,驱动虚拟小车移动
rviz 中footprint和stage中position怎么联系到一起
rviz是显示用,stage会提供
tf transforms provided
base_link → base_laser
- transform from robot base to attached laser
base_footprint → base_link
- identity transform
odom → base_footprint
- transform from odometric origin to base
base_link → camera
- transform from robot base to attached camera
而move_base用的就是map->base_link在yaml文件里可以设定
所以当在rviz中指定一个目标后,move_base就会发布相应cmd_vel,stage就会接受这个topic,移动机器人,发布
odom → base_footprint变换,然后move_base就知道机器人到哪里了,发布/move_base_node/local_costmap/footprint
然后rviz读取这个topic,实时改变rviz上footpront位置。
voxel grid是什么
voxel grid与occupancy grid不同
http://answers.ros.org/question/186783/difference-between-octomap-and-voxel-grid/
从上面那幅图可以看出voxel是直接投影成二维图像的,然后机器人在二维costmap上进行导航
Map Types
There are two main ways to initialize a costmap_2d::Costmap2DROS object. The first is to seed it with a user-generated static map (see the map_server package for documentation on building a map). In this case, the costmap is initialized to match the width, height, and obstacle information provided by the static map. This configuration is normally used in conjunction with a localization system, like amcl, that allows the robot to register obstacles in the map frame and update its costmap from sensor data as it drives through its environment.
The second way to initialize a costmap_2d::Costmap2DROS object is to give it a width and height and to set the rolling_window parameter to be true. The rolling_window parameter keeps the robot in the center of the costmap as it moves throughout the world, dropping obstacle information from the map as the robot moves too far from a given area. This type of configuration is most often used in an odometric coordinate frame where the robot only cares about obstacles within a local area.
costmap有两种地图,一种是用户定义地图,如激光网格地图,提前建好
还有一种是设置rolling_window为true则机器人位于local costmap中心,机器人只能够看到一定范围内障碍物,比如5米5米,这个可以设定,超过这个距离机器人就放弃这个数据dropping obstacle information from the map as the robot moves too far from a given area
关于ros stage与navigation仿真总结5月16号的更多相关文章
- ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin
在做机器人导航的时候,肯定见到过global_costmap和local_costmap.global_costmap是为了全局路径规划服务的,如从这个房间到那个房间该怎么走.local_costma ...
- ros机器人之小乌龟仿真-路径记录
------------恢复内容开始------------ 通过自己不断地摸索,对ros系统有了一定的了解,首先装系统,这一过程中也遇到了很多问题,但通过不断地尝试,经过一天一夜的倒腾,总算是把系统 ...
- 给ros安装arbotix simulator仿真环境
首先下载程序包.编译.安装. cd ~/catkin_ws/src git clone https://github.com/pirobot/rbx1.git cd rbx1 git checkout ...
- 任务太多,时间太少,GT凶猛,不留情面啊。。。
最近由于提高了发现资料的效率及方法,于是得到了很多好的资料,也打印了好多资料!可是,我突然发现自己好像要做的事太多了,一时间没有了头绪.今天花点时间写个博客,整理一下最近杂乱的状态,看看到底该如何调配 ...
- ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation
ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...
- ROS机器人导航仿真(kinetic版本)
准备工作: ubuntu 16.04系统;ROS kinetic版本;ROS包turtlebot,导航包rbx1,模拟器arbotix,可视化rviz 1.安装ubuntu 16.04系统与安装ROS ...
- ROS(indigo)机器人操作系统学习有趣丰富的Gazebo仿真示例evarobot
一直在寻找一个示例可以将ROS学习中常用的基础内容大部分都包含进去,最好还包括Gazebo仿真, 这样即使没有硬件设备,也可以很好的学习ROS相关内容,但又必须有对应的硬件,便于后续研究. 这里,介绍 ...
- ROS是Robot Operating System
ROS是Robot Operating System 机器人操作系统ROS | 简介篇 同样,从个人微信公众号Nao(ID:qRobotics)搬运. 前言 先放一个ROS Industrial一 ...
- 2017~ROS暑期学校~分享
http://www.robotics.sei.ecnu.edu.cn/ROS2017/ ---- 往年暑期学校活动:2015年,2016年 报名开始时间7月2日晚10点:暑期学校报名,机器人挑战赛报 ...
随机推荐
- 【Linux】- ls命令详解
1 命令功能: 列出当前目录下或者指定目录下的所有文件和目录,ls是list的缩写. 2 命令语法: ls [选项] [目录名] #注:[]中的内容为非必选项 3 命令选项: -a 列出目录下 ...
- 【bzoj5070】危险的迷宫 费用流
题目描述 JudgeOnline/upload/201710/55.doc 输入 第一行是两个整数A与B(1≤A,B≤10),中间用空格分隔,表示该迷宫是A行B列的. 第2行至第A+1行,每行有B个1 ...
- ARC078 D.Fennec VS. Snuke(树上博弈)
题目大意: 给定一棵n个结点的树 一开始黑方占据1号结点,白方占据n号结点 其他结点都没有颜色 每次黑方可以选择黑色结点临近的未染色结点,染成黑色 白方同理. 最后谁不能走谁输. 题解: 其实简单想想 ...
- [洛谷P3567][POI2014]KUR-Couriers
题目大意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半.有,输出这个数,否则输出$0$ 题解:主席树,查询区间第$\bigg\lfloor\dfrac{len+1}{2}\bigg\rf ...
- [洛谷P1337][JSOI2004]平衡点 / 吊打XXX
题目大意:有$n$个重物,每个重物系在一条绳子上.所有绳子系在一起,问绳结最终平衡于何处. 题解:$NOIP$前学学模拟退火,但发现我脸好黑啊... 卡点:脸黑 C++ Code: #include ...
- 文件格式转换神器-pandoc
By francis_hao Mar 11,2017 介绍 如果你需要在各种类型的文件中穿梭,那么你需要这把瑞士军刀-pandoc 它可以将各种常见的不常见的文件类型转换成另一种,我感兴趣的是在 ...
- git使用笔记(六)github
By francis_hao Nov 20,2016 github介绍 github是一个网站https://github.com/,可以实现基于git(当然,svn也是可以的)的代码托管工作. ...
- bzoj Gty的超级妹子树 块状树
Gty的超级妹子树 Time Limit: 7 Sec Memory Limit: 32 MBSubmit: 500 Solved: 122[Submit][Status][Discuss] De ...
- TCP ------ RST的产生
产生RST的几个原因 1.请求超时 有89.27两台主机.主机89向主机27发送了一个SYN,表示希望连接8888端口,主机27回应了主机89一个SYN表示可以连接.但是主机89莫名其妙的发送了一个R ...
- xiaoluo同志Linux学习之CentOS6.4
小罗同志写的不错,弄个列表过来啊 Linux学习之CentOS(三十六)--FTP服务原理及vsfptd的安装.配置 xiaoluo501395377 2013-06-09 01:04 阅读:56 ...