Ubuntu20.04+ros-noetic配置Cartographer
一、概述
因为要配置激光SLAM,Cartographer属于激光雷达SLAM 中比较经典的一款,在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。
二、具体操作
(一)概述
使用平台是Windows的wsl2上的Ubuntu20.04子系统,双系统与虚拟机的安装原理与这个相同。主要依照的安装操作是官方文档,链接如下所示。
Running Cartographer ROS on a demo bag — Cartographer ROS documentation
https://google-cartographer-ros.readthedocs.io/en/latest/demos.html 按照官方流程大概能安装下来,中间可能有些报错,这里将逐一分析我在安装过程中遇到的报错。
(二)操作流程
1.安装依赖
因为我的ros版本是noetic,所以根据官方的流程,我要进行这样的安装。如下所示、
sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow
如果是之前的版本的话,可以使用下面的命令安装依赖。
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build stow
2.下载包
按照官方文档操作将cartographer下载下来。官方文档中caktin_ws可以更换为其他的包名。例如我将其更换为了CartographerSLAM
mkdir catkin_ws
cd catkin_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
3. 配置依赖
(1)运行
此步骤也是安装官方文档的操作进行即可,其命令以此如下面所示。需要将
${ROS_DISTRO}更改为noetic版本。
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=noetic -y
需要注意的是,在官方文档中的更新命令如图所示。

意思是假如之前使用rosdep init的话,这次使用会出现错误,但这个错误对之后没有什么影响,可以忽略掉。
(2)报错
这里会出现关于libabsl-dev的问题,如下所示

报错的原因是因为无法安装这个依赖。
在github上进行查询后,发现了这样的解决方法,链接如下所示。
Error while installing dependencies: libabsl-dev not available · Issue #1726 · cartographer-project/cartographer_ros · GitHubI tried installing cartographer ros on a newly set up ubuntu system (20.04.4 LTS with ros noetic installed) and followed the following steps of the documentation: sudo apt-get update sudo apt-get install -y python3-wstool python3-rosdep ...
https://github.com/cartographer-project/cartographer_ros/issues/1726 大致的解决思路是,将这个包在package.xml文件中的位置给注释掉。如下所示,注意是图中红色划出来的包。

在下面将其注释掉,如图所示。

之后这个依赖库会手动进行安装的,在这里不用担心。
4.编译
(1)运行命令
src/cartographer/scripts/install_abseil.sh
再运行下面的命令,将可能的版本冲突避免掉,如下所示,由于我的版本是noetic版本,官网上面的ros版本号,我替换为noetic版本。
sudo apt-get remove ros-noetic-abseil-cpp
在依赖安装完成后,进行编译,输入如下的命令。命令来源于官方。
catkin_make_isolated --install --use-ninja
(2)报错
如图所示,直接运行会出现下面的报错。

