Ceres安装与卸载以及新旧版本中的问题

news2024/9/26 1:16:23

Ceres在SLAM优化中常常会用到,简单记录一下关于Ceres的一些问题

1、Ceres安装

1.1、安装依赖项

sudo apt-get install  liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

1.2、下载Ceres

Ceres的下载地址为:

https://github.com/ceres-solver/ceres-solver/tags

在这里插入图片描述在这里选择需要的版本,比如1.14.0,然后会跳出source code的下载选项,下载需要的代码。下载后的代码一般在电脑中的download下,进入该文件夹,找到对应文件,选择extract here解压。然后将解压后的文件夹移动到合适的地方(一般解压完的文件夹会带版本号,可以rename掉)

1.3、编译Ceres

编译过程很简单,进入文件夹后打开终端输入下述指令:

mkdir build
cd build
cmake ..
make -j4
sudo make install

一般没有问题的话就可以正常编译完成了。

1.4、版本查看

ceres的源码文件夹下有一个package.xml文件,其中注明了当前ceres的版本,如图
在这里插入图片描述

2、Ceres卸载

Ceres只有一个库文件在"/usr/local/lib/“中,并且所有的头文件都在”/usr/local/include/ceres/"中,卸载就是很简单的两步:

sudo rm -r /usr/local/lib/cmake/Ceres
sudo rm -rf /usr/local/include/ceres /usr/local/lib/libceres.a

3、Ceres使用

在编写使用到Ceres的工程时CMakeLists.txt中应该有

find_package(Ceres REQUIRED)
include_directories(${Ceres_INCLUDE_DIRS})
target_link_libraries(可执行文件名 ${CERES_LIBRARIES})

否则可能会出现一些奇奇怪怪的错误。

4、Ceres版本问题

在一些项目文件中编译是会遇到下述报错:

integer_sequence’ is not a member of ‘std’

这是由于新版本的ceres对C++的版本有要求。根据网上的教程,遇到这个问题时可以修改项目文件中的CMAKEList,将

set(CMAKE_CXX_FLAGS "-std=c++11")

改成

set(CMAKE_CXX_STANDARD 14)
或者
set( CMAKE_CXX_FLAGS "-std=c++14 -O3" )

不过这个没有试过,不知道具体情况。

另外一种简单粗暴的方式就是卸载高版本的安装低版本的,之前安装2.0.0报了这个错误后按照章节2中卸载方式卸载后重新安装1.14.0的可以正常使用。

参考:

https://blog.csdn.net/qq_41265365/article/details/123795075

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苏嵌实训——day17

文章目录1.1 信号灯集函数接口1.semget2.semctl3.封装初始化函数4. semop二 网络编程2.1 为什么要学习网络编程2.2 发展2.2.1 ARPnet2.2.2 TCP/IP协议2.3 网络体系结构以及OSI开放系统互联模型2.4 TCP/IP协议族2.5 五层模型2.6 TCP和UDP的异同点2.7 函数讲解2.7.1 socket2.7.2 …

k8s快速入门、集群部署-62

一:k8s简介 Kubernetes 简称 k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。 1.1 官方文档 中文官网:https://kubernetes.io/zh/ 中文社区:https://www.kubernetes.org.cn/ 官方文档:https://kubernete…

利用钉钉机器人Webhook向钉钉群推送告警通知

一、配置钉钉群 1、新建一个接收通知的钉钉群 如下图,创建一个接收通知的钉钉群 选择项目群,点创建 输入群名称,右侧选择群成员,最后点击右下角的创建 2、对群进行设置 点群右上角的设置按钮 点击 “智能群助手” 点 “添加机器人…

常见测试案例汇总

作者:~小明学编程 文章专栏:测试开发 格言:热爱编程的,终将被编程所厚爱。 目录 水杯的测试用例 功能性测试 界面测试 性能测试 兼容性测试 易用性测试 安全测试 电梯的测试用例 界面测试 功能测试 性能测试 兼容性…

明明加了唯一索引,为什么还是产生重复数据?

距离上次发稿 已经过去好久了, 开搞,2023第一稿; .还原问题现场 前段时间,为了防止商品组产生重复的数据,我专门加了一张防重表。 问题就出在商品组的防重表上。 具体表结构如下: 为了保证数据的唯一性&a…

《吴军数学通识讲义》读后感

先抛一个问题,一副扑克牌随机发牌,均匀发给三人,已知你手上有两张K,另外两张K,每人一张的概率大,还是分给一个人的概率大,或者这两种场景概率一样? 从小开始学数学,但毕业…

PostgreSQL实战之物理复制和逻辑复制(六)

