1. Ubuntu环境配置

# 添加一个个人用户 sebas
adduser sebas# 更改当前用户密码
passwd# 赋予 sebas 用户 root 权限
# 具体做法:编辑 /etc/sudoers 文件,加入 sebas ALL=(ALL:ALL) ALL
sudo vim /etc/sudoers# 换源,加快下载速度
sudo vim /etc/apt/sources.list# 阿里云镜像源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse# 使用 zsh ,oh-my-zsh
sudo sh -c "$(curl -fsSL https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)"echo $SHELL  # 查看当前 shell
cat /etc/shells  # 查看系统中存在的 shell
sudo apt install zsh  # 安装 zshell# 解决无法以 root 用户登录 ubuntu 的问题
# 修改 ssh 登录配置,将 PermitRootLogin 后面的 参数改为 yes
sudo vim /etc/ssh/sshd_config
sudo service ssh restart# 常用软件安装
sudo apt install neofetch zsh wget curl gcc cmake net-tools ssh git################
## ARM版本
################
## ubuntu 20.04
# arm版的清华镜像源# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse

2. gcc cmake

sudo apt install gcc cmake# cmake 的一般用法:创建一个 build 目录,在此目录编译
sudo mkdir build && cd build
sudo cmake ..
sudo make -j8  # 参数 -j8 可选,使用多线程编译
sudo make install # 编译完成后安装操作

3. eigen

# 安装eigen
sudo apt install libeigen3-dev# 确定 eigen3 的位置
sudo updatedb
locate eigen3# 卸载
sudo apt remove libeigen3-dev
sudo apt autoclean && sudo apt autoremove
sudo apt purge libeigen3-dev

4. Sophus

由于历史原因,Sophus 早期版本只提供了双精度的李群/李代数类。 后续版本改写成了模板类。模板类的 Sophus 中可以使用不同精度的李群/李代数,但同时 增加了使用难度。本书使用非模板的 Sophus 库。如果读者准备使用 github 上的 Sophus, 请确保使用的是非模板的版本。你可以输入以下命令获得非模板类的 Sophus:

# 飞模板类 Sophus
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff# Sophus 也是一个 cmake 工程,需要编译,但无需安装

5. OpenCV

# 安装 OpenCV :先安装依赖库,再从官网下载 zip 压缩包,然后解压编译
# 官网:http://opencv.org/downloads.html
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev  # 依赖库# https://github.com/opencv/opencv/archive/refs/tags/3.4.16.tar.gz
wget https://github.com/opencv/opencv/archive/3.4.16.zipsudo unzip opencv  # 解压编译
sudo mkdir build && cd build
sudo cmake ..
sudo make -j8
sudo make install # 编译之后要安装
# 安装之后默认位置: /usr/local# 测试opencv是否安装成功
# 在 opencv/samples/cpp/example_cmake 目录下
sudo mkdir build && cd build
sudo cmake ..
sudo make
sudo ./opencv_example# 弹窗显示 Hello OpenCV 即为成功
# 点云库 PCL
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-allsudo apt install libpcl-dev

6. Ceres

# 视觉slam十四讲 教程:
# 官网:https://github.com/ceres-solver/ceres-solver
# 依赖项:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev# 问题1:
# 找不到 libcxsparse3.1.2 ,在 sources.list 中添加:
# deb http://cz.archive.ubuntu.com/ubuntu trusty main universe# 问题2:找不到数字签名
# 解决办法:导入两个数字签名,再更新
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32git clone https://gitee.com/wzq11011/ceres-solver.git# 编译
# 头文件:/usr/local/include/ceres
# 库文件:/usr/local/lib/libceres.asudo mkdir build && cd build
sudo cmake ..
sudo make -j4
sudo make install# 官方教程:https://izhengfan.gitbooks.io/ceres-solver-cn/content/an-zhuang.html#linuxhttps://github.com/ceres-solver/ceres-solver/releases/tag/2.1.0

7. g2o

# github:https://github.com/RainerKuemmerle/g2o
# 依赖项:
sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.2 libcholmod-dev# 和上面安装ceres类似的,如果报错找不到libcxsparse3.1.2,可以直接删除该项,经测试不影响后面的编译安装sudo git clone https://gitee.com/wzq11011/g2o.git
sudo mkdir build && cd build
sudo cmake ..
sudo make -j8
sudo make install
# 编译
# 头文件:/usr/local/g2o
# 库文件:/usr/local/lib

