Nvidia Xavier NX安装并测试Cartographer

2023-05-16

这里写自定义目录标题

    • 前言
    • 安装过程
    • 软件包

前言

最近成功在Nvidia Xavier NX和Nvidia Xavier AGX安装并测试了谷歌的开源激光slam算法Cartographer,在此记录下过程中的一些坑。

安装过程

  1. 首先需要安装ROS,需要注意的是Nvidia Xavier NX和Nvidia Xavier AGX都是安装的Ubuntu18.04系统,所以安装对应的ROS版本:Ros-melodic。安装教程参考ROS官网。
    Cartographer大部分教程可以参考官网,链接如下:
    Cartographer官网

  2. 安装依赖库

sudo apt-get update
sudo apt-get install -y \
    clang \
    cmake \
    g++ \
    git \
    google-mock \
    libboost-all-dev \
    libcairo2-dev \
    libcurl4-openssl-dev \
    libeigen3-dev \
    libgflags-dev \
    libgoogle-glog-dev \
    liblua5.2-dev \
    libsuitesparse-dev \
    lsb-release \
    ninja-build \
    stow
  1. 安装abseil
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
cd /usr/local/stow
sudo stow absl

abseil是google开源的C++基础库。ninja是google自己的编译器,速度更快,如果没有安装翻墙软件的话,可能有的时候下载不再来,或者下载速度很慢,可以考虑在Window平台上下载并拷贝到Nvidia平台上。

安装步骤最好按照这个来做,否则容易造成问题,如下所示,在编译cartographer_ros时提示的错误。
在这里插入图片描述
过程如下所示:
在这里插入图片描述
我在执行make和cmake时,一开始是在build文件夹下执行sudo cmake …/ 和sudo make sudo make install 操作,在后面执行cd /usr/local/stow sudo stow absl命令时出现了问题,如下所示。
在这里插入图片描述
所以在编译时还是要加上官网给出的编译条件。

  1. 安装Ceres
VERSION="1.13.0"

# Build and install Ceres.
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
git checkout tags/${VERSION}
mkdir build
cd build
cmake .. -G Ninja -DCXX11=ON
ninja
CTEST_OUTPUT_ON_FAILURE=1 ninja test
sudo ninja install

Ceres我是在Window平台上的Github上下载的,下载1.13.0版本即可。
5. 安装proto3

VERSION="v3.4.1"

# Build and install proto3.
git clone https://github.com/google/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

protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。注意要下载对应的版本。
我一开始参考了如下链接:
protobuf

在这里插入图片描述
但是没有安装成功,在后面编译cartographer_ros时,总是提示Protocol版本不对。后来按照官网的教程,一次就安装成功了。
6. 安装cartographer
需要注意的是注意安装cartographer和cartographer_ros的顺序,要先安装cartographer,再编译cartographer_ros才可以,因为cartographer_ros依赖cartographer。需要注意cartographer的版本和cartographer_ros的版本要对应一致。我在一开始编译cartographer_ros的过程中导致找不到cartographer的一些文件,就是版本没有对应一致。错误如下图所示:
在这里插入图片描述

  1. 安装cartographer_ros

最终cartographer_ros如果编译没有问题,那就是cartographer安装成功了。
8. 下载bag包并测试

bag可以从下面链接下载。
bag包下载地址
下面测试bag包。
这一步不要忘记了,不然找不到ros路径。

echo "source ~/cartographer/cartographer_ros/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

执行roslaunch。

roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

HOME为home路径(~/),bag_filename为bag包所在的路径,软件会自动打开Rviz,显示定位和建图轨迹。

软件包

我把我用到的安装Cartographer所用到的软件,放在了如下百度网盘链接中。软件包包含abseil,Ceres,proto3,各个版本的cartographer_ros和cartographer,vscode,我安装中使用的是最新版本的cartographer_ros和cartographer。
提取码:1111 。
软件包百度网盘地址
下面是运行b0-2014-10-07-12-50-07.bag的建图结果。
在这里插入图片描述
下面是运行b0-2014-07-11-10-58-16.bag的建图结果。
在这里插入图片描述

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

