【SLAM-建图】Ubuntu18.04安装cartographer记录

2023-05-16

1.更新和安装相关工具

sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build

2.初始化工作空间

mkdir -p carto_ws/src
cd carto_ws
wstool init src   # 会在carto_ws文件夹下生成一个src文件和 .rosinstall文件

3.下载3个重要包:

cartographer、cartographer_ros、ceres_solver 包

在 carto_ws/src 路径下,
(1) 对于ceres_solver包, 需要1.13.0版本的, 否则后面编译会出现很多问题. ceres_solve 包是一个非线性优化库.

wget ceres-solver.org/ceres-solver-1.13.0.tar.gz
tar xvf ceres-solver-1.13.0.tar.gz
cd ceres-solver-1.13.0
mkdir build
cd build
cmake ..
make         // 编译
sudo make install  //安装, 完成之后即安装好了ceres-solver.

(2) 拉取 cartographercartographer_ros 包文件

git clone https://github.com/cartographer-project/cartographer.git
git clone https://github.com/cartographer-project/cartographer_ros.git

在这里插入图片描述

4.安装abseil-cpp依赖.

carto_ws/ 路径下
执行这个脚本命令 src/cartographer/scripts/install_abseil.sh 下载和安装, 或者使用如下的所有命令下载和安装, 因为这个脚本命令里的内容就是下面的所有命令.

git clone https://github.com/abseil/abseil-cpp.git 
cd abseil-cpp
git checkout d902eb869bcfacc1bad14933ed9af4bed006d481
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl ..
ninja
sudo ninja install
sudo apt-get install stow
cd /usr/local/stow
sudo stow absl

在这里插入图片描述

5.初始化及安装

sudo rosdep init #(注意这里可以跳过,不然有可能会报错,如果我们装ROS的时候已经初始化过, 则无需再初始化)
rosdep update  #(如果之前配置ros环境已经执行过,可以不用再次执行)
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

此处执行 rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y 可能会报错, 此处忘记截自己的图片了, 用了别人的, 报错内容大致一样的.
在这里插入图片描述
解决的办法是: 需要删除或者注释在cartographer 包下(不是那个cartographer_ros包)package.xml文件里的<depend>libabsl-dev</depend> , 然后再重新执行 rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y 命令.
在这里插入图片描述

6.编译.

前提是要完成上面的准备工作和解决报错内容之后, 才能进行编译.
carto_ws/ 路径下:

catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash  # 添加到环境变量, 和ROS的 source devel/setup.bash 类似.

全部编译成功后的结果如下图所示:
在这里插入图片描述
编译成功生成的文件夹是下面三个红框中的文件:
在这里插入图片描述

7.测试

  1. 下载测试bag包到Downloads路径下.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
  1. 每次运行前添加一下工作环境变量.
source install_isolated/setup.bash

提示: 如果出现下面的报错说明是没有添加工作环境变量的.

RLException: [demo_backpack_2d.launch] is neither a launch file in package [cartographer_ros] nor is [cartographer_ros] a launch file name The traceback for the exception was written to the log file
  1. 执行测试命令:
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

成功运行launch文件之后的rviz截图:
在这里插入图片描述
在这里插入图片描述

8.地图格式转换

cartographer保存地图方式:

在一个终端执行建图命令:

# 执行建图命令:
source install_isolated/setup.bash
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/wsy/data/wu_outdoor/cartographer/cartographer_paper_deutsches_museum.bag

再打开另一个终端, cartographer保存地图方式, 执行保存图片命令:

# 1 完成轨迹,不再接受数据.
rosservice call /finish_trajectory 0

# 2 序列化保存当前状态, 生成一个 mymap.pbstream 文件.
rosservice call /write_state "{filename: '/home/wsy/Pictures/mymap.pbstream'}"

# 3 将pbstream文件转化为pgm和yaml文件.
rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=/home/wsy/Pictures/mymap -pbstream_filename=/home/wsy/Pictures/mymap.pbstream -resolution=0.05

在这里插入图片描述

还有需要注意点:

protocol 需要proto3+版本以上的. 一般18.04Ubuntu ROS melodic系统的话已经是proto3以上的了. 但是如果编译过程中如果出现proto版本相关错误的话, 可以执行这个脚本 src/cartographer/scripts/install_proto3.sh 安装.