8. OpenCV-Cuda

# ubuntu --> docker --> image:ubuntu --> opencv:cuda
# docker run -it --name wzq --gpus all 镜像id /bin/zsh
# 命令参数中的 gpus ,使得容器可以使用宿主机的 gpu 硬件
# 使用 nvidia-smi 可以查看显卡使用情况# cuda 安装,nvidia 官网给出的一种办法是:下载 .run 文件,然后执行该文件,按空格勾掉driver,也就是不安装 nvidia 驱动。
nvcc -V # 查看 cuda 信息# 编译 opencv cuda版本
# 在 github 上下载 opencv 和 opencv_contrib 注意两者的版本要对应
# 将解压的 opencv_contrib 放到 opencv 文件夹中,创建 build 文件夹,编译并安装 opencv
mkdir build
cmake -DCMAKE_BUILD_TYPE=RELEASE \-DCMAKE_INSTALL_PREFIX=/usr/local \-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules .. \-DWITH_CUDA=1 \-DENABLE_FAST_MATH=1 \-DCUDA_FAST_MATH=1 \-DWITH_CUBLAS=1
make -j8
make install# 出现的错误:
# root @ 3c98b73b349e in /home/sebas/test/build [15:48:51] C:1
$ ./cuda_test
terminate called after throwing an instance of 'cv::Exception'what():  OpenCV(4.4.0) /home/sebas/software/opencv-4.4.0/opencv_contrib-4.4.0/modules/cudafeatures2d/src/cuda/orb.cu:170: error: (-217:Gpu API call) invalid device symbol in function 'loadUMax'[1]    191973 abort (core dumped)  ./cuda_test##### 卸载cuda
# 在/usr/local/cuda-11.4/bin 目录下执行 cuda-uninstaller
cd /usr/local/cuda-xx.x/bin/
sudo ./cuda-uninstaller
sudo rm -rf /usr/local/cuda-xx.x# 删除build文件下的所有内容,重新编译带有cuda的opencv:
cmake -DCMAKE_BUILD_TYPE=RELEASE \-DCMAKE_INSTALL_PREFIX=/usr/local \-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules .. \-DWITH_CUDA=1 \-DENABLE_FAST_MATH=1 \-DCUDA_FAST_MATH=1 \-DWITH_CUBLAS=1make -j8
make install

9. docker

主要在实验室的服务器上使用docker,每个人一个独立的环境,互不影响。

镜像和容器的关系:就好比 类 和 实例对象 的关系。

镜像相当于一个模板,容器相当于改模板创建的一个实例。

# 拉取一个镜像
docker pull ubuntu:20.04  # 拉取ubuntu20.04镜像# docker run -it 镜像ID /bin/bash
# 进入容器后可以按照 第一条 配置 ubuntu 环境。docker run -it --name wzq --gpus all 镜像ID /bin/bash
# 给容器命名 wzq,便于区分。加上 gpus 参数,使得容器可以调用宿主机的 gpu 设备。# 删除容器
docker rm 容器ID# 删除镜像
docker image rm 镜像ID# 打包一个容器
docker commit 容器ID REPOSITORY:TAG# 举例如下
docker commit fwf23fsdfsdf wzq:v0.3 # 容器打包成镜像后,可以使用ls查看镜像
docker image ls# 查看所有容器
docker ps -a

10. vscode-ssh 免密

使用 vscode 进行远程开发,非常的便捷。

# 安装 vscode 插件: Chinese、Remote Development、c++、cmake、docker# 远程连接服务器,使用remote-ssh,输入密码登录即可。
ssh wzq@10.48.109.24# 远程连接docker容器,参考下面的图片,在远程资源管理器里面调出容器列表,选择自己的容器连接。# 设置免密登录
ssh-keygen  # 该命令会生成一个ssh 私钥和公钥
# 对此的解释:公钥相当于一把锁,私钥相当于锁的钥匙,将公钥放到服务器,私钥保存在自己的电脑上。当需要远程连接时,就拿这把钥匙直接开锁,而不需要每次输入登录密码。# 以 macos 为例,在 ~/.ssh 目录下复制 id_rsa.pub 中的内容。
cat ~/.ssh/id_rsa.pub
# 在要登录的远程服务器上,将复制的内容粘贴到 authorized_keys 中
sudo vim ~/.ssh/authorized_keys
#重启 ssh 服务
sudo service ssh restart# 免密 clone github、gitee内容
sudo ssh-keygen -t rsa -C "github邮箱账号"
# 将生成的 id_rsa.pub 内容添加到github或者gitee# ssh 测试
ssh -T git@github.com

