安装ORB-SLAM2纯记录(caffe)

news2024/7/6 20:04:38

ubuntu20.04
显卡配置3050TI 显卡驱动: NVIDIA-SMI 525.116.04 Driver Version: 525.116.04
cuda:Cuda compilation tools, release 11.0, V11.0.221

eigen:3.4.0

opencv 3.4.9
opencv下载链接
pangolin :高翔SLAM十四讲中的 没有安装最新版本
安装pangolin时候出现的问题,据说是安装ffmpeg依赖后,与pangolin版本冲突,所以直接将
在pangolin/src文件夹下,找到CMakeLists.txt文件,打开,并在266行将以下代码注释。

find_package(FFMPEG QUIET)
if(BUILD_PANGOLIN_VIDEO AND FFMPEG_FOUND)
  set(HAVE_FFMPEG 1)
  list(APPEND INTERNAL_INC  ${FFMPEG_INCLUDE_DIRS} )
  list(APPEND LINK_LIBS ${FFMPEG_LIBRARIES} )
  list(APPEND HEADERS ${INCDIR}/video/drivers/ffmpeg.h)
  list(APPEND SOURCES video/drivers/ffmpeg.cpp)
  message(STATUS "ffmpeg Found and Enabled")
endif()

参考:https://blog.csdn.net/qin__han/article/details/123474879
不知道这样子对之后使用有没有问题,总之pangolin

提供下载pangolin地址:https://github.com/stevenlovegrove/Pangolin/tags

之后安装ORB-SLAM2时候出现报错1:

