slam和orbslam3环境配置

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.zip

sudo 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-all

sudo 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 3B4FE6ACC0B21F32

git clone https://gitee.com/wzq11011/ceres-solver.git

# 编译
# 头文件:/usr/local/include/ceres
# 库文件:/usr/local/lib/libceres.a

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

# 官方教程:https://izhengfan.gitbooks.io/ceres-solver-cn/content/an-zhuang.html#linux

https://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=1
    
make -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-config

sudo 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.gz

sudo 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,执行以下命令,然后重新编译 orbslam3
 sed -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
# 原因:内存不足导致的
# 解决办法:增加虚拟机内存,或者增加交换内存
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了配置ORB-SLAM3环境,你可以按照以下步骤进行操作: 1. 首先,你需要克隆ORB-SLAM3的GitHub仓库。你可以使用以下命令将仓库克隆到本地: ``` git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3 ``` 2. 进入ORB-SLAM3目录,并给build.sh脚本添加执行权限: ``` cd ORB_SLAM3 chmod +x build.sh ``` 3. 运行build.sh脚本以构建ORB-SLAM3库: ``` ./build.sh ``` 4. 如果你在安装Eigen3时使用了默认路径(/usr/include/eigen3),可能会导致ORB-SLAM3无法检测到Eigen3库,从而导致编译错误。为了解决这个问题,你可以使用源码安装Eigen3,并将其安装到/usr/local/include/eigen3/路径下。 这样,你就完成了ORB-SLAM3的环境配置。如果你还需要使用realsense摄像头,你可以运行`roslaunch realsense2_camera rs_t265.launch`命令来启动realsense摄像头,并使用rviz进行可视化。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [ORB-SLAM3环境配置-可能是最全的配置过程](https://blog.csdn.net/weixin_43631972/article/details/127894753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ORB-SLAM3配置及安装教程(2023.3)](https://blog.csdn.net/shadowmimii/article/details/129472719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值