如何在M1 MACBOOK上准备好ORB-SLAM2的环境
1. 环境
M1 Macbook Air
Parallels Desktop 17
关于虚拟机,在之前尝试了UTM,但是性能欠佳,卡顿情况比较多,而且未能解决联网问题,最终只能含泪放弃
Parallels Desktop真的好贵~
Ubuntu 20.04 ARM 64系统
2. 需要哪些元素
A. Eigen
B. Pangolin
C. Opencv
D. Orb-slam2
3. 如何准备
这里只记录准备的过程,不对相关的库或者内容进行介绍
A. Eigen
i. 下载地址:https://eigen.tuxfamily.org/index.php?title=Main_Page
ii. 我下载的是当时最新版本:3.4.0
iii. 正常的CMAKE编译安装,无特殊情况
B. Panolin
i. Github地址:https://github.com/stevenlovegrove/Pangolin
ii. 按照readme进行安装,无特殊情况
# Get Pangolin
cd ~/your_fav_code_directory
git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
# Install dependencies (as described above, or your preferred method)
./scripts/install_prerequisites.sh recommended
# Configure and build
mkdir build && cd build
cmake ..
cmake --build .
iv. 值得注意的是,在进行代码clone时,需要添加—recursive
C. Opencv
i. 下载地址:https://opencv.org/releases/
ii. 我下载的是当时最新版本:4.5.4
iii. 安装操作:
cd opencv4.5.4
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j6
sudo make install
D. Orb-slam 2
i. Github 地址:https://github.com/raulmur/ORB_SLAM2
ii. 完成代码clone之后,需要进行修改:
1. CMakeLists.txt:
a. 需要添加对cpp 14特性的支持:
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+ set(CMAKE_CXX_STANDARD 14)
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+ set(CMAKE_CXX_EXTENSIONS OFF)
add_definitions(-DCOMPILEDWITHC11)
message(STATUS "Using flag -std=c++11.")
b. 修改opencv版本要求:
-find_package(OpenCV 3.0 QUIET)
+find_package(OpenCV 4.5 QUIET)
c. 修改对Eigen3的要求:
-find_package(Eigen3 3.1.0 REQUIRED)
+find_package(Eigen3 3.1.0 REQUIRED NO_MODULE)
2. Thirdparty/DBoW2/CMakeLists.txt
a. 修改opencv版本要求:
-find_package(OpenCV 3.0 QUIET)
+find_package(OpenCV 4.5 QUIET)
3. include/LoopClosing.h
a. 修改类别定义问题:
- Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
+ Eigen::aligned_allocator<std::pair<KeyFrame* const, g2o::Sim3> > > KeyFrameAndPose;
4. include/ORBextractor.h
a. 修改opencv头文件引用问题:
-#include <opencv/cv.h>
+#include <opencv2/imgproc/imgproc_c.h>
+#include <opencv2/highgui/highgui_c.h>
5. include/System.h
a. 解决找不到CV_LOAD_IMAGE_UNCHANGED问题:
+#include<opencv2/imgcodecs/legacy/constants_c.h>
b. 解决usleep函数不存在问题:
+#include<unistd.h>
iii. 修改完,进行编译:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
4. 测试是否成功
A. 下载测试数据:http://vision.in.tum.de/data/datasets/rgbd-dataset/download
B. 例如下载:Sequence 'freiburg1_360',注意下载时是freiburg1还是freiburg2
C. 下载完成解压缩
D. 回到orb-slam2的目录:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
i. 注意TUMX.yaml需要修改,如果下载的是freiburg1,修改成TUMX1.yaml等等
ii. PATH_TO_SEQUENCE_FOLDER是指解压缩后的目录,包含了depth, rgb目录以及若干文本文件
E. 正确情况会看到窗口启动正常显示
如何在M1 MACBOOK上准备好ORB-SLAM2的环境的更多相关文章
- ORB SLAM2在Ubuntu 16.04上的运行配置
http://www.mamicode.com/info-detail-1773781.html 安装依赖 安装OpenGL 1. 安装opengl Library$sudo apt-get inst ...
- 如何在Macbook上安装MySQL ?
MySQL是常用的一款开源数据库,对各个平台都提供了支持,而Macbook又作为程序员的一款主力开发工具经常被使用.因此怎么在Macbook上安装MySQL进行程序开发也成了一项基本技能.下面来跟随本 ...
- M1 MacBook安装Homebrew
在装载M1芯片的MacBook产品上,默认是不带有homebrew这款包管理工具的,具体原因官方解释为适配问题,原有的homebrew无法与silicon Mac机型匹配.但是这并不意味着我们不可以在 ...
- [译]How to Install Node.js on Ubuntu 14.04 如何在ubuntu14.04上安装node.js
原文链接为 http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/ 由作者Jacob Nicholson 发表于October ...
- 如何在iOS地图上高效的显示大量数据
2016-01-13 / 23:02:13 刚才在微信上看到这篇由cocoachina翻译小组成员翻译的文章,觉得还是挺值得参考的,因此转载至此,原文请移步:http://robots.thought ...
- GPT分区基础知识及如何在GPT分区上安装WIN7
大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘,更快速的启动win8,预装系统都采取了GPT分区 ...
- 如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据
http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPa ...
- 如何在Ubuntu Unity上修改应用程序图标
转自如何在Ubuntu Unity上修改应用程序图标 这篇文章将教大家在Ubuntu Unity上修改应用程序图标,这个教程适合于Ubuntu 14.04, Ubuntu 13.10, Ubuntu ...
- 如何在CentOS 7上修改主机名
如何在CentOS 7上修改主机名 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty).“静态”主机名也称为内核主机名,是系统在启动时 ...
- 如何在 Android 手机上实现抓包?
如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么.网上的教程太复杂,不想麻烦.有 ...
随机推荐
- IDEA 突然无法打开 解决办法
如果实在没有方法了可以试一试 删除所有的配置文件,默认位置C:\Users\${你的用户名}\${.IntelliJIdea+版本} 注意:删除配置后之前所有的设置都会失效,谨慎操作.
- 学习Source Generators之HelloWorld
介绍 源生成器是 C# 开发人员可以编写的一种新组件,允许执行两个主要操作: 检索表示正在编译的所有用户代码的编译对象. 可以检查此对象,并且可以编写适用于正在编译的代码的语法和语义模型的代码,就像现 ...
- KingbaseES V8R3 集群运维系列之 -- network_rewind.sh磁盘检测功能详解
案例说明: 在KingbaseES V8R3集群,network_rewind.sh用于当节点数据库服务down时,实现数据库服务的自动恢复功能.在network_rewind.sh执行时,会对数 ...
- 【已解决】hive导出mysql报错:Container [pid=3962,containerID=container_1632883011739_0002_01_000002] is running 270113280B beyond the 'VIRTUAL' memory limit.
问题描述 Container [pid=3962,containerID=container_1632883011739_0002_01_000002] is running 270113280B b ...
- #贪心,构造#AT2266 [AGC008D] K-th K
题目 给你一个长度为 \(N\) 的整数序列 \(X\),请判断是否存在一个满足下列条件的整数序列 \(a\),如果存在,请构造一种方案 条件如下: \(a\) 的长度为 \(N^2\),并且满足数字 ...
- 刘潇翔:基于OpenHarmony的仿生四足狗开发分享
说起人工智能机器人界的网红,那就不得不提到--"机器狗".此前,著名机器人公司波士顿动力制造的"Spot"机器狗.国内知名科技企业蔚蓝科技自主设计研发的&qu ...
- 从零开始写 Docker(十)---实现 mydocker logs 查看容器日志
本文为从零开始写 Docker 系列第十篇,实现类似 docker logs 的功能,使得我们能够查查看容器日志. 完整代码见:https://github.com/lixd/mydocker 欢迎 ...
- Qt加Opencv实现 梯度矫正 功能
废话: 有时候我们是从物品的斜上方拍摄的图片,看起来不直观,需要把视角拉正,这样的一个操作就叫做 梯度矫正,需要用到的技术是 Opencv 的 透视变换. 这个只是一个简单的演示demo,如果完善一下 ...
- 将py文件编译成pyc
核心代码 import compileall compileall.compile_file("a.py", legacy=True, force=True) 演示步骤 1.新建 ...
- redis 简单整理——复制的原理[二十三]
前言 简单介绍一下复制的原理. 正文 在从节点执行slaveof命令后,复制过程便开始运作,下面详细介绍建立 复制的完整流程. 1)保存主节点(master)信息. 执行slaveof后从节点只保存主 ...