11. ORB-SLAM3

Pangolin

主要用于可视化和用户界面

# 依赖项:c++11、OpenGL、Glew、CMake、Python、Wayland
sudo apt install libgl1-mesa-dev libglew-dev cmake libpython2.7-dev pkg-configsudo git clone https://gitee.com/wzq11011/Pangolin.git
cd Pangolin
sudo mkdir build && cd build
sudo cmake ..
sudo make -j4
sudo make install

OpenCV

主要用于 ORB 特征点提取,要求3.2版本以上

git clone --> cmake --> install

Eigen3

主要用于矩阵计算,最低版本3.1。默认安装路径: /usr/include/eigen3

sudo apt install libeigen3-dev

DBoW2 and g2o

DBoW2 主要用于回环检测,g2o用于图优化.

orbslam3的源码包自带DBoW2和g2o,执行 build 脚本时会自动编译这两个库。

boost

# https://www.boost.org/
# 1.79.0 版本 https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.gzsudo tar -zxvf boost_1.79_0.tar.gz
sudo ./bootstrap.sh
sudo ./b2 install

libssl-dev

sudo apt install libssl-dev

编译运行

cd ORB_SLAM3
# 根据自己机器的配置,将 build.sh 中的 make -j 改为 make -j4
sudo chmod +x build.sh
sudo ./build.sh# 修改 CMakeLists.txt 中的部分内容
# 1 OpenCV 改为自己的版本
# 2 c++11的相关问题:注释下面标注的 set 开头的两句# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")add_definitions(-DCOMPILEDWITHC11)message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")add_definitions(-DCOMPILEDWITHC0X)message(STATUS "Using flag -std=c++0x.")
else()message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

Euroc测试

# 数据集下载地址: https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads
# 选择 ASL 格式, MH01,将下载的数据集解压缩,然后放到 ORB_SLAM3/dataset 目录下
# 更改 euroc_examples.sh 中的参数,将 pathDatasetEuroc 改为自己存放数据集的路径
# 示例: pathDatasetEuroc='/home/sebas/git-repos/dataset'
./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml "pathDatasetEuroc"/MH01 ./Monocular/EuRoC_TimeStamps/MH01.txt# 对 mono_euroc.cc 的更改:将下面这句参数改为 true,表示打开可视化界面
# ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, true);

编译遇到的错误

# 错误1:error: ‘slots_reference’ was not declared in this scope# 解决办法:根据github上的解答,c++11不支持编译,将c++版本换到c++14,执行以下命令,然后重新编译 orbslam3sed -i 's/++11/++14/g' CMakeLists.txt# 如果以上方法无效,可以尝试第二种解决办法,在 CMakeList.txt 中删除 c++11,添加对 c++14 的支持#### remove ##### Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")add_definitions(-DCOMPILEDWITHC11)message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")add_definitions(-DCOMPILEDWITHC0X)message(STATUS "Using flag -std=c++0x.")
else()message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()#### add ####
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS OFF)### 方法3:注释下面标注的两行# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")add_definitions(-DCOMPILEDWITHC11)message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")add_definitions(-DCOMPILEDWITHC0X)message(STATUS "Using flag -std=c++0x.")
else()message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()# 问题2:Killed signal terminated program cc1plus
# 原因:内存不足导致的
# 解决办法:增加虚拟机内存,或者增加交换内存

