map_server介绍

map_server包提供了一个**map_server
**ROS Node, 该node通过ROS Service方式提供地图数据。 该包还提供了map_saver
命令行utility, 使用该工具可将动态创建的地图保存成文件。

1 Map format
使用该包中提供的工具可以操控的地图被存储在2个文件中。 一个是YAML格式的文件描述地图meta-data并命名image文件。另一个image文件用来编码occupancy-data。

1.1 Image format
image用不同的像素颜色描述世界中每个cell的占用状态。白色像素表示free,黑色像素表示occupied, 其它颜色像素表示unknown。 彩色图和灰度图都可以,但是多数是灰度图。在YAML文件中使用阈值来区分3种类别。
当image中像素与阈值参数比较时候,需要先按照公式occ = (255 - color_avg) / 255.0
计算占用概率, 这里color_avg是用8位数表示的来自于所有通道的平均值。例如,如果image是24-bit颜色,拥有0x0a0a0a颜色
的像素,其概率是0.96,这意味着几乎完全占用。
如果像素颜色是0xeeeeee,则占用概率是
0.07, 这意味着几乎没有被占用。
当使用ROS消息通信时候,这种占用被表示为范围[0,100]之内的一个整数, 0的意思是完全free, 100的意思是完全occupied, -1表示完全unknown。
Image data被 SDL_Image库读取, 依赖在特定平台上SDL_Image将提供什么东西,SDL_Image相应支持格式也会有差异。一般来讲,多数常用image格式都已经被支持了。一个必须要注意的例外是PNG格式在OS X平台上不能被支持。

1.2 YAML format
以下是YAML格式的一个示例:
image: testmap.pngresolution: 0.1origin: [0.0, 0.0, 0.0]occupied_thresh: 0.65free_thresh: 0.196negate: 0

需要的字段:
image : 指定包含occupancy data的image文件路径; 可以是绝对路径,也可以是相对于YAML文件的对象路径

resolution : 地图分辨率,单位是meters / pixel

origin : The 2-D pose of the lower-left pixel in the map, 表示为 (x, y, yaw), 这里yaw是逆时针旋转角度(yaw=0意味着没有旋转)。目前多数系统忽略yaw值。

occupied_thresh : 像素的占用概率比该阈值大被看做完全占用

free_thresh : 像素的占用概率比该阈值小被看做完全free

negate : Whether the white/black free/occupied semantics should be reversed (interpretation of thresholds is unaffected)

2 Command-line Tools
2.1 map_server(地图服务器)
map_server
是一个ROS node,可以从磁盘读取地图并使用ROS service提供地图。 目前实现的map_server可将地图中的颜色值转化成三种占用值: free (0), occupied (100), and unknown (-1). 未来可用0~100之间的不同值指示占用度。
2.1.1 命令语法
map_server <map.yaml>
2.1.2 示例
rosrun map_server map_server mymap.yaml
注意:map data可以通过指定topic或者 service来提取。service的方式最后可能要被废弃。
2.1.3 发布的主题
map_metadata
(nav_msgs/MapMetaData)Receive the map metadata via this latched topic.

map
(nav_msgs/OccupancyGrid)Receive the map via this latched topic.

2.1.4 服务
static_map
(nav_msgs/GetMap)Retrieve the map via this service.

2.1.5 参数
~frame_id
(string
, default: "map"
) The frame to set in the header of the published map.
2.2 map_saver(地图保存器)
map_saver
可以把地图保存到磁盘。 例如:from a SLAM mapping service.2.2.1 命令语法
rosrun map_server map_saver [-f mapname]
map_saver
retrieves map data and writes it out to map.pgm and map.yaml. Use the -f option to provide a different base name for the output files.
2.2.2 命令示例
rosrun map_server map_saver -f mymap
2.2.3 订阅的主题
map
(nav_msgs/OccupancyGrid) Map will be retrieved via this latched topic

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容