Cartographer系列之四——地图文件导出

个人能力有限,若有错误请批评指正!
转载请标明出处:http://www.cnblogs.com/wenhust/

一、目的

Cartographer是google的开源2D Laser-based SLAM方案,可以直接在ROS上运行并建图(可参考之前的文章)。不过到目前为止,还没有提供可以直接保存导出已完成的地图文件的功能,但一些如路径规划等后续工作有赖于地图文件得以进行,因此在这里提供一个简便方法可以将cartographer的地图文件保存出来。

二、方法

在cartographer_ros的源码中已经存在map_writer.h、map_writer.cc的文件,我的方法是直接在occupancy_grid.cc中,增加对map_writer的使用,使其直接将occupancy_grid作为地图文件保存出来,其具体增加代码如下:

  1. 增加头文件包含
    #include "cartographer_ros/map_writer.h"
  2. 将occupancy_grid作为地图文件保存
    在occupancy_grid数据完成后,即occupancy_grid.cc的最后for循环之后增加
    cartographer_ros::WriteOccupancyGridToPgmAndYaml(*occupancy_grid,"/tmp/test");

重新编译文件成功后,运行程序,便可以在tmp目录下看到test.pgm和test.yaml文件了,其中test.pgm是地图文件、test.yaml是地图信息文件。

时间: 2024-10-17 04:55:03

Cartographer系列之四——地图文件导出的相关文章

Cocos2d-x项目移植到WP8系列之四:文件操作

读写文件Cocos已经用fopen fwrite来做好了,这里说的主要是文件和文件夹的创建.删除.判断是否存在等. 本来打算把把这部分代码放到C#工程来做,然后通过上一篇说到的C++和C#交互的那个通道来调用的,但是wp8里很多东西都被做成异步的形式了,文件的读写操作也被设计成了异步的形式,但是在C++这边发起调用的方法是需要同步调用的,这里如何转换是一个难题,由于对task PPL 那一套不熟悉,最后没办法只能放到C++工程来做. 另外,在task里那个捕获异常也是很痛苦的一件事情——一直没研

Sql Server来龙去脉系列之四 数据库和文件

在讨论数据库之前我们先要明白一个问题:什么是数据库? 数据库是若干对象的集合,这些对象用来控制和维护数据.一个经典的数据库实例仅仅包含少量的数据库,但用户一般也不会在一个实例上创建太多的数据库.一个数据库实例最多能创建32767个数据库,但是按照实际情况,一般设计是不会达到这个限制值. 为了更明显地说明数据库,数据库包含了以下属性和功能: *. 它是很多对象的集合,比如表.视图.存储过程.约束.对象集合的最大值是2(31) - 1(超过2百亿).一般对象的数量在几百至一万. *. 它维持拥有的用

TCP/IP网络编程系列之四(初级)

TCP/IP网络编程系列之四-基于TCP的服务端/客户端 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流的套接字.在了解TCP之前,先了解一下TCP所属的TCP/IP协议栈. 如图所示,TCP/IP协议栈共分为4层,可以理解成数据收发分成了4个层次化过程. 链路层 它是物理链接领域标准化结果,也是最基本的领域,专门定义LAN.WAN.MAN等网络标准.若两台计算机通过网络进行数据交换,链路层就负责整个物

「视频直播技术详解」系列之四:推流和传输

关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 在上一期中,我们介绍了讲解编码和封装. 本篇是<解密视频直播技术>系列之四:推流和传输.推流是直播的第一公里,直播的推流对这个直播链路影响非常大,如果推流的网络不稳定,无论我们如何做优化,观众的体验都会很糟糕.所以也是我们排查问题的第一步,如何系统地解决这类问题需要我们对相关理论有基础的认识. 本系列文章大纲如下: (一

C++ 提取网页内容系列之四

标 题: C++ 提取网页内容系列之四作 者: itdef链 接: http://www.cnblogs.com/itdef/p/4173833.html 欢迎转帖 请保持文本完整并注明出处 将网页内容下载后存入字符串string 或者本地文件后 我们开始进行搜索和查询 获取信息这里使用正则式  使用vs2008  其自带的tr1库(预备标准库) 有正则式库供使用带头文件/**************************************************************

【iOS与EV3混合机器人编程系列之四】iOS_WiFi_EV3_Library 剖析之一:WiFi UDP和TCP

在上一篇文章中,我们通过编写EV3 Port Viewer项目实现了iOS监测EV3的实时端口数据.程序最核心的部分就是我们的开源代码库iOS_WiFi_EV3_Library.那么,在本文中,我们将详细介绍我们这个库的编写.为了完成这个库,本人参考了网上很多资料,主要包括EV3的源代码,win版本的代码库以及Monobrick相关以及网上的各种资料,在此就不一一列举了.由于水平有限,本代码库还存在各种问题,望使用的读者见谅.大家也可以在这个基础之上自己进行改造完善. 为了详细说明代码库的实现,

企业内部IT一体化系列之四:WEB平台 SharePoint服务配置

上文中我们只是简单的安装完了SharePoint,其实最最重要的服务配置还在后面,SharePoint自己单独拿出来就可以讲很久,而我这里的目的只是方便大家部署一个可以承载System Center Service Manager自助门户站点的平台,所以我尽量捡重点说: 一:创建服务应用程序: 1:服务应用程序说明 所有的服务数据库命名规则为:SharePoint_WebApp_站点名,SharePoint_App_服务名 命名规则仅供参考 SharePoint 2010中默认有以下服务应用程序

JVM故障分析系列之四:jstack生成的Thread Dump日志线程状态

JVM故障分析系列之四:jstack生成的Thread Dump日志线程状态 2017年10月25日  Jet Ma  JavaPlatform JVM故障分析系列系列文章 JVM故障分析系列之一:使用jstack定位线程堆栈信息JVM故障分析系列之二:jstack生成的Thread Dump日志结构解析JVM故障分析系列之三:jstat命令的使用及VM Thread分析JVM故障分析系列之四:jstack生成的Thread Dump日志线程状态JVM故障分析系列之五:常见的Thread Dum

XSS解决方案系列之四:关于编码

本文准备说明以下几个问题: 1. 关于重复编码的问题 2. 关于编码的多种形式的问题 3. 关于编码的几个常见问题 [说明] 本文所述编码是指encode,可以理解为转义,而不是编程序写代码. 编码或者转义机制替我们解决两个问题: a. 避免保留字冲突问题,对于web应用来说,XSS问题也是其中一类 b. 表达不可输入字符问题,比如我想在程序当中表达一个键盘上没有不可输入的字符,可以通过编码来解决. [进入正题] 1. 关于重复编码的问题: 我看了一些第三方的decoder/encoder库函数