Nvidia Xavier NX安装并测试Cartographer 的相关文章

  • 【视觉入门】——空域图像增强(邻域运算部分):图像卷积、多种滤波器;二值图像分析及形态学图像处理

    目录 空域图像增强邻域运算 xff08 或模板操作 xff09 滤波实现方法 模板卷积 空间平滑滤波 不影响低频分量均值滤波器高斯滤波器中值滤波器 非线性滤波其他滤波器 xff08 统计排序 中点 边缘保持 xff09 空间锐化滤波基于一阶
  • 【课内学习】数字电路Flip-Flop

    本文仅供博主自己复习使用 xff0c 因此只记录了自己容易忘记的知识点 xff0c 并非成体系的整理 Latches and Flip Flops S R latch Why do we need this stupid drive equ
  • 嵌入式系统之-小米路由器3G v1

    嵌入式系统之 小米路由器3G v1 相关汇总 xff1a 嵌入式系统系列目录 第一篇 嵌入式系统之 小米路由器3G V1 第二篇 未完待续 xff0c 欢迎收藏关注 目录 嵌入式系统之 小米路由器3G v1前言一 开箱和拆机二 硬件配置三
  • 简述同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别

    POSIX 同步IO 异步IO 阻塞IO 非阻塞IO xff0c 这几个词常见于各种各样的与网络相关的文章之中 xff0c 往往不同上下文中它们的意思是不一样的 xff0c 以致于我在很长一段时间对此感到困惑 xff0c 所以想写一篇文章整
  • Google Dapper-大规模分布式系统的基础跟踪设施

    说明 xff1a 本文是阅读Google论文 Dapper a Large Scale Distributed Systems Tracing Infrastructure 之后的一个简要总结 xff0c 完整译文可参考此处 另论文 Unc
  • 分布式会话跟踪系统架构设计与实践

    本文整理自美团点评技术沙龙第08期 xff1a 大规模集群的服务治理设计与实践 美团点评技术沙龙由美团点评技术团队主办 xff0c 每月一期 每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验 xff0c 覆盖各主要技术领
  • 学术工具-Citavi 简介

    因为之前也有过看了文献的经历 xff0c 每次都要打印出来 xff0c 然后再纸上写笔记等等 xff0c 可能回头了还找不到关键记号等问题 xff0c 决心有工具就好好利用起来 现在也刚好有机会 xff0c 在知乎上看到了一位现大一大神做的
  • Qt5.7.0 mingw+qwtplot3D 编译

    一 基本编译问题 在安装的过程中却遇到了很多的问题 咨询了Google中大量的帖子 xff0c 发现按照他们说的方法根本没法解决我的实际问题 研究了整整宝几天 xff0c 总算是编译通过 xff0c 解决了所有的问题 下面将通过重现我的安装
  • 一篇实用的Latex的入门教程

    转载 LaTeX新人教程 xff0c 一小时从完全陌生到基本入门 作者 董楠 LaTeX新人教程 xff0c 一小时从完全陌生到基本入门 by Nan 对于真心渴望迅速上手LaTeX的人 xff0c 可以只看正文 曾经在缝缝补补中变得长长的
  • Qt5.8.0使用QChart的问题

    Qt Charts 的横空出世标识着 QWT QCustomPlot 时代的终结 xff0c 是时候向他们做一个简单的告别了 Qt Charts 强大并极具吸引力 xff0c 从现在开始 xff0c 让我们顺势拥抱灿烂的明天 引自 xff1
  • 成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)

    一 家庭服务器实现的主要功能 1 流媒体播放服务 xff1a 利用DLNA实现电视 手机 电脑播放其上面的媒体文件 2 文件共享 xff1a 利用samba实现手机 电脑等终端与服务器的文件共享 3 自动下载 xff1a 利用aria2c实
  • 架构漫谈(八):从架构的角度看如何写好代码 + 我的思考

    我的总结 xff1a 当先前对于利益相关者的关系理清了 xff0c 系统基本架构和测试方法等也有了 xff0c 进入实际Coding阶段 在Coding前 xff0c 需要我们考虑好业务功能的分配 xff0c 关注于功能会频繁变更的部分 x
  • 插头类型:MX 1.25 PH间距2.0、XH间距2.5/2.54、VH间距3.96区别?

    PH xff0c XH xff0c ZH等这些都是JST xff08 Japan Standard Time 日本压着端子制造株式会社 xff09 的料号 xff0c 因为JST用的最多 xff0c 且很多工厂都在模仿制作 xff0c 故也
  • 树莓派NAS搭建——基于OMV

    之前树莓派的debian版系统里装了个以samba服务为基础的NAS xff0c 但在实际使用中发现写入速度只有2M s xff0c 特别慢 xff0c 用的是Class 10的高速TF卡也于事无补 实在无法直视 xff0c 于是一直在搜寻
  • 最短路径算法——Dijkstra介绍

    个人心得体会 xff1a 理解这种或这类算法 xff0c 可以先从小规模的问题入手 xff0c 并逐渐推广到问题变复杂的情况 xff0c 这样理解起来也可以更方便和透彻 和数学归纳法很相似 图简介 以使用地图APP为例 xff0c 假设你想
  • net framework4.0未能成功安装、另一个安装操作正在进行、请继续这个操作之前完成那个操作。

    转自百度 安装net framework 4 0出错的解决方法 步骤 xff1a 开始 运行 xff08 输入CMD xff09 确定或者回车 xff0c 打开管理员命令窗口 xff1b 在管理员命令窗口输入 xff1a net stop
  • java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver

    第一次写jsp xff0c 用jdbc连接数据库进行查询的时候 xff0c Class forName 34 com microsoft jdbc sqlserver SQLServerDriver 34 newInstance conn
  • numpy Array [: ,] 的取值方法

    numpy Array 的取值方法 NumPy数组是一个多维数组对象 xff0c 称为ndarray 创建一个numpy数组 如下所示 span class token keyword import span numpy span clas
  • 如何安装windows和linux双系统

    最近装了两天系统积攒了一下经验 原本一直使用win7 xff0c 现需要使用linux操作系统作为开发环境 xff0c 虚拟机的能力总是有限 xff0c 所以打算装双系统 xff0c 装系统以前一直对我来说一直很神秘 xff0c 为什么系统
  • sed -i命令详解

    sed i命令详解 root 64 www sed nefr 动作 选项与参数 xff1a n xff1a 使用安静 silent 模式 在一般 sed 的用法中 xff0c 所有来自 STDIN 的数据一般都会被列出到终端上 但如果加上

