map_server package有两个节点:

1.map_server node:读取地图信息,并作为ROS service 为其余节点提供地图数据

2.map_saver node:保存现有扫描到的地图信息

启动map_server节点

<!-- Map server --><arg name="map_file" default="$(env TURTLEBOT_MAP_FILE)"/><node name="map_server" pkg="map_server" type="map_server" args="$(arg map_file)" />

如果现有地图,则需要配置环境变量TURTLEBOT_MAP_FILE,这样打开rviz就可以看到配置的地图信息。地图文件指的不是图片pgm文件,而是yaml的配置文件。

注意:map_server是一个node,非nodelete

或者使用命令:

rosrun map_server map_server mymap.yaml

启动map_saver节点

rosrun map_server map_saver -f ~/map/hokuyo_gmapping

地图文件:


从上面的地图可以看出,黑色的网格是障碍区域,白色的网格是无障碍区域,灰色的网格是未知区域。

map_server从图片中读取信息然后将每个网格都赋值[-1,100],灰色是-1,白色是0,黑色是100。未来可能会有更深层的分析使得赋值为(0,100)。

地图配置文件
保存下的地图都有一个yaml的配置文件,和地图pgm文件名字相同

yaml文件里面的内容

image: /home/ubuntu/map/hokuyo_kinco_gmapping_1011_1720.pgm
resolution: 0.050000
origin: [-13.800000, -13.800000, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

image: 地图路径,可以是全路径或者是yaml文件所在的相对路径

resolution: 地图分辨率,米/像素

origin: 最左下角像素在地图中的2d位置(x,y,yaw),yaw为偏转(逆时针),当yaw=0时没有片转。许多系统的其余部分忽略yaw

negate:是否对white/black free/occupied定于的语义进行翻转,对occupied_thresh/free_thresh无影响。

occupied_thresh:大于这个阀值的占用率的像素被认为occupied。

free_thresh:小于这个阀值的占用率的像素被认为是free。

map_server API

1.订阅的主题:

map_metadata (nav_msgs/MapMetaData):接收地图的元数据
map (nav_msgs/OccupancyGrid):接受以地图

2. 服务

static_map (nav_msgs/GetMap):提供检索地图服务

3. 参数

~frame_id (string, default: "map"):地图坐标系的名称

map_saver API

1.发布的主题:

map (nav_msgs/OccupancyGrid) :通过这个主题,地图可以被检索

ros中的map_server package分析相关推荐

  1. 关于ROS功能包里package.xml和CMakeList.txt的源码分析

    catkin简介 catkin简介 packagexml 格式1 格式2 CMakeListtxt meta package 典型ROS应用添加自定义message文件 修改packagexml 修改 ...

  2. ROS Error: [rospack] Error: package ‘map_server‘ not found

    Ubuntu18.04 + ROS melodic $ rosrun map_server map_saver [rospack] Error: package 'map_server' not fo ...

  3. ROS中阶笔记(二):机器人系统设计—URDF机器人建模

    ROS中阶笔记(二):机器人系统设计-URDF机器人建模 文章目录 01 URDF理论 1.1 什么是URDF 1.2 模型< robot > 1.2.1 < link > e ...

  4. ROS中的Client Library与roscpp talker lisener

    文章目录 前言 一.Client Library简介 二.roscpp 三.talker与 lisener 前言 ROS为机器人开发者们提供了不同语言的编程接口,比如C++接口叫做roscpp,Pyt ...

  5. 在ros中使用 RPLIDAR_A1 激光雷达 8000点/秒 的配置方法

    下午拿到一个思岚科技的RPLIDAR_A1,具体版本型号是A1M8-R5. 直接在 ros 环境下搞起,配置与使用非常简单,但是仔细阅读了源码却发现一些需要注意的地方,在这里罗列下来. 1.安装 非常 ...

  6. ROS Navigation之map_server完全详解

    0. 写在最前面 建议收藏: 本文持续更新地址:https://haoqchen.site/2018/11/27/map_server/ 本文将介绍自己在看ROS的Navigation stack中的 ...

  7. ROS中使用摄像头的问题

    ROS中使用摄像头的问题 0.prepare 4 . 安装uvc_cam $ sudo apt-get install ros-indigo-uvc-camera     $ source /opt/ ...

  8. ROS中base_link, odom, fixed_frame, target_frame和虚拟大地图map的关系

    前面已经介绍了如何使用URDF建造机器人小车并显示在Rviz的仿真环境里面,但是小车是静止的.下面介绍如何让它在Rviz里面动起来,并理清URDF,TF 和 odom 的关系. 1. ROS中base ...

  9. 如何给定两个gps坐标 算出航向角_机器人开发如何配置ROS中的TF变换关系?

    当我们进行机器人开发时,常常需要面对TF坐标转换,本文以 Autolabor Pro1 与思岚激光雷达为例,介绍ROS TF的使用. Autolabor Pro1是什么? Autolabor Pro1 ...

最新文章

  1. 逻辑回归损失函数(cost function)
  2. ABP官方文档翻译 0.0 ABP官方文档翻译目录
  3. 自然语言处理基础概念
  4. 【机器学习基础】理解关联规则算法
  5. 基于E18-2G4U04B的ZigBee3.0无线数据抓包安装方法
  6. c++基础学习(12)--(多线程、Web编程)
  7. android insmod命令,android的启动脚本(init.rc)文件的语法
  8. pythonplotline_带误差条的python绘图线,pythonplotlinewitherrorbar
  9. 全志a33android编译,编译lichee - 全志A33的环境搭建
  10. 项目管理学习 总结(一)
  11. mysql高级用法(函数)
  12. java查看ip的所属地区
  13. javascript闭包(Module模式)的用途和高级使用方式
  14. Mac—Excel转图片
  15. WMI服务是什么?Windows 7系统如何禁用WMI服务?
  16. 从零开始教你用Unity做一个自动感应门
  17. Flask学习(二)-Jinji2模板引擎
  18. Eclipse中maven项目update project后项目编码会自动变成GBK的问题
  19. java xmpp协议_GitHub - zhengzhi530/xmpp: 基于Xmpp协议的即时通讯社交软件(客户端+服务端)...
  20. ArcGIS教程:向带状地图添加动态文本

热门文章

  1. 李开复新生演讲的重点语段
  2. 【Python笔记_2】使用urllib库发送付费代理请求方式
  3. 自制文档格式转换器,支持 .txt/.xlsx/.csv格式转换...
  4. java获取当前日期 前后 几个月的 日期期间 往前 2个月 往后 2个月
  5. centos7搭建主从DNS服务器
  6. 1316:数的计数(Noip2001)
  7. 测试人眼中的车联网(比亚迪云服务-3.2.1)——车辆定位、寻车
  8. 时间类Carbon的安装和使用
  9. 内核自带的基于GPIO的LED驱动学习(三)
  10. java/php/net/python交互体验的电影评价系统设计