Ubuntu18.04安装GTSAM库并验证GTSAM是否安装成功(亲测可用)

在SLAM(Simultaneous Localization and Mapping)和SFM(Structure from Motion)这些复杂的估计问题中,因子图算法以其高效和灵活性而脱颖而出,成为图模型领域的核心技术。GTSAM(Georgia Tech Smoothing and Mapping)库,作为因子图算法的一个杰出代表,由佐治亚理工学院的团队开发,是机器人学和计算机视觉领域里数据平滑和地图构建的重要工具。本文旨在指导读者在Ubuntu 18.04系统上安装GTSAM库。详细介绍安装步骤和必要的配置,以确保读者能够顺利地在其Linux环境中集成GTSAM。

1. 安装依赖项

首先,需要安装GTSAM运行所需的依赖项。可以通过执行以下命令来完成:

sudo apt-get install libboost-all-dev cmake libtbb-dev

或

sudo apt-get install libboost-all-dev
sudo apt-get install cmake
sudo apt-get install libtbb-dev

这些命令将会安装Boost库(用于C++程序的标准库)、CMake(一个跨平台的安装(构建)工具)和TBB(Intel Threading Building Blocks,用于支持并行计算的库)。

如果需要,您还可以按照官网的指示安装MKL(Math Kernel Library,一种高性能的数学库)。

2. 克隆和安装GTSAM

接下来,不是从官方网站下载GTSAM的压缩包,而是从一个特定的代码仓库克隆。这个仓库可能包含了一些特定的优化或更新。您可以通过以下命令来克隆并构建GTSAM:

git clone https://bitbucket.org/gtborg/gtsam.git
cd gtsam/
mkdir build && cd build
cmake ..
make -j6  ( long time to wait !!! )
sudo make install 

这些命令会从指定的Git仓库中克隆GTSAM代码,创建一个构建目录,并在该目录中构建GTSAM。make check是一个可选步骤,用于运行一些测试以确保库正确编译。最后,sudo make install将GTSAM安装到系统中。

 3. 验证GTSAM是否安装成功

一定要注意:target_link_libraries(Test4 gtsam) 用的是 gtsam 连接到 GTSAM库的!!!

CMakeLists.txt 里面的内容

cmake_minimum_required(VERSION 3.27)
project(Test4)

# 设置C++标准
set(CMAKE_CXX_STANDARD 17)

# 找到GTSAM库
find_package(GTSAM REQUIRED)

# 添加可执行文件
add_executable(Test4 main.cpp)

# 链接GTSAM库
target_link_libraries(Test4 gtsam)

main.cpp 里面的内容

#include <gtsam/geometry/Pose3.h>
int main() {
    gtsam::Pose3 pose;
    return 0;
}

4. 注意事项

  • 确保在执行这些步骤之前,您的系统已经更新到最新状态。
  • 如果在安装过程中遇到问题,请仔细检查错误信息,它们通常会提供关于如何解决问题的线索。
  • make check 的时候会报错,但是不影响你 make -j6的时候安装

        通过遵循这些步骤,应该能够在Ubuntu 18.04系统上顺利安装GTSAM,并开始利用它进行高级的机器人学和计算机视觉项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/276186.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法刷题】Day26

文章目录 1. 买卖股票的最佳时机含冷冻期题干&#xff1a;算法原理&#xff1a;1. 状态表示&#xff1a;2. 状态转移方程3. 初始化4. 填表顺序5. 返回值 代码&#xff1a; 2. 替换所有的问号题干&#xff1a;算法原理&#xff1a;代码&#xff1a; 1. 买卖股票的最佳时机含冷冻…

从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革

作者&#xff1a;黄晓萌(学仁) 背景 Job 表示短周期的作业&#xff0c;定时 Job 表示按照预定的时间运行Job&#xff0c;或者按照某一频率周期性的运行 Job。比如&#xff1a; 许多传统企业使用 Linux 自带的 crontab 来做定时任务的方案&#xff0c;该方案非常简单&#xff…

laravel api资源的问题记录

resource 转换层 可以帮助我们转换一些字段的结果&#xff0c;类似前端的filter。 可以使用比如对象或者模型的形式来处理&#xff0c;但使用sql查询会导致n1的问题。如图&#xff1a; 层次嵌套很多&#xff0c;而且很深&#xff0c;这样虽然开发方便了&#xff0c;但是维护就…

Zblog主题模板:ZblogitseanPage博客主题模板

zblog主题模板&#xff1a;ZblogitseanPage博客主题模板 ZblogitseanPage博客主题模板主要是以文字内容为主导&#xff0c;将页面的设计杂乱的图片和元素进行最小化或者去除&#xff0c;从而使整个页面更加简洁、清晰&#xff0c;突出信息的呈现。 下面介绍一下zblog主题模板:Z…

【力扣】20.有效的括号

家人们&#xff0c;看这排序&#xff0c;一看就很简单&#xff0c;对吧&#xff1f;不对&#xff0c;我觉得还挺不是很容易的&#xff0c;哈哈哈。 题解&#xff1a; 在看题目的时候&#xff0c;我一开始的解题思路就挺复杂的。题目说了”左括号必须以正确的顺序闭合“&#x…

如何在简历中解释就业空白