而 Ubuntu 16 / ROS Kinetic必须输入该脚本命令安装: src/cartographer/scripts/install_proto3.sh.

参考的博客: 1. 2.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SLAM-建图】Ubuntu18.04安装cartographer记录 的相关文章

  • evo安装、evo使用方法详细介绍使用教程,SLAM轨迹精度评估工具,如何用来评估ORB-SLAM2生成的轨迹精度,评估激光雷达SLAM与视觉SLAM的轨迹精度,量化SLAM的误差

    evo在视觉SLAM中是一个极为有用的工具 对于论文党 科研党 工程党都非常有帮助 它可以用于评估SLAM输出的轨迹的精度 可以自动生成均值 方差 轨迹等等信息的图或者表 总之评估SLAM精度用它足以 它目前支持的公开数据集格式有 TUM
  • ROS STAGE教程2(地图定义和GMAPPING建图)

    目前用在ROS Kinetic上的stage版本为4 1 官方教程http rtv github io Stage modules html 用户可以用stage或者gazebo来创建地图和机器人 传感器模型来进行仿真 并与自己的SLAM模
  • No rule to make target

    No rule to make target 引言 解决方法 引言 报错 No rule to make target Thirdparty g2o lib libg2o so needed by lib libygz SLAM so 停止
  • 《视觉SLAM十四讲》第一版源码slambook编译调试

    slambook master ch2 编译正常 log如下 slambook master ch2 mkdir build cd build cmake make j8 The C compiler identification is G
  • ROS激光SLAM导航理解

    ROS激光SLAM导航理解 注 最近学习ROS的激光导航知识 需要理清ROS的SLAM 环境感知 costmap 与导航算法 为防止自己忘记 将觉得有价值的内容收集于此 对AGV来说 SLAM是个大大坑 环境感知和局部运动控制也是大坑 学习
  • 视觉SLAM漫谈(二):图优化理论与g2o的使用

    视觉SLAM漫谈 二 图优化理论与g2o的使用 1 前言以及回顾 各位朋友 自从上一篇 视觉SLAM漫谈 写成以来已经有一段时间了 我收到几位热心读者的邮件 有的希望我介绍一下当前视觉SLAM程序的实用程度 更多的人希望了解一下前文提到的g
  • 深度相机Kinect2.0三维点云拼接实验(一)

    文章目录 摘要 Kinect2 0简介 工作原理 RGB相机成像原理 深度相机成像原理 总结 参考文献 摘要 Kinect2 0是微软推出的一款RGB D相机 它即支持普通相机的拍摄 也支持脉冲测量深度信息 本系列文章基于该传感器给出基本的
  • vscode配置eigen3

    目录 1 头文件包含 2 c cpp properties json 3 CMakeList txt 4 完整代码 1 头文件包含 Eigen 核心部分 include
  • 图像匹配算法

    图像匹配算法分为3类 基于灰度的匹配算法 基于特征的匹配算法 基于关系的匹配算法 1 基于灰度的模板匹配算法 模板匹配 Blocking Matching 是根据已知模板图像到另一幅图像中寻找与模板图像相似的子图像 基于灰度的匹配算法也称作
  • 关于GPS、惯导、视觉里程计的几个定义

    1 首先写几个定义 惯性导航系统 Inertial Navigation System INS 全球定位卫星系统 Global Navigation Satellite System GNSS GNSS 包括全球定位系统 Global Po
  • 互转(经纬度、地心坐标、东北天坐标)

    Part1三种坐标系介绍 经纬度坐标 假设空间某点P 用经纬度表示的话 你们B代表纬度 L代表经度 H代表大地高 纬度B P点沿着地球法线方向与赤道面的夹角 向北为正称为北纬 0 90 向南为负称为南纬 0 90 实际表示可以用 90 90
  • Ubuntu20.04安装各种库----简洁版

    目录 Eigen3 Sophus Pangolin Ceres g2o 建议先装anaconda再装ros python opencv啥该有的都有了 下面仅仅安装ros没有的库 Eigen3 作用 线性代数开源库 提供了有关线性代数 矩阵和
  • SLAM--三角测量SVD分解法、最小二乘法及R t矩阵的判断

    目录 一 三角测量 方法一 SVD分解法的推导 方法二 最小二乘法求解 二 ORB SLAM2 三角测量源码 三 利用Eigen源码实现三角测量 方法一 SVD分解法 方法二 最小二乘法求解 速度最快 方法三 利用OpenCV自带函数 四
  • GMAPPING的参数设置

    二 运行gmapping 我总结了运行gmapping的两种方法 1 基于命令行 rosrun gmapping slam gmapping scan scan delta 0 1 maxUrange 4 99 xmin 5 0 ymin
  • Ceres Solver从零开始手把手教学使用

    目录 一 简介 二 安装 三 介绍 四 Hello Word 五 导数 1 数值导数 2解析求导 六 实践 Powell函数 一 简介 笔者已经半年没有更新新的内容了 最近学习视觉SLAM的过程中发现自己之前学习的库基础不够扎实 Ceres
  • Ubuntu18.04安装pcl(过程/坑记录式教程)

    Ubuntu18 04安装pcl 1 下载pcl 2 安装依赖项 3 编译 4 安装 5 网上教程说要安装QT5和VTK 但按照本文的 本文记录了安装时出现的问题 出错的安装命令也记录了 建议浏览一遍再参考 不要错用了错误的指令 1 下载p
  • ORB-SLAM2:基于可识别特征的自主导航与地图构建

    ORB SLAM2 基于可识别特征的自主导航与地图构建 ORB SLAM Tracking and Mapping Recognizable Features 转自 http blog csdn net cicibabe article d
  • 视觉SLAM漫谈

    视觉SLAM漫谈 1 前言 开始做SLAM 机器人同时定位与建图 研究已经近一年了 从一年级开始对这个方向产生兴趣 到现在为止 也算是对这个领域有了大致的了解 然而越了解 越觉得这个方向难度很大 总体来讲有以下几个原因 入门资料很少 虽然国
  • LIO-SAM运行自己数据包遇到的问题解决--SLAM不学无数术小问题

    LIO SAM 成功适配自己数据集 注意本文测试环境 Ubuntu18 04 ROS melodic版本 笔者用到的硬件以简单参数 激光雷达 速腾聚创16线激光雷达 RS Lidar 16 IMU 超核电子CH110型 9轴惯导 使用频率1
  • 高翔博士Faster-LIO论文和算法解析

    说明 题目 Faster LIO 快速激光IMU里程计 参考链接 Faster LIO 快速激光IMU里程计 iVox Faster Lio 智行者高博团队开源的增量式稀疏体素结构 Faster Lio是高翔博士在Fast系列的新作 对标基

