首先说明,这篇文章于2020年6月更新,cartographer现在还在不断更新,也许这篇文档内容会失效,但是大体是一样的安装流程。
使用平台
ROS发行版
1. 先安装一些必要的安装工具:python-wstool、python-rosdep和ninja;
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
2. 创建一个cartographer_ros的工作空间,命名为"catkin_ws",并初始化。
mkdir catkin_ws
cd catkin_ws
wstool init src
# 这里先增加一个.rosinstall文件,修改内容如下一段
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
- git: {local-name: cartographer, uri: 'https://gitee.com/futurelei/cartographer.git', version: '1.0.0'}
- git: {local-name: cartographer_ros, uri: 'https://gitee.com/futurelei/cartographer_ros.git', version: '1.0.0'}
- git: {local-name: ceres-solver, uri: 'https://gitee.com/futurelei/ceres-solver.git', version: '1.13.0'}
!这里修改成了我自己的gitee仓库
3. 安装cartographer_ros的依赖项(proto3和deb软件包)。如果自安装ROS以来已经执行过初始化rosdep的命令,则命令’sudo rosdep init’将显示错误,该错误可以忽略。
# 脚本内容是配置了一些环境变量,然后用git下载proto3(肯定比较慢,可以手动下载),如果手动下载了proto3,里面需要改内容,内容在下一段。
src/cartographer/scripts/install_proto3.sh
# 这句初始化rosdep,一般正常安装ros都执行过,可以不用管。
sudo rosdep init
# 下面这两句,是常用来一键安装该工作空间下所有依赖包的,务必熟练使用
rosdep update # 这个执行不了也没关系,先catkin编译,报错后再执行下一条也一样(编译报错也可以获取缺少包信息)。
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
# 只是注释掉了git下载和切换的内容。
set -o errexit
set -o verbose
# VERSION="v3.4.1"
# Build and install proto3.
# git clone https://gitee.com/futurelei/protobuf.git
cd protobuf
# git checkout tags/${VERSION}
mkdir build
cd build
cmake -G Ninja \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_BUILD_TYPE=Release \
-Dprotobuf_BUILD_TESTS=OFF \
../cmake
ninja
sudo ninja install
4. 构建并安装。
# 用ninja工具进行catkin的编译
catkin_make_isolated --install --use-ninja
注意:
sudo gedit /etc/hosts
增加以下内容(给dns指定了github的服务器地址):
# 建议在http://ip.tool.chinaz.com/github.com查询以下三个网址对应的ip,这里是2019-12月的数据,可能会改变
github.com 13.250.177.223
assets-cdn.github.com 185.199.108.153
github.global.ssl.fastly.net 75.126.215.88
199.232.28.133 raw.githubusercontent.com
重启networking
sudo /etc/init.d/networking restart
1. 测试数据集
# 这句命令把数据集下载到了Downloads文件夹,如果没有wget工具,可以自己安装
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
# 记得先配置工作空间到环境变量
echo "source ~/catkin_ws/install_isolated/setup.bash" >> ~/.bashrc
# 这句用roslaunch启动了放在对应目录的数据集
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
随便找了张图:
2. 其他bag数据集
参考文献:
文章浏览阅读588次。VirtualBox在CentOS中安装VBOXADDITIONS_centos virtualbox addition
文章浏览阅读4.1k次。首先说,今天是一个值得高兴的日子,因为经过四天的努力,终于把U-Boot1.3.4成功移植到了s3c2416上.板子要求是SD卡启动,以下具体的移植步聚:一、SD起动首先要修改/include/configs/smdk2416.h头文件: 在365行左右,按如下修改: //#define CONFIG_BOOT_NAND #define CONFIG_BOOT_M_s3c2416 u-boot移植
文章浏览阅读5.3k次,点赞12次,收藏24次。本文主要介绍了java juc包中提供的四种拒绝策略。先是接受了部分java线程池ThreadPoolExecutor的构造方法,然后以源码和程序示例的方式介绍了四种拒绝策AbortPolicy,CallerRunsPolicy,DiscardPolicy,DiscardOldestPolicy的不同。_rejectedpolicy
文章浏览阅读231次。留空,要学_照相机基础知识笔记
文章浏览阅读3.8k次。1. 关于InputStream.read() 在从数据流里读取数据时,为图简单,经常用InputStream.read()方法。这个方法是从流里每次只读取读取一个字节,效率会非常低。 更好的方法是用InputStream.read(byte[] b)或者InputStream.read(byte[] b,int off,int len)方法,一次读取多个字节。2._event check_return:"java.io.inputstream.read(byte[])" returns the number of
文章浏览阅读2.8k次。Ubuntu 14.04 更换阿里云源查看Ubuntu信息:root@llf-virtual-machine:/etc/apt# lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 14.04.5 LTSRelease: 14.04Codena..._ubuntu14.04更换阿里云
文章浏览阅读45次。solr是基于Lucence开发的企业级搜索引擎技术,而lucence的原理是倒排索引。倒排索引:Demo1:A在吃饭Demo2:B在睡觉记录就变成了这样关键词 段落号(出现频率) 出现位置吃饭 1(1) 3在 1(1) 22(1) 2A 1(1) 1睡觉 2(1_solr 是如何工作的
文章浏览阅读2.4w次,点赞60次,收藏551次。1.应用场景更加高效地学习并达到运用Linux 2.学习/操作 linux运维学习需要分为四个阶段:初级入门、中级进阶、高级提升、资深方向细化。 第一阶段:初级入门 初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。 初级入门: Linux基础知识、基本命令(起源、组成、常用命令如cp、ls、fi..._linux学习路径
文章浏览阅读1.4k次。Zookeeper DirectoriesThe following gives the zookeeper structures and algorithms used for co-ordination between consumers and brokers.NotationWhen an element in a path is denoted [xyz], that m_kafka在zookeeper上的目录
文章浏览阅读4.7k次。来自望兄的总结。这些文档都是最基础的了。如果你有类似的不清楚的问题,这里都是比较权威的回答了。1.什么是邮件中继? 邮件中继是指将邮件转发到你所在域以外的域的能力。更具体地说,当使用与您的 SMTP 服务器的入站连接来向外部域发送电子邮件时,便发生了中继。 2.在Exchange 2003中,如何知道哪些SMTP域是你的权威域?打开Exchange Se_微软exchanger批量修改邮箱密码
文章浏览阅读745次。组件中所有用到的:数据、方法、计算属性、监视属性、生命周期钩子都可以配置在setup中_vue3 setup函数 可以用在配置项组件内吗
文章浏览阅读3.1k次,点赞5次,收藏43次。单链表所需要的头文件重命名类型的意义在于以后还需要用到单链表时,存入的类型不一定时int类型,需要更改类型时,要一个个更改,非常麻烦,我们可以直接在这里修改,更加方便(这里的解释我上一篇也有提到)单链表用到的结构体这里我们把结构体重命名为ST单链表需要实现的功能有 1.申请一个新节点的内存空间 2.单链表的头部,尾部的插入和删除 3.单链表的查找 4.单链表查找后的插入和删除 5.单链表的打印 6.单链表的释放1.单链表的节点申请内存空间申请内存空间并不是直接使用,._单链表c语言