您的工作经历有空缺吗&#xff1f;你不是一个人。有很多合理的理由可以解释为什么你需要休息一下。更重要的是&#xff0c;在一份真实正确的简历中&#xff0c;这些问题是无法避免的。直接解释就业差距总是更好&#xff0c;而且有很多因素需要考虑。你未来的老板想要了解工作轨…

【数据结构二】手撕顺序表与ArrayList源码详解

目录 顺序表与ArrayList 1. 手撕顺序表 2.ArrayList的使用 3.ArrayList的源码分析&#xff08;扩容机制&#xff09; 4.力扣题练习 顺序表与ArrayList 线性表是在逻辑上具备线性结构的一种有序序列&#xff0c;包括顺序表和链表。其中顺序表的物理地址也连续&#xff0c;一…

01_软件测试

01_软件测试 学习目标 1、能复述软件测试的定义 2、能说出7种测试分类的区别 3、能说出质量模型的重点5项 4、能说出测试流程的6个步骤 5、能说出测试模板8个要素 认识软件及测试 什么是软件 软件&#xff1a;控制计算机硬件工作的工具 软件的基本组成 软件生产过程 什么是软…

打地鼠游戏来了

主要利用js鼠标点击事件和window.setInterval&#xff08;&#xff09;回调函数来进行实现的. 源码获取方式&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1eW9qvX3zFH9qlH82-I4yOA 提取码&#xff1a;1233

配置代理解决跨域(CORS)问题

一、跨域 &#xff1f; 我们在完成前后端分离项目时&#xff08;VueSpringBoot&#xff09;&#xff0c;有很多人会遇到跨域问题&#xff08;CORS&#xff09;。 跨域&#xff08;Cross-Origin Resource Sharing&#xff0c;CORS&#xff09;是浏览器的一项安全功能&#xff…

Illustrator脚本 #015 自动角线

这是一个在画板上自动生成辅助线和角线的脚本,只要单击最右边按钮运行脚本即可。 绿色的为参考线及出血线。 #target "Illustrator" var settings = {addTrim : true,addBleedGuide : true,addCenterGuide : true,addCover : false,overlapAlert : false,trimma…

《数据库开发实践》之触发器

一、什么是触发器&#xff1f; 1.概念&#xff1a; 简单来说触发器就是一种特殊的存储过程&#xff0c;在数据库服务器触发事件的时候会自动执行其SQL语句集。 2.构成四要素&#xff1a; &#xff08;1&#xff09;名称&#xff1a;要符合标识符命名规则 &#xff08;2&am…

理解io/nio/netty

一、io io即input/output&#xff0c;输入和输出 1.1 分类 输入流、输出流&#xff08;按数据流向&#xff09; 字节流&#xff08;InputStream/OutputStream&#xff08;细分File/Buffered&#xff09;&#xff09;、字符流(Reader/Writer&#xff08;细分File/Buffered/pu…

How to Develop Word Embeddings in Python with Gensim

https://machinelearningmastery.com/develop-word-embeddings-python-gensim/ 本教程分为 6 个部分;他们是&#xff1a; 词嵌入 Gensim 库 开发 Word2Vec 嵌入 可视化单词嵌入 加载 Google 的 Word2Vec 嵌入 加载斯坦福大学的 GloVe 嵌入 词嵌入 单词嵌入是一种提供单词的…

git 如何将某个分支的某个提交复制到另外一个分支

请直接去看原文: 原文链接:git 如何将某个分支的某个提交复制到另外一个分支_gitlab里面的markdown文件可以复用其他分支的吗-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------…

删除数据后, redis 内存占用还是很高怎么办?

现象&#xff1a; reids 做了数据删除&#xff0c;数据量不大&#xff0c;使用 top 命令看&#xff0c;发现还是占用大量内存 原因&#xff1a; 1.redis 底层内存根据内存分配器分配&#xff0c;不会立刻释放 2.redis 释放的内存空间不是连续的&#xff0c;存在碎片 内存碎…

算法基础day2

前缀和 #include <iostream> using namespace std; const int N100010; int n,m; int a[N],s[N]; int main() {scanf("%d%d",&n,&m);for(int i1;i<n;i) scanf("%d",&a[i]);for(int i1;i<n;i) s[i]s[i-1]a[i];while(m--){int l,r;s…

HTML-基础知识-基本结构,注释,文档说明,字符编码(一)

1.超文本标记语言不分大小写。 2.超文本标签属性名和属性值不区分大小写。 3.超文本标签属性值重复&#xff0c;听取第一个。 4.html结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"vi…

19个Python语法糖和9个内置装饰器

19 个Sweet的 Python Syntax Sugar&#xff0c;用于改善您的编码体验 文章目录 19 个Sweet的 Python Syntax Sugar&#xff0c;用于改善您的编码体验1. 联合运算符Union Operators&#xff1a;合并 Python 字典的最优雅方式2. 类型提示Type Hints&#xff1a;使您的 Python 程序…

常用的几款性能测试软件

&#xff1a; Apache JMeter是一款免费、开源的性能测试工具&#xff0c;广泛应用于Web应用程序和服务的性能测试。它支持模拟多种不同类型的负载&#xff0c;可以测试应用程序在不同压力下的性能表现&#xff0c;并提供丰富的图表和报告来分析测试结果。 优点&#xff1a; …
最新文章