/usr/include/c++/9/bits/stl_map.h: In instantiation of ‘class std::map<ORB_SLAM2::KeyFrame*, g2o::Sim3, std::less<ORB_SLAM2::KeyFrame*>, Eigen::aligned_allocator<std::pair<const ORB_SLAM2::KeyFrame*, g2o::Sim3> > >:
/home/ckq/Projects/orb_-slam2_yuanban-vscode/src/LoopClosing.cc:438:21:   required from here
/usr/include/c++/9/bits/stl_map.h:122:71: error: static assertion failed: std::map must have the same value_type as its allocator
  122 |       static_assert(is_same<typename _Alloc::value_type, value_type>::value,

之前安装从来没出现过这个问题

参考链接:https://blog.csdn.net/ABC_ORANGE/article/details/118497033

解决办法: 打开LoopClosing.h,将

ypedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;

改为:

typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;

解释:
https://zhuanlan.zhihu.com/p/218019316

安装ROS

参考链接:详细介绍如何在ubuntu20.04中安装ROS系统

亲测可以使用!!!

ubuntu还源:
https://blog.csdn.net/qq_44339029/article/details/108916820

ubuntu20.04禁止内核升级 导致无法登陆
参考0
参考1

操作1:

sudo gedit /etc/apt/apt.conf.d/10periodic

改为:

APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "0";

操作2:

sudo gedit /etc/apt/apt.conf.d/20auto-upgrades

改为:

APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "0";

改完后重启电脑!!

安装caffe

protobuf版本太高了 卸载

protoc --version
libprotoc 3.6.1

系统一开始版本

卸载
https://blog.csdn.net/m0_49448331/article/details/107734989

sudo apt-get remove libprotobuf-dev

ckq@ckq:~$ which protoc
/usr/bin/protoc

sudo rm /usr/bin/protoc

安装libprotoc3.5.1

安装连接:https://blog.csdn.net/qq_39779233/article/details/123707257

可以看看
参考


caffe make all出现的问题

[ 89%] Linking CXX executable upgrade_net_proto_text
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyUnicode_InternFromString'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `_Py_Dealloc'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyModule_Create2'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyType_GetFlags'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `_Py_fopen'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyUnicode_FromString'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyBytes_AsString'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyBytes_Size'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyUnicode_AsWideChar'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyUnicode_FromEncodedObject'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyUnicode_AsUTF8'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyUnicode_AsUTF8String'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyUnicode_FromFormat'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `_Py_tracemalloc_config'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `PyUnicode_FromStringAndSize'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0: undefined reference to `_PyTraceMalloc_NewReference'
collect2: error: ld returned 1 exit status
make[2]: *** [tools/CMakeFiles/upgrade_net_proto_text.dir/build.make:127: tools/upgrade_net_proto_text] Error 1
make[1]: *** [CMakeFiles/Makefile2:511: tools/CMakeFiles/upgrade_net_proto_text.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

打开cd /usr/lib/x86_64-linux-gnu
查找

find . -name "*libboost_python3*" | xargs ls -l

在这里插入图片描述
在这里插入图片描述

ubuntu20.04中的python默认版本就是3.8 而cmake中用的是python2导致 找不到cmake在编译的时候找不到动态链接库。网上有一些其他操作 但是感觉有问题。没想好是否采用。所以我就切换系统的python版本一下 在编译一下caffe!!!
发现本cmake 中 使用的Python2.7
– Python:
– Interpreter : /usr/bin/python2.7 (ver. 2.7.18)
– Libraries : /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.18)
– NumPy : /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.16.5)

而我默认的是python3.8

那我切换python版本试一下 给两个python设置一个优先级别

第一步查看 是否安装 python2 和python3

第二步:下面两条命令将/usr/bin/python2.7优先级设置为1,将/usr/bin/python3.8的优先级设置为2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2

第三步:显示python可替换版本
sudo update-alternatives --config python

链接:https://blog.csdn.net/cocapop/article/details/129797922

或者在bashrc中设置
可见链接:http://www.javashuo.com/article/p-syxqollf-mv.html

切换系统版本的python在编译 还是出现同样的问题!!!

看来还是得用python3

修改caffe中cmakelists中的内容:

set(python_version “2” CACHE STRING “Specify which Python version to use”)
改为
set(python_version “3” CACHE STRING “Specify which Python version to use”)

不知道这样可不可以
总之 cmake出来的时候现实的python3
但make all 不知道有没有兼容问题

参考链接C++ CMake 使用 Python3
https://blog.csdn.net/weixin_40448140/article/details/112005184

编译ORB-SLAM2的build.sh报错

/usr/include/c++/9/bits/stl_map.h:122:71: error: static assertion failed: std::map must have the same value_type as its allocator
122 | static_assert(is_same<typename _Alloc::value_type, value_type>::value,
| ^~~~~

出现了非典型报错: error: static assertion failed: std::map must have the same value_type as its allocator。查阅资料发现是因为libc++ 3.8.0为自定义std::map分配器添加了这些完整性检查,其中分配器必须为为std::pair<const Key, 值>的类型。也就是说这里需要将Loopclosing.h中的:

在LoopClosing.h中修改: 50行
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
    Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;

改完

typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
    Eigen::aligned_allocator<std::pair<KeyFrame* const, g2o::Sim3> > > KeyFrameAndPose;

参考1:https://blog.csdn.net/weixin_46808875/article/details/125317128

参考链接:https://github.com/raulmur/ORB_SLAM2/pull/585

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

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

相关文章

有趣的图(二)(56)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日主题 咱们书接上回&#xff0c;上次学了图的基本概念&#xff0c;你都学会了吗&#xff1f; 咱们今天要学习内容如下&a…

通过Appium Desktop实现录制功能并导出自动化脚本

1、我们进入下面这个界面 图中红色标记1为 “top by coordinates” 按钮&#xff0c; 这是一种通过坐标定位元素的方式。 图中红色标记2为 “Start Recording” 按钮&#xff0c; 选中表示处理录制状态。 2、点击“top by coordinates” 按钮&#xff0c;再点击 “Start Recor…

vue3基础知识的简单应用

vue3基础知识的简单应用 vue3基础知识的简单应用运行结果 vue3基础知识的简单应用 父组件代码 <template><div class"home"><img alt"Vue logo" src"../assets/logo.png"><HelloWorld msg"Welcome to Your Vue.js A…

linux opencv4.2静态库编译及链接

1. 编译静态库 拉取opencv源码&#xff1a; https://github.com/opencv/opencv.git进入源码根目录&#xff0c;在platforms/linux目录下创建编译脚本build_linux.sh cd platforms/linux vi build_linux.sh脚本里配置cmake编译参数&#xff0c;这里编译静态库需要将 -DBUILD_S…

华为OD机试真题 JavaScript 实现【勾股数元组】【2022Q4 100分】,附详细解题思路

一、题目描述 如果三个正整数A、B、C ,ABC则为勾股数 如果ABC之间两两互质&#xff0c;即A与B&#xff0c;A与C&#xff0c;B与C均互质没有公约数&#xff0c; 则称 其为勾股数元组。 请求出给定n~m范围内所有的勾股数元组。 二、输入描述 起始范围 1 < n < 10000 n &…

[数据结构初阶]单链表

顾名思义&#xff0c;单链表就是一个相邻节点用一个单向指针串起来&#xff0c;形成一种链式结构&#xff0c;那怎么将这些节点连结起来方便管理呢&#xff1f; 目录 单链表定义 申请空间 创建节点 打印链表 尾插 尾删 头插 头删 查找 插入 删除 pos后删除 pos位置删除…

Python 接口测试之接口关键字封装

引言 我们使用RF做UI自动化测试的时候&#xff0c;使用的是关键字驱动。同样&#xff0c;Python做接口自动化测试的时候&#xff0c;也可以使用关键字驱动。但是这里并不是叫关键字驱动&#xff0c;而是叫数据驱动。而接口测试的关键字是什么呢&#xff1f; 我们数据驱动的载体…

知识图谱实战应用15-知识图谱在生物基因学上的应用,实现基因与疾病关联查询

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用15-知识图谱在生物基因学上的应用,实现基因与疾病关联查询。知识图谱在生物基因学中的应用非常广泛,可以帮助研究人员更好地理解和发现基因与疾病之间的关联关系,并推进相关领域的发展。 目录 引言知识图谱简介生物…

Linux之命令别名---alias

Linux之命令别名 定义 别名是命令的快捷方式。为那些需要经常执行&#xff0c;但需要很长时间输入的长命令创建快捷方式很有用 语法格式 alias 别名’原命令 -选项/参数’ 基本用法 查看设置的别名 [redhat8alocalhost ~]$ alias 删除别名 [redhat8alocalhost ~]$ unalia…

你见过的这里都有,开源Web性能测试工具集合

1、JMeter。这个也不用多介绍&#xff0c;基本属于做过Web性能测试都会接触的工具。Apache旗下的开源项目&#xff0c;属于一个Java桌面应用程序。优势是开源免费&#xff0c;扩展能力强。自身性能是硬伤。 2、Locust。Web性能测试的蝗药师&#xff0c;开源免费&#xff0c;并发…

C语言解决任意一个整数分解,逆序输出

C语言解决任意一个整数分解,逆序输出 输入&#xff1a;1234 输出&#xff1a;1 2 3 4 思路&#xff1a; 对于任意一个整数num, &#xff08;1&#xff09;num%10就可以得到其个位数的数字&#xff0c;例如&#xff1a;1234%104 &#xff08;2&#xff09;num/10就可以获取到这个…

【SQL】sqladvisor

文章目录 概述架构流程产品特点安装部署使用帮助输出命令行传参调用配置文件传参调用测试一:对小表进行测试测试二&#xff1a;对大表有索引测试测试三&#xff1a;对大表无索引进行测试测试四&#xff1a;多条SQL同时分析&#xff1a; 来源 概述 SQLAdvisor是由美团点评公司技…

AntDB 企业增强特性介绍——分布式集群下强一致备份恢复技术

AntDB 使用 barman 实现数据的备份和恢复&#xff0c;但是集群节点部署在多台主机上&#xff0c;每个节点单独备份和恢复。多台服务器时钟不同步的情况下同时备份后&#xff0c; 无法真正实现基于时间点的数据完全和不完全恢复。AntDB 提供基于时间点的全局一致性备份恢复。 A…

【趣味JavaScript】我的天! 居然工作了5年的前端开发都不知道eval函数其中居然暗藏玄机!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&#x1…

【redis-初级】

文章目录 1.非关系型数据库&#xff08;NoSQL&#xff09;2.在Linux上安装redis2.1 安装前准备2.2 安装2.3 启动2.4 关闭 3. redis客户端3.1 命令客户端3.2redis远程客户端3.3 redis编程客户端 1.非关系型数据库&#xff08;NoSQL&#xff09; 2.在Linux上安装redis 2.1 安装前…

抑郁症评估干预系统开发 还你美好人生

随着时代的发展&#xff0c;生活压力越来越大&#xff0c;抑郁症似乎也成为了很常见的心理健康问题&#xff0c;让很多家庭苦不堪言&#xff0c;轻者痛苦折磨&#xff0c;重者甚至会出现自虐自杀&#xff0c;所以人们也越来越重视心理健康问题&#xff0c;想要摆脱抑郁症的束缚…

HP DA1023电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件配置 硬件型号驱动情况 主板HP DA1023 处理器Intel(R) Core(TM) i5-8265U已驱动 内存8 GB 2400 MHz DDR4.已驱动 硬盘Samsung SSD 980 250GB(macOS)已驱动 显卡I…

从零开始 Spring Boot 37:初始化 ApplicationContext

从零开始 Spring Boot 37&#xff1a;初始化 ApplicationContext 图源&#xff1a;简书 (jianshu.com) 从前文可以知道&#xff0c;作为 Ioc 容器的 ApplicationContext&#xff0c;需要进行一系列步骤来初始化以最终就绪&#xff08;对于 Web 应用来说就是可以提供Http服务&a…

[PyTorch][chapter 39][nn.Module]

前言&#xff1a; pytorch.nn是专门为神经网络设计的模块化接口. nn构建于autograd之上,可以用来定义和运行神经网络.是所有类的父类. 目录&#xff1a; 基本结构 常用模块 container(容器&#xff09; CPU,GPU 部署 train-test 环境切换 flatten MyLinear 一…

【kali】设置系统方式为中文

目录 1、右击终端 2、输入命令回车 3、需要输入当前账户密码 4、选择语言 5、再次确定 6、输入命令重启 1、右击终端 2、输入命令回车 sudo dpkg-reconfigure locales 3、需要输入当前账户密码 4、选择语言 依次选中en_US.UTF-8 / zh_CN.GBK&#xff08;没找到&#xf…