目录 PostgreSQL实战之物理复制和逻辑复制(六) 6 延迟备库 6.1 延迟备库的意义 6.2 延迟备库部署 6.3 recovery_min_apply_delay参数对同步复制的影响 PostgreSQL实战之物理复制和逻辑复制(六) 6 延迟备库 延迟备库是指可以配…

Flink官方例子解析:Flink源码子项目flink-examples

1. 简介 很多朋友在学习Flink的时候都希望能有个demo代码来参考实践,于是在百度或者Google一顿搜索,虽然能找到很多demo代码,但是这些demo要么版本比较旧,要么代码不全,根本跑不通。 其实,Flink官网就提供…

10、矩阵分析

目录 一、向量和矩阵的范数运算 二、矩阵的秩 三、矩阵的行列式 四、矩阵的迹 五、矩阵的化零矩阵 六、矩阵的正交空间 七、矩阵的约化行阶梯形式 八、矩阵空间之间的夹角 MATLAB 提供的矩阵分析函数: 一、向量和矩阵的范数运算 (1)在MATLAB中,…

不平衡数据集的建模的技巧和策略

不平衡数据集是指一个类中的示例数量与另一类中的示例数量显著不同的情况。 例如在一个二元分类问题中,一个类只占总样本的一小部分,这被称为不平衡数据集。类不平衡会在构建机器学习模型时导致很多问题。 不平衡数据集的主要问题之一是模型可能会偏向多…

笔记本怎么录制屏幕?笔记本录屏有这一款就够了

为了携带方便,很多小伙伴都选择笔记本电脑作为自己学习和办公的工具。在使用笔记本时,我们有时需要对它进行屏幕录制,那你知道笔记本怎么录制屏幕吗?怎样才能又快又好地录制屏幕?今天小编就给大家带来一款能高效录制笔…

DBCO-SS-NH2,二苯并环辛炔-二硫键-氨基,DBCO-SS-amine

DBCO-SS-NH2,二苯并环辛炔-二硫键-氨基,DBCO-SS-amine 英文名称:DBCO-SS-NH2、DBCO-SS-amine 中文名称:二苯并环辛炔-二硫键-氨基 外 观: 浅黄色或白色固体 分子式: C23H25N3O2S2 分子量: 439.59 存储环境:尽可能储存在-20℃环境下&…

网络原理(TCP/IP)(5)

2.IP协议的核心功能:能够在两点之间规划出来一条合适的路径 1)地址管理:通过一系列的规则,可以把网络上设备的地址给描述出来 2)路由地址:根据当下的源IP和目的地址,规划成一条合适的路径,啥叫合适?关键是看…

【IoT】项目管理:做好敏捷管理,从敏捷看板开始

随着移动互联网、软件即服务(SaaS)和基于云计算的快速发展,你需要加快你的产品开发周期,将重点工作放在定义核心功能集的前端。 你可以从敏捷软件开发思想中借鉴一些最佳实践,并将这些实践应用于团队管理中。 敏捷思想…

React+eggjs+mysql实现多文件上传

文章目录一、开发环境二、数据库准备files表【视项目需求不同可略过,一般小项目可忽略】1.数据库准备files表的目的2.表结构三、后端接口准备1.配置config2.router.ts中配置路由3.创建controller4.创建service①为什么做这步②创建service/common文件③service/comm…

IronWebScraper for .NET 2023.1 Crack

用于从 HTML Web 应用程序中提取干净的结构化数据的 C# 框架。 IronWebScraper for .NET 2023 :Adds support for Microsoft .NET 6 and .NET 7.January 27, 2023 - 17:25 New Version ::: Added support for Microsoft .NET 6 an…

【Java】SpringCloud使用

SpringCloud使用 发起远程调用 根据订单id查询订单的同时,把订单所属的用户信息一起返回,但订单信息和用户信息分属两个不同的模块。 本质上是订单模块向用户模块发起请求,在spring中使用resttemplate发起。 MapperScan("cn.itcast.o…

电脑配置怎么看?这3种方法就可以轻松查看

在我们的日常生活和工作中,我们越来越离不开计算机。对于一台好的电脑,首先,我们需要了解它的配置,以便更好地选择它。电脑配置怎么看?可能还有很多人不知道。别担心,本篇文章就是来教会你如何查看电脑的配…

Android studio集成flutter

1.获取Flutter SDK 视窗安装|扑动 (flutter.dev) 2.配置环境变量 3.Android Studio安装Flutter插件 4.打开管理窗口cmd,输入flutter doctor。 5.因为第二步是感叹号(如下图),需要run: flutter doctor --android-licenses&#xf…

基础课程7:多线程与Pad可获得性

目标 GStreamer自动处理多线程,但在某些情况下,您可能需要手动解耦线程。本教程展示了如何做到这一点,此外,还完成了关于Pad可用性的阐述。更准确地说,本文档解释了: 如何为管道的某些部分创建新的执行线程Pad的可用…