这个地方出现报错的原因是,多个ceres库之间的版本出现了问题。导致出现多个版本的原因是因为之前在我的系统上面,我安装过ceres库。将之前那个库删除即可。再运行一遍上面安装依赖的命令。再次编译即可编译通过。
参考链接如下。https://github.com/cartographer-project/cartographer/issues/1901
https://github.com/cartographer-project/cartographer/issues/1901
5.跑示例包
官方网站参考如下。
Running Cartographer ROS on a demo bag — Cartographer ROS documentation
https://google-cartographer-ros.readthedocs.io/en/latest/demos.html
相关文章:
Ubuntu20.04+ros-noetic配置Cartographer
一、概述 因为要配置激光SLAM,Cartographer属于激光雷达SLAM 中比较经典的一款,在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。 二、具体操作 (一)概述 使用平台是Windows的wsl2上的Ubuntu20.04子系统,…...
Visual Studio 2022 下载和安装
文章目录 概述一,下载步骤二,安装过程 概述 Visual Studio 提供 AI 增强功能,例如用于上下文感知代码补全的 IntelliSense 和可利用开源代码中的 AI 模式的 IntelliCode。 集成的 GitHub Copilot 提供 AI 支持的代码补全、聊天辅助、调试建议…...
在 Windows 环境下实现免密登录 Linux 服务器
在 Windows 环境下实现免密登录 Linux 服务器 1. 生成 SSH 密钥对2. 手动将公钥上传到服务器方法 1:使用 scp 传输公钥文件方法 2:使用 Windows 内置工具或编辑器手动复制 3. 测试免密登录4. 可能需要的工具 以下是在 Windows 中实现免密登录的步骤&…...
Computer Exercise
每日一练 单选题 在计算机机箱前面板接口插针上( C )表示复位开关。 A.SPK B.PWRLED C.RESET D.HDDLED每台PC机最多可接( B )块IDE硬盘。 A.2 B.4 C.6 D.8( …...
利用Stable Diffusion AI图像模型评估智能车模型算法表现(下篇)
今天小李哥将介绍亚马逊云科技的Jupyter Notebook机器学习托管服务Amazon SageMaker上,通过AI图像生成模型Stable Diffusion Upscale和Depth、向量知识库和LangChain Agent,生成用于AI 智能车模型训练的图像数据集并评估模型表现。 本系列共分为上下两篇…...
音视频入门基础:WAV专题(8)——FFmpeg源码中计算WAV音频文件AVStream的time_base的实现
一、引言 本文讲解FFmpeg源码对WAV音频文件进行解复用(解封装)时,其AVStream的time_base是怎样被计算出来的。 二、FFmpeg源码中计算WAV音频文件AVStream的time_base的实现 从《音视频入门基础:WAV专题(5)…...
springboot中的请求过滤filter与拦截interceptor分析
首先我们要定义一个类,实现标准的过滤器 import lombok.extern.slf4j.Slf4j;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;WebFilter("/*") Slf4j public class AuthFilter implements Filter {Overr…...
Node.js入门与生态全解析:包管理与构建工具详解
Node.js入门与生态全解析:包管理与构建工具详解 目录 🎯 包管理 使用 npm 和 yarn:项目依赖管理的利器创建和发布 npm 包:实现模块化与共享 ⚙️ 构建工具 使用 Webpack 和 Babel:高效打包与代码转换配置构建流程&am…...
828华为云征文|华为云Flexus X实例docker部署harbor镜像仓库
828华为云征文|华为云Flexus X实例docker部署harbor镜像仓库 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错…...
fedora siliverblue adb
开始 1、找到手机 usb 的 idV: $ lsusb ... Bus 001 Device 012: ID 22d9:2766 OPPO Electronics Corp. PECM30是 22d9 2、在 toolbox 外面添加 udev: sudo nano /etc/udev/rules.d/51-android.rulesSUBSYSTEM"usb", ATTR{idVendor}"…...
mybatisplus查询指定字段
使用mybatisplus查询指定字段 实体类 package com.test.entity;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annota…...
探寻 IP 代理地址繁多之因
在当今的网络天地里,IP 代理服务随处可见,且令人称奇的是,它们常常手握海量的 IP 地址可供挑选。那么,究竟是什么原因使得 IP 代理拥有如此众多的地址呢?现在,就让我们一同深入探究这个神秘现象背后的缘由。…...
MyBatis常见面试题
文章目录 说说 MyBatis 执行流程?1. 加载配置文件和映射文件2. 构建 SqlSessionFactory3. 创建 SqlSession4. 调用 Mapper 方法5. 处理参数和结果映射6. 事务管理7. 释放资源简化流程图: MyBatis 和 Hibernate 有什么不同?1. **对象关系映射层…...
Swift 运算符
Swift 运算符 Swift 是一种强类型编程语言,由苹果公司开发,用于iOS、macOS、watchOS和tvOS应用程序的开发。Swift 运算符是其核心特性之一,它允许开发者执行各种数学和逻辑操作。本文将详细介绍 Swift 中的运算符,包括它们的功能、用法和类型。 Swift 运算符概述 Swift …...
PDF转PPT神器揭秘!3步操作,轻松打造2024年会议爆款PPT
现在是数字化的时代,PDF 和 PPT 对职场的人来说可重要了。PDF 文件格式稳,也好分享,所以大家都爱用。PPT 演示起来很厉害,在开会、讲座的时候特别管用。不过呢,要是有好多 PDF 文件,咋能快点把它们变成好看…...
✨机器学习笔记(一)—— 监督学习和无监督学习
1️⃣ 监督学习(supervised learning) ✨ 两种主要类型的监督学习问题: 回归(regression):predict a number in infinitely many possible outputs. 分类(classification)࿱…...
【Netty】实战:基于Http的Web服务器
目录 一、实现ChannelHandler 二、实现ChannelInitializer 三、实现服务器启动程序 四、测试 本文来实现一个简单的Web服务器,当用户在浏览器访问Web服务器时,可以返回响应的内容给用户。很简单,就三步。 一、实现ChannelHandler pack…...
4K4D: Real-Time 4D View Synthesis at 4K Resolution 学习笔记
本文是学习4K4D的笔记记录 Project Page:https://zju3dv.github.io/4k4d/ 文章目录 1 Pipeline1.1 特征向量的计算1.2 几何建模1.3 外观建模⭐1) 球谐函数SH模型2) 图像融合技术 1.4 可微分深度剥离渲染 2 Train(loss)…...
2024年 Biomedical Signal Processing and Control 期刊投稿经验最新分享
期刊介绍 《Biomedical Signal Processing and Control 》期刊旨在为临床医学和生物科学中信号和图像的测量和分析研究提供一个跨学科的国际论坛。重点放在处理在临床诊断,患者监测和管理中使用的方法和设备的实际,应用为主导的研究的贡献。 生物医学信…...
【C++】关于类的public、protected 、private
public、protected、private是访问控制修饰符,决定了类成员的可访问性,特性如下: public: 可以被类内部和类外部直接访问 可以被派生类访问 protected: 可以被类内部访问 可以被派生类访问 不能被类的外部直接访问 p…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