slam和orbslam3环境配置相关推荐

  1. SLAM及深度学习环境配置总教程

    环境配置总教程 一. 装机后下载 修改软件源,选择下载自阿里云镜像:然后更新软件系统 sudo apt-get update sudo apt-get upgrade 依次下载常用的软件:git.cm ...

  2. 【SLAM】SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+Vcpkg

    目录 SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+vcpkg 软件及版本 1. Windows 10 2. Visual Studio 2019 3. OpenCV 4. ...

  3. 深度学习100问-1:深度学习环境配置有哪些坑?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 从今天起,开辟一个新的专栏,名字就叫深度学习100问.选取深度学习 ...

  4. 一次搞定OpenCV源码及扩展模块的编译与环境配置

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|计算机视觉工坊 版本:VS2017.CMake3.12. ...

  5. 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程

    一:前言介绍 LVI-SAM是Tixiao Shan的最新力作,Tixiao Shan是Lego-loam(基于激光雷达里程计的SLAM框架)和Lio-sam(基于惯性-雷达紧耦合的SLAM框架)的作 ...

  6. 保姆级教程:深度学习环境配置指南!(Windows、Mac、Ubuntu全讲解)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 入门深度学习,很多人经历了从入门到放弃的心酸历程,且千军万马倒在了 ...

  7. 草莓采摘机器人——ROS导航(一) ROS Kinetic + Handsfree系统安装以及环境配置

    草莓采摘机器人项目--ROS导航 (一) ROS+Handsfree系统以及环境安装 来到公司的第一个小项目, 组长让我先了解学习一下ROS系统,目标就是简单的运用ROS已经封装好的方法进行简单的蒙特 ...

  8. Unity开发Hololens2—环境配置和官方案例发布并部署到设备上

    一.前言 我使用的Unity2018.4.26f1+Hololens2+VS2019设备其实大部分的环境配置的问题和发布官方已经给出了详细的说明,首先是安装工具,然后是.初始化项目并部署第一个应用程序 ...

  9. 虚拟机+Ubuntu18.04+ORB_SLAM3+ROS环境配置(配置环境的过程以及途中出现的错误,解决方法)

    前提概要:因为导师的科研安排,需要做三维重建,并基于Jeston的硬件平台来完成,由于板子还没有到(应该说报销的费用还没到,没钱买QAQ),所以先用虚拟机模拟配置一下环境.写这篇文章也是为了板子到了以 ...

  10. Astra相机的ROS开发环境配置与使用

    Astra相机的ROS开发环境配置与使用 一.Astra相机简介 二.搭建ROS工作空间 1.下载ROS驱动功能包 2.安装依赖 3.配置工作空间 三.配置设备节点 1.固定设备串口号 2.获取设备信 ...

最新文章

  1. 定题信息服务是从什么角度_格木教育谢浩浩:事业单位综合应用概念分析题之角度界定技巧...
  2. python3连接mysql使用mysqldb_Python3 连接Mysql数据库
  3. 测试python第二周_python第二周作业
  4. 年轻人还有机会征服这个世界吗?
  5. php 瓶颈,使用XHProf查找PHP性能瓶颈
  6. 安装php服务器,安装php服务器环境的方法
  7. Educoder 机器学习 SMO进行优化 第1关:SMO高效优化算法
  8. 海量数据挖掘MMDS week2: 局部敏感哈希Locality-Sensitive Hashing, LSH
  9. CE教程步骤8操作指南
  10. Exchange反垃圾防病毒网关——SecurityGateway基本部署
  11. js获取浏览器默认语言设置
  12. 阿米巴经营会计报表复习
  13. oracle数据库 复制粘贴,Oracle数据库复制
  14. PDF如何裁剪页面,PDF裁剪页面的小技巧
  15. 报错信息:Avoid mutating a prop directly since the value will be overwritten
  16. 改了计算机名oracle,修改计算机名称导致Oracle的em不能用
  17. Springboot集成POI
  18. 优盘安装OpenThos操作系统OTO
  19. 隆重推荐:大漠苍狼2-绝密飞行
  20. 微软使用郑码输入法10年未付费遭起诉

热门文章

  1. 移动加权平均全月平均
  2. 分享“我是如何实现财务小自由的”
  3. Web前端干货!30道Web前端面试题精选,你会几个?
  4. QPushButton设置背景图片变换(素材四连图)
  5. 【网络安全】物理层(网线、接口、信号、MB/s和Mb/s)
  6. 视频录制软件哪个好,推荐几款简单实用的视频课件录制软件
  7. mysql的脏数据_数据库的脏数据问题
  8. 工控协议——S7通讯协议
  9. 华硕主板装系统蓝屏_华硕笔记本电脑重装系统后蓝屏怎么办
  10. MCSA / Windows Server 2016 服务器的远程管理