随机推荐

  • 云计算赛项私有云服务搭建(最新版比赛步骤超详细)

    openstack平台搭建基础 题目 1 基础环境搭建 使用提供的用户名密码 xff0c 登录提供的 OpenStack 私有云平台 xff0c 在当前租户下 xff0c 使用 CentOS7 9 镜像 xff0c 创建两台云主机 xff0
  • 树莓派:使用VNC+远程桌面登录+一些无法登录问题及解决

    目录 一 VNC登录1 下载VNC2 VNC登录操作2 VNC无法登录的问题以及解决方法 xff01 二 xrdp远程桌面登录 xff08 建议 xff1a 如果VNC可以进去 xff0c 建议不要捣鼓远程桌面 xff0c 二者选其一 xf
  • 【算法基础三】算法如何入门?零基础入门算法应该学些什么?

    作者简介 xff1a 大家好 我是新小白2022 xff0c 让我们一起学习 xff0c 共同进步吧 xff01 x1f3c6 x1f4c3 个人主页 xff1a 新小白2022的CSDN博客 x1f525 系列专栏 xff1a 算法基础入
  • 51单片机学习:蜂鸣器实验

    实验名称 xff1a 蜂鸣器实验 接线说明 xff1a 实验现象 xff1a 下载程序后蜂鸣器发出声音 xff0c 一段时间后关闭 注意事项 xff1a include 34 reg52 h 34 typedef unsigned int
  • isalnum()

    isalnum 判断一个字符是否是字母或数字 int isalnum int c isalnum 函数用来检测一个字符是否是字母或者十进制数字 如果仅仅检测一个字符是否是字母 xff0c 可以使用 isalpha 函数 xff1b 如果仅仅
  • 云计算与大数据实验五 MapReduce编程

    一 实验目的 了解Mapper类 xff0c Reducer类和Job类 掌握什么是MapReduce及使用MapReduce进行运算 掌握挖掘父子辈关系 xff0c 给出祖孙辈关系的表格 二 实验内容 使用Map Reduce计算班级中年
  • 获取网页相关图片

    获取网页上相关图片 span class token operator span span class token operator span span class token operator span coding span class
  • Maven项目缺少Maven Dependencies解决方法总结

    一 今天搭建了一个maven项目 xff0c 在pom xml文件引入依赖后 xff0c 发现项目结构中没有Maven Dependencies文件 xff08 下图 xff09 xff0c 但是在java Build Path中又可以找到
  • 基于STM32智能窗帘

    基于STM32智能窗帘系统 1 可以检测环境中温湿度 烟雾浓度 一氧化碳浓度 xff0c 光照强度 超过阈值蜂鸣器报警 xff0c 或者控制灯的开关 xff0c 同时把测量的一氧化碳浓度 光照强度 光照强度阈值 xff0c 温湿度显示在ol
  • strtok函数

    头文件 string h 函数声明 char strtok xff08 char str xff0c const sep xff09 返回值 分隔符之前字符串的首地址 用法 sep的参数是个字符串 xff0c 定义了用作分隔符的字符集合st
  • Hadoop中DataNode无法打开的解决

    当遇到使用jps命令无法启动DataNode时 xff0c 可尝试以下操作 首先关闭hdfs cd到root用户下的hadoopdata目录 xff0c 打开该目录 该目录中在NameNode安装初始化时自动生成个 两个相对应的目录data
  • JS中猜数字游戏

    程序随机生成一个1 10之间的数字 xff0c 并让用户输入一个数字 xff0c 如果大于该数字 xff0c 就提示 xff0c 数字大了 xff0c 继续猜 如果小于该数字 xff0c 就提示数字小了 xff0c 继续猜 如果等于该数字
  • 移动端HTML开发(模仿京东移动端)

    制作过程中问题总结 xff1a 1 对于body特殊设置解释 body width 100 margin 0 auto min width 320px max width 640px font size 14px font family a
  • 获取dom页面文档对象的5种方法~js篇

    1 通过ID获取 xff1a document getElementById ID名 注意点 xff1a 因为我们文档页面从上往下加载 xff0c 所以先得有标签所以我们script写到标签的下面get 获得element 元素by 通过驼
  • 节点操作~JS

    2 节点操作 A 动态创建节点的三种方法 xff1a 1 document write 注意 xff1a 页面文档流加载完毕 xff0c 再调用就会导致页面重绘 2 element innerHTML将内容写入某个dom节点 xff0c 不
  • 删除数组元素方法

    1 length JavaScript中Array的length属性非常有特点一一它不是只读的 因此 xff0c 通过设置这个属性可以从数组的末尾移除项或添加新项 var colors 61 34 red 34 34 blue 34 34
  • ubuntu中ifconfig命令无效

    许多windows非常熟悉ipconfig命令行工具 xff0c 它被用来获取网络接口配置信息并对此进行修改 Linux系统拥有一个类似的工具 xff0c 也就是ifconfig interfaces config 通常需要以root身份登
  • JS中~定时器

    一 window对象常见事件 window onload是窗口 页面 xff09 加载事件 当文档内容完全加载完成会触发该事件 包括图像 脚本文件 CSS文件等 就调用的处理函数 注意 1 有了window onload就可以把JS代码写到
  • ubuntu磁盘信息查看命令

    1 命令控制行切入U盘目录中 dev 设备驱动文件 media 此目录下放置可插拔设备 xff0c 比如SD卡 xff0c 或者U盘就是挂载到这个目录中 首先要切换到 dev目录中寻media寻用户找到相关U盘 如上便可切入相应U盘 2 根
  • 【SLAM-建图】Ubuntu18.04安装cartographer记录

    1 更新和安装相关工具 sudo apt span class token operator span get update sudo apt span class token operator span get install span