随机推荐

  • 模拟信号和数字信号的区别

    作者 xff1a 杨眀 链接 xff1a https www zhihu com question 38377832 answer 118464689 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业
  • 于渊《orange's 一个操作系统实现》的字符串输出函数disp_str有bug会导致异常

    于渊先生的 orange s 一个操作系统实现 的字符串输出函数disp str有bug会导致异常 发现在同一个函数中两次使用disp str就会导致异常 xff0c 这个问题困扰了我很久 xff0c 一般来说都是堆栈的没有恢复好的问题 x
  • 基于CMake导入第三方库,以OpenCV为例

    基于CMake导入第三方库 xff0c 以OpenCV为例 目录 基于CMake导入第三方库 xff0c 以OpenCV为例前言直接导入find package基于nuget进行包管理运行的问题 前言 除了自己写一个静态库或动态库 xff0
  • 进程是如何结束与回收的

    大致描述进程创建的过程 xff0c 系统中有一个叫做init的初始进程 xff0c 由它调用fork产生子进程 完全拷贝父进程的一切堆栈 xff0c 代码 xff0c 数据 xff0c 文件资源等 xff0c 子进程使用exec装载磁盘中的
  • 今天安装spring的时候遇到一些缺少repository的问题

    在安装spring的时候会对其依赖的一些库的进行一些链接检查 xff0c 导致会报一些缺少repository的问题 No repository found containing osgi bundle oracle eclipse too
  • 什么是maven

    maven是一种项目管理工具 xff0c maven项目与普通项目的不同是 xff0c 项目中多了一个pom xml的文件 xff0c 用于告诉当前项目所需要的jar的位置 xff0c 从而无须手动将需要用到的jar包引入
  • 串口实用的循环缓冲区

    小记 项目临时需要单片机进行节点控制 xff0c 主要用来控制模块的开关 xff0c 以串口进行通讯 单片机几多久没玩了 xff0c 选用的是C8051F920 xff0c 传说中增强型51 xff0c 不过看了Datesheet 还是51
  • C++学习:编译

    编译 为了编译 C 43 43 程序 xff0c 我们使用 C 43 43 编译器 C 43 43 编译器按顺序遍历程序中的每个源代码 cpp 文件 它会检查您的代码以确保它遵循 C 43 43 语言的规则 如果没有 xff0c 编译器会给
  • 堆、栈、方法区存储的变量的类型

    1 堆 xff08 Heap xff09 xff0c 此内存区域的唯一目的就是存放对象实例 xff0c 几乎所有的对象实例都在这里分配内存 这一点在 Java 虚拟机规范中的描述是 xff1a 所有的对象实例以及数组都要在堆上分配 2 通常
  • stm32串口中断的接收

    利用串口使得led点亮 利用之前的串口函数加上NVIC的中断函数结构体 定义结构体 定义 配置抢占优先级的组别 配置NVIC串口中断的结构体 xff1a 中断的通道 xff0c 配置抢占优先级和子优先级 使能CMD 结构体初始化 还有需要配
  • 4.1.2.HTTP报文格式解析

    不同的请求方式 xff0c 他们的请求格式可能是不一样的 xff0c 请求格式就是我们所说的的报文格式 但是 xff0c 通常来说一个HTTP请求报文由请求行 xff08 request line xff09 请求头 xff08 heade
  • QSerialPort实现上位机和单片机串口通信模块

    一 背景知识 项目需要 xff0c 上位机控制单片机执行任务 xff0c 单片机会发送心跳包和任务指令到上位机 xff0c 因此采用全双工模式 xff0c 使用Qt自带QSerialPort实现 二 设计思路 模块需发送和接收数据 xff0
  • 加速度计,磁力计与姿态角的关系。(网上很多资料都是错的,请看我的!)

    请读者自行把公式 xff08 3 1 xff09 计算出来 xff0c 然后得到两个列向量 xff0c 如下图 xff1a 注意 xff0c 网上关于俯仰角给出了不少公式 xff0c 但是都是来自这两个向量的对应关系 我写出的应该是最简形式
  • 传输层协议 ——— UDP协议

    文章目录 传输层再谈端口号端口号范围划分认识知名端口号两个问题netstat与iostatpidof UDP协议UDP协议格式UDP协议的特点面向数据报UDP的缓冲区UDP使用注意事项基于UDP的应用层协议 传输层 在学习HTTP等应用层协
  • Authentication 和 Authorization 的区别

    Authentication 和 Authorization 的区别 背景 我们经常会遇到这两个单词 xff0c 有些人会有疑惑 xff0c 但其实他们区分还是比较清晰的 本人用大白话 xff0c 用我自己的理解写出 区别 authenti
  • c语言中<algorithm>头文件因使用STL在部分oj系统中编译错误的猜测与解决方案。

    最近在使用北邮oj系统时 xff0c 代码编译总无法通过 xff0c 在网络查找答案后 xff0c 有了一些初步的想法 具体原因猜测是因为 lt algorithm gt 头文件包含了STL标准模板库 xff0c 而oj系统可能采用的VC6
  • 一种嵌入式设备串口加密协议

    嵌入式设备串口通讯一般都会明文通讯 但在某些应用场合我们也有加密需求 以下为一种加密方式的建议 上位机 主机 定义为Master 下位机 从机 定义为Slaver 通讯协议建议 完整数据格式 帧头Header 43 数据长度Length 4
  • ubuntu 修改socket最大连接数

    在Linux系统上 xff0c 无论编写应用程序还是测试 xff0c 在进行高并发TCP连接处理时 xff0c 最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制 这是因为系统为每个TCP连接都要创建一个socket句柄 xf
  • [C++11]std::atomic、boost::atomic、Interlocked三者的性能比较(benchmark)

    原文作者 xff1a 64 玄冬Wong 好久没做过benchmark了 xff0c 这次之所以想测试下 xff0c 是怕std atomic的效率没有windows的Interlocked性能好 xff0c 测一下发现 xff0c 性能差
  • Nvidia Xavier NX安装并测试Cartographer

    这里写自定义目录标题 前言安装过程软件包 前言 最近成功在Nvidia Xavier NX和Nvidia Xavier AGX安装并测试了谷歌的开源激光slam算法Cartographer xff0c 在此记录下过程中的一些坑 安装过程 首