重做Unbuntu 18.0.43 LTS系统 并为SLAM配置环境

2023-05-16

目录

前言

一、安装列表

1. Ubuntu 18.0.43 LTS

1.0-A 搜狗输入法

1.0-B ibus输入法安装

1.1 更换软件源

1.2 安装vim、curl等工具

1.3 安装浏览器Chrome、git等

1.4 安装g++ gcc 开发必备编译库

注意:

1.5 安装vscode

1.6 安装和配置 Python2 和 Python3

2. 安装SLAM配置依赖

2.1 安装cmake、OpenGL及其他依赖

2.1.1 安装 cmake, cmake-gui

2.2 Ubuntu下Cmake工程指定依赖库的搜索路径方案

2.4 安装OpenCV

2.4.3 使用apt安装python-numpy

2.4.4 BLAS and LAPACK库

2.4.5 下载并安装OpenCV

2.4.6 为OpenCV配置conf

2.4.7 为OpenCV配置bash

2.4.8 测试OpenCV

2.5 为python添加OpenCV接口

2.5.1 添加接口

2.5.2 更改python中OpenCV的版本

3使用数据集(Monocular Examples)测试ORB_SLAM2

3.1 下载ORB_SLAM2

3.2 下载数据集(TUM Monocular Datasets)

3.3 编译与测试ORB_SLAM2

4 安装ROS Melodic

4.1 Ubuntu18.04下安装ROS

4.2 初始化并更新rosdep

4.3 添加ros环境变量

4.4 安装ros常用的命令行工具

4.5 小海龟例子

4.2 Ubuntu18.04安装ROS 常见问题 踩坑集

4.3 Ubuntu18.04+DSO+ROS(catkin)配置问题贴

5 安装usb_cam驱动

5.1 构建 catkin_ws 文件夹

5.2 安装usb_cam

5.3 选择摄像头

5.4 接收摄像头消息

二、可能遇到的问题

三、测试运行ROS实例

四、总结


前言

由于学习SLAM过程中,已经把系统整得太乱了,编译代码时出现了各种奇葩的问题,于是决定重装系统。

同时,一并把 VINS Mono Fusion 需要用到的依赖也安装了!


提示:以下是本篇文章正文内容,下面案例可供参考

1. Ubuntu 18.0.43 LTS

1.0-A 搜狗输入法

sudo apt --fix-broken install
sudo apt install fcitx

左下角 -> Settings -> Region&Language -> Manage Install Languages

选择ibus -> Apply System-Wide,重启!!

重启后,选择右上角键盘->Confiture Current Input Method

找到Sogou Pinyin输入法

1.0-B ibus输入法安装

如果以上操作不能完成目标——那就需要重新安装语言,并重新安装iBUS框架。

sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4
im-config -s ibus
sudo apt-get install ibus-pinyin
sudo ibus-setup

在键盘输入来源(Input  sources)中添加中文拼音输入法

1.1 更换软件源(参考链接)

target 阿里云源: ubuntu安装包下载_开源镜像站-阿里云

模板:18.04source - Ubuntu中文

#
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 追加国内的 ubuntu 镜像
deb http://cn.archive.ubuntu.com/ubuntu bionic main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-proposed main multiverse restricted universe

获取 Ubuntu 代号

lsb_release -a

修改源文件,更新软件列表和升级 (~30min)

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bcakup
sudo gedit /etc/apt/sources.list
sudo apt update 
sudo apt upgrade

1.2 安装vim、curl等工具(参考链接)

sudo apt install -y vim 
sudo apt install -y curl
sudo apt install -y wget 
sudo apt install -y net-tools

1.3 安装浏览器Chrome、git等
(参考链接)

1.3.1 下载chrome-linux,然后

sudo dpkg -i google-chrome-stable_current_amd64.deb 

1.3.2 安装git并配置git

安装git

sudo apt install git

配置本机git的两个重要信息,user.name和user.email,(也可暂时不配置)中终端输入如下命令即可设置:

git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"

然后通过命令 git config --list 查看是否设置成功。

查看home目录下是否有.ssh目录,一般情况是没有的,需要我们敲命令生成这个目录,在终端输入:

ssh-keygen -t rsa -C "youremail@example.com"

邮箱youremail@example.com就是刚刚第二步设置的。然后一路按回车,其实就是不设置密码。然后你就会看到home目录下
多了.ssh目录。

进入.ssh目录会看到两个文件 id_rsa 和 id_rsa.pub,id_rsa是私钥,id_rsa.pub是公钥啦。

把 id_rsa.pub 文件中的内容拷贝一下。进入github,进入Settings->SSH and GPG keys->New SSH key,然后在Key那
栏下面将 id_rsa.pub 文件中的内容粘贴进去,最后点击 Add SSH key按钮添加。

注意:如果出现你使用了key,但还是报没有权限的情况下,就要执行下面的操作:

ssh-add ~/.ssh/id_rsa 

然后再次链接git会有如下提示,Are you sure you want to continue connecting (yes/no)? yes就可以正常链接到远程仓库了。

1.4 安装g++ gcc 开发必备编译库

sudo apt install build-essential

sudo apt install flex
sudo apt install bison

安装多版本gcc和g++,并共存

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update

sudo apt-get install gcc-5 gcc-5-multilib
sudo apt-get install g++-5 g++-5-multilib
sudo apt-get install gcc-6 gcc-6-multilib
sudo apt-get install g++-6 g++-6-multilib
sudo apt-get install gcc-7 gcc-7-multilib
sudo apt-get install g++-7 g++-7-multilib
sudo apt-get install gcc-8 gcc-8-multilib
sudo apt-get install g++-8 g++-8-multilib
sudo apt-get install gcc-10 gcc-10-multilib
sudo apt-get install g++-10 g++-10-multilib
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 70
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 80
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100

然后,选择gcc和g++版本

sudo update-alternatives --config gcc
sudo update-alternatives --config g++

注意:

    有时候需要配置ubuntu安装的软件,一般安装软件都是使用apt-get install。那么安装完后,软件的安装目录在哪里呢,可执行文件又放在哪里呢。

    A、下载的软件的存放位置:/var/cache/apt/archives 该目录下的文件可以删除。当然用 sudo apt-get clean 命令也可以,这个命令只会删除缓存起来的deb包,不会取消已经更新了的包。

    B、安装后软件的默认位置:/usr/share

    C、可执行文件位置:/usr/bin

    D、配置文件位置:/etc

    E、lib文件位置:/usr/lib

1.5 安装vscode

下载vscode地址,然后安装对应的安装包。

sudo dpkg -i 对应的安装包名

如果出现依赖问题,执行:

sudo apt install -f

然后再次安装vscode

1.6 安装和配置 Python2 和 Python3

1.6.1 安装指定版本的Python2和pip2并验证版本

sudo apt install python2-pip
pip2 --version
# pip2 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

### 升级pip2
sudo python2 -m pip install --upgrade pip

1.6.3 安装开发工具

# 构建Python模块所需的开发工具,以供Python 2运行:

sudo apt install build-essential 
sudo apt install python-dev python-setuptools

1.6.2 新增/升级python3以及pip3并验证版本

 (这个还是需要慎重,因为ubuntu 18.04有许多的系统软件依赖于python3.6.9和python2.7)

sudo apt install python3.8  # 默认安装 python3.8.16

如果需要删除 python3.8 则可以参考《Ubuntu18.04卸载Python3.8(非系统自带)》进行删除。

### 安装pip3

sudo apt install python3-pip
pip3 --version
# pip3 9.0.1 from /usr/lib/python3.6/dist-packages (python 3.6.9)

### 升级pip3

sudo python3 -m pip install --upgrade pip

1.6.4 安装开发工具

# 构建Python模块所需的开发工具,以供Python 3运行:

sudo apt install build-essential 
sudo apt install python3-dev  python3-setuptools

1.6.5 pip/pip3更换国内源

如果是临时使用,可以使用 pip 时添加参数 -i [url],例如:

pip install -i http://pypi.douban.com/simple/ gevent

如果需要长期使用指定源,则需要修改 ~/.pip/pip.conf,例如:

[global] index-url=https://pypi.tuna.tsinghua.edu.cn/simple

附:国内可用源列表

清华大学         https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云           http://mirrors.aliyun.com/pypi/simple/
中国科技大学      https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban)     http://pypi.douban.com/simple/
中国科学技术大学   http://pypi.mirrors.ustc.edu.cn/simple/

1.6.5 配置 python2 和 python3

# Ubuntu18.04中Python2.7与Python3.6的环境切换, 将系统的默认环境进行修改
# 查看系统的Python环境

python --version

# 查看系统Python的可用环境列表

update-alternatives --list python

# 此处如果显示update-alternatives: error: no alternatives for python
# 则输入(这里的版本号根据自己安装的设定)

update-alternatives --install /usr/bin/python python /usr/bin/python2.7 27
update-alternatives --install /usr/bin/python python /usr/bin/python3.6 36
update-alternatives --install /usr/bin/python python /usr/bin/python3.8 38

# 设定Python环境

update-alternatives --config python

# 可以根据自己的需要进行选择,输入前面的编号即可。此时再次查看系统环境

python --version

# 至此,系统的Python环境设置完成。

发现次方法不如 #1.6.5 中使用别名来得有效!

1.6.6 另一种方法配置 Python2 和 Python3 环境

#获取python3 && pip3 路径,设定别名,然后执行source指令

whereis python3
whereis pip3

## 编辑 ~/.bashrc 文件

# edit in ~/.bashrc
sudo gedit ~/.bashrc
# find this line "#some more ls aliases"
# add user-defined aliases
alias python='/usr/bin/python3'
alias pip='/usr/bin/pip3'
## Add an "alert" alias for long running commands.  Use like so:
## sleep 10; alert
## edit offsource ~/.bashrc

1.6.7 安装numpy、scipy、matplotlib

为 Python2 安装

sudo python2 -m pip install numpy
sudo python2 -m pip install scipy
sudo python2 -m pip install matplotlib

为 Python3 安装

sudo python3 -m pip install numpy
sudo python3 -m pip install scipy
sudo python3 -m pip install matplotlib

1.6.8 为Python安装OpenCV

sudo apt install python3-opencv
sudo apt install python2-opencv
## 或者
sudo python2 -m pip install opencv-python==3.4.9.31
sudo python3 -m pip install opencv-python==3.4.9.31

或者在安装后通过下面的命令进行升级

sudo python2 -m pip install upgrade opencv-python==3.4.9.31
sudo python3 -m pip install upgrade opencv-python==3.4.9.31

2. 安装SLAM配置依赖

2.1 安装cmake、OpenGL及其他依赖

2.1.1 安装 cmake, cmake-gui

sudo apt-get install cmake cmake-gui

查看cmake和make的版本。

cmake -version
>>3.10.2

make -v
>>GUN make 4.1

版本有些低,更新需要更新一下。

cd ~/Downloads
### wget https://cmake.org/files/v3.15/cmake-3.15.2-Linux-x86_64.tar.gz
wget https://cmake.org/files/v3.18/cmake-3.18.4.tar.gz
### 或者
wget https://cmake.org/files/v3.18/cmake-3.18.4-Linux-x86_64.tar.gz
tar -xvf cmake-3.18.4-Linux-x86_64.tar.gz

cd cmake-3.18.4-Linux-x86_64
### 复制文件
sudo cp -r ./ /usr/local/cmake-3.18

配置环境变量。打开.bashrc文件进行配置。

vim ~/.bashrc

## 在 ~/.bashrc 末尾添加如下的内容
PATH=$PATH:/usr/local/cmake-3.18/bin
export PATH

接着在终端source一下.bashrc文件

source ~/.bashrc

# 安装完毕之后,进行测试:
cmake --version

其他未尽操作,可以参见链接:Ubuntu16.04下安装Cmake-3.8.2并为其配置环境变量(还介绍了其他三种方法)_小强的机器人工坊的博客-CSDN博客

或者从源码安装。

wget https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4.tar.gz

./configure
make
sudo make install

2.1.2 安装Eigen3

从官网下载,推荐3.1以上版本。解压出来进行安装。或者

git clone https://gitlab.com/libeigen/eigen.git Eigen
cd Eigen
mkdir build
cd build
cmake ..
make
sudo make install

几点注意

# 头文件目录,这个库很特殊,只有头文件
/usr/local/include/eigen3/Eigen/
# cmake文件目录,会自动搜索的
/usr/local/share/eigen3/cmake/

如果安装在了 /usr/local/eigen-3.3.9/上,需要做以下工作

sudo ln -sf /usr/local/eigen-3.3.9/include/eigen3 /usr/local/include/eigen3
sudo ln -sf /usr/local/eigen-3.3.9/share/eigen3 /usr/local/share/eigen3
sudo ln -sf /usr/local/eigen-3.3.9/share/pkgconf/eigen3.pc /usr/local/share/pkgconf/eigen3.pc

Cmake工程指定依赖库的搜索路径,比如系统中有两个opencv版本,分别安装在不同路径下

比如,一个在 /usr/local下,另外一个在/home下,两个版本不同

那么如何使你的Cmake工程,使用指定opencv版本呢

2.2 Ubuntu下Cmake工程指定依赖库的搜索路径方案

在CMakeLists.txt中这么写

set(xxx_DIR "xxxConfig.cmake文件所在的路径")

举例:如果我想使用安装在某路径下的opencv时

  1. 找到你想使用的opencv版本
  2. 找到包含OpenCVConfig.cmake文件的路径
  3. 在CMakeLists下这么写
    set(OpenCV_DIR "OpenCVConfig.cmake文件所在的路径")
    find_package(OpenCV REQUIRED)
    message("Found OpenCV in: ${OpenCV_INCLUDE_DIR}")
    

这样你使用的就是指定版本的opencv了

2.1.3 安装OpenGL依赖库

sudo apt-get install build-essential libgl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev

安装完成后,参照《Ubuntu 16.04 OpenGL 开发环境配置指南》撰写一段测试程序,并编译运行。

cc test.c -o test -lGL -lglut
./test

如果能正确看到一个灰色的球体,证明配置成功。

2.1.4 其他依赖库

## GLEW:
sudo apt-get install libglew-dev

## Boost:
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

## Python2/Python3:
sudo apt-get install libpython2.7-dev

## 编译基础库
sudo apt-get install build-essential

## google-glog + gflags
sudo apt-get install libgoogle-glog-dev

## lapack
sudo apt install libblas-dev liblapack-dev
sudo apt install libatlas-base-dev libatlas-base-dev:i386

# 点云库PCL
sudo apt install libpcl-dev pcl-tools

## SuiteSparse和CXSparse(可选)
# - 如果要将Ceres构建为* static *库(默认),您可以添加:
sudo apt install libsuitesparse-dev

# - 但是,如果要将Ceres构建为* shared *库,则必须添加以下PPA:
sudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687
sudo apt update
sudo apt install libsuitesparse-dev

## 安装gtk2.0工具包和基础库
sudo apt install libgtk2.0-dev pkg-config
sudo apt install libcanberra-gtk-module

## 安装 ffmpeg ### (慎重)
# sudo apt install ffmpeg  ## 可能会与 Pangolin 冲突

2.1.5 安装SOPHUS库

这个是李代数库。

git clone http://github.com/strasdat/Sophus.git Sophus ## 下载 李代数库
cd Sophus
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE ..
make -j4
sudo make install

安装完后的目录与eigen差不多,默认安装在 /usr/local/include/sophus。

-- Install configuration: "Release"
-- Installing: /usr/local/share/sophus/cmake/SophusTargets.cmake
-- Installing: /usr/local/share/sophus/cmake/SophusConfig.cmake
-- Installing: /usr/local/share/sophus/cmake/SophusConfigVersion.cmake
-- Installing: /usr/local/include/sophus/average.hpp

2.1.6 安装Pangolin

首先安装依赖库。

sudo apt install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev

然后下载并编译、安装Pangolin。

git clone https://github.com/stevenlovegrove/Pangolin.git ## 下载 Pangolin 库
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/Pangolin ..
make -j4     ### make (根据CPU配置线程数量)
sudo make install ### (.h默认安装到/usr/local/include)

2.1.7 安装LAPACK(可选)

安装gfortran

sudo apt-get install gfortran

下载LAPACK, version 3.9.0

cd ~/Downloads
wget https://codeload.github.com/Reference-LAPACK/lapack/tar.gz/v3.9.0 ## 下载
tar -xvf  lapack-3.9.0.tar.gz ## 解压

cd lapack-3.9.0/
mkdir Release
cd Release

cp make.inc.example make.inc

cmake -D CMAKE_BUILD_TYPE=Release \
      -D CMAKE_INSTALL_PREFIX=/usr/local/lapack-3.9.0 \
      ..
make -j4
sudo make install

编辑与编译 

编辑Makefile 文件内容,把

lib: lapacklib tmglib
#lib: blaslib variants lapacklib tmglib

改为:

#lib: lapacklib tmglib
lib: blaslib variants lapacklib tmglib

然后编译。

sudo make -j4

如果出现提示错误:

Makefile:463: recipe for target 'znep.out' failed

那么,尝试如下操作。如果还没有解决,请移步到 这里。编辑 make.inc 中的 CFLAGS = -03 为

 CFLAGS    = -O3 -I$(TOPDIR)/INCLUDE -fno-stack-protector

然后再重新编译。

ulimit -s unlimited
make clean
make -j4

测试

编写代码文件test.c 如下。

#include <stdio.h>
#include <lapacke.h>
 
int main (int argc, const char * argv[])
{
   double a[5*3] = {1,2,3,4,5,1,3,5,2,4,1,4,2,5,3};
   double b[5*2] = {-10,12,14,16,18,-3,14,12,16,16};
   lapack_int info,m,n,lda,ldb,nrhs;
   int i,j;
 
   m = 5;
   n = 3;
   nrhs = 2;
   lda = 5;
   ldb = 5;
 
   info = LAPACKE_dgels(LAPACK_COL_MAJOR,'N',m,n,nrhs,a,lda,b,ldb);
 
   for(i=0;i<n;i++)
   {
      for(j=0;j<nrhs;j++)
      {
         printf("%lf ",b[i+ldb*j]);
      }
      printf("\n");
   }
   return(info);
}

将上诉代码保存为test.c,编译时,别忘了使用gfortran,此外,还需要连接用到的库,编译上面的代码,应使用如下命令:

gfortran test.c -llapacke -llapack -lrefblas

2.1.8 安装Ceres

首先是安装依赖库。

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

可能需要增加 一个源到 /etc/apt/sources.list

deb http://cz.archive.ubuntu.com/ubuntu trusty main universe

然后是git,编译安装

git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
mkdir build
cd build
cmake ..
make -j4
sudo make install

2.19 安装G2O

在ubuntu18.04安装g2o默认安装 qt5。首先,安装依赖项。

sudo apt install libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev

所需要的依赖项在下载的源码中 README.md 文件中有写。

依旧是git,编译安装。

git clone https://github.com/RainerKuemmerle/g2o
cd g2o
mkdir build
cd build

cmake ..

make -j4
sudo make install

2.1.10 DBoW3

在~/Downloads下git,编译安装。
git clone https://github.com/rmsalinas/DBow3.git
cd DBow3
mkdir build
cd build

cmake ..

make
sudo make install

2.4 安装OpenCV

2.4.1 安装相关依赖

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev
libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev 
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

如果出现 "Unable to locate package libjasper-dev" 的问题,可按以下方法解决:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

如果仍然报错,继续下述操作即可。

sudo apt update
sudo apt upgrade
sudo apt install libjasper1 libjasper-dev

2.4.2 安装其他工具包

## 安装常用图像工具包
sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev  ## 安装常用图像工具包
## 安装视频I/O包
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev ## 安装视频I/O包
## 安装gtk2.0
sudo apt install libgtk2.0-dev ## 安装gtk2.0
## 安装优化函数包
sudo apt-get install libatlas-base-dev gfortran ## 安装优化函数包
## 安装gtk2.0工具包
sudo apt install libgtk2.0-dev pkg-config

2.4.3 使用apt安装python-numpy

sudo apt install python2-numpy
## 或者
sudo apt install python3-numpy

2.4.4 BLAS and LAPACK库

sudo apt install libblas-dev
sudo apt install liblapack-dev

2.4.5 下载并安装OpenCV

从官网下载OpenCV,选择对应的版本,本自例子下载的是opencv-3.4.9。进入OpenCV文件夹,打开终端:

cd /<YOUR_OPENCV_DIR>/OpenCV-3.4.9
mkdir release
cd release

cmake -D CMAKE_BUILD_TYPE=Release \
    -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-3.4.9 \
    -D OPENCV_EXTRA_MODULES_PATH=/<YOUR_OPENCV_DIR>/OpenCV-3.4.9/opencv_contrib/modules\
    -D OPENCV_GENERATE_PKGCONFIG=YES \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON \
    -D BUILD_TESTS=ON \
    -D BUILD_PERF_TESTS=ON \
    -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
    -D WITH_CUDA=OFF \
    -D BUILD_DOCS=OFF \
    -D OPENCV_ENABLE_NONFREE=OFF \
    -D BUILD_opencv_python2=OFF \    # 关闭python2 即使用 python3 进行编译
    ../opencv-3.4.9

//编译安装
make # -j4    # 建议使用单线程进行编译
sudo make install

其中,<YOUR_OPENCV_DIR>记得替换成OpenCV源代码所在的路径,并将第三方贡献包放置在该文件夹下。编译过程很慢,耐心等待吧。sudo make install 执行完毕后OpenCV编译过程就结束了。

中间可能提示缺失文件:

IPPICV: Download: ippicv_2019_lnx_intel64_general_20180723.tgz
xfeatures2d/boostdesc: Download: boostdesc_bgm.i
xfeatures2d/boostdesc: Download: boostdesc_bgm_bi.i
xfeatures2d/boostdesc: Download: boostdesc_bgm_hd.i
xfeatures2d/boostdesc: Download: boostdesc_binboost_064.i
xfeatures2d/boostdesc: Download: boostdesc_binboost_128.i
xfeatures2d/boostdesc: Download: boostdesc_binboost_256.i
xfeatures2d/boostdesc: Download: boostdesc_lbgm.i
xfeatures2d/vgg: Download: vgg_generated_48.i
xfeatures2d/vgg: Download: vgg_generated_64.i
xfeatures2d/vgg: Download: vgg_generated_80.i
xfeatures2d/vgg: Download: vgg_generated_120.i
data: Download: face_landmark_model.dat

单独下载上述文件到 \Downloads\OpenCV-3.4.9\xfeatures2d_and_ippicv\ 中,然后

a) 修改\Downloads\OpenCV-3.4.9\opencv\3rdparty\ippicv\ippicv.cmake文件,把 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 替换为 "file:///home/<USER>/Downloads/OpenCV-3.4.9/xfeatures2d_and_ippicv/"

b) 修改~/Downloads/OpenCV-3.4.9/opencv_contrib/modules/xfeatures2d/cmake/download_boostdesc.cmake文件,把 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${OPENCV_3RDPARTY_COMMIT}/" 替换为 "file:///home/<USER>/Downloads/OpenCV-3.4.9/xfeatures2d_and_ippicv/"

c) 修改~/Downloads/OpenCV-3.4.9/opencv_contrib/modules/xfeatures2d/cmake/download_vgg.cmake文件,把 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${OPENCV_3RDPARTY_COMMIT}/" 替换为 "file:///home/<USER>/Downloads/OpenCV-3.4.9/xfeatures2d_and_ippicv/"

 d) 修改 ~/Downloads/OpenCV-3.4.9/opencv_contrib/modules/face/CMakeLists.txt 文件,把 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/" 替换为 "file:///home/<USER>/Downloads/OpenCV-3.4.9/xfeatures2d_and_ippicv/" 

2.4.6 为OpenCV配置conf

接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到。

sudo gedit /etc/ld.so.conf.d/opencv.conf

在文件末尾添加

/usr/local/opencv-3.4.9/lib

或者

# 在文件 /etc/ld.so.conf.d/opencv.conf 末尾增加
# /usr/local/opencv-3.4.6/lib
sudo sh -c 'echo "/usr/local/opencv-3.4.6/lib" > /etc/ld.so.conf.d/opencv.conf'

执行如下命令使得刚才的配置路径生效

sudo ldconfig
sudo apt update # 可选

2.4.7 为OpenCV配置bash

sudo gedit /etc/bash.bashrc

在最末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-3.4.9/lib/pkgconfig
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv-3.4.9/lib
export LD_LIBRARY_PATH
export PKG_CONFIG_PATH

保存,执行如下命令使得配置生效

source /etc/bash.bashrc 

更新

sudo updatedb 

查看系统当前的opencv版本:

pkg-config --modversion opencv

2.4.8 测试OpenCV

OpenCV安装好了之后,进行测试一下。

找到 安装的文件夹 <YOUR_OPENCV_DIR>/opencv-3.4.9,cd 到 <YOUR_OPENCV_DIR>/opencv-3.4.9/samples/cpp/example_cmake 的目录下。可以看到这个目录里官方已经给出了一个cmake的example,可以拿来测试下。

mkdir build
cd build
cmake ..
make
./opencv_example  ### ctrl+c 退出视频窗口

详尽安装可参考该文章或者这篇文章。

也可以自己编写C++代码文件 DisplayImage.cpp 进行测试,具体操作可参考这篇文章

2.4.9 测试可能碰到的问题

在<YOUR_OPENCV_DIR>/opencv-3.4.9/samples/cpp/example_cmake目录下,可能出现如下问题。

CMake Error at CMakeLists.txt:1 (ocv_install_example_src):
  Unknown CMake command "ocv_install_example_src".

确保example_cmake目录下只有以下的文件

├── build
├── CMakeLists.txt
├── example.cpp
├── Makefile
└── temp.so.txt

重新编译即可。

如果碰到编译通过,但是在运行的时候提示:

Built with OpenCV 3.4.9
Capture is opened
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(3.4.9) /home/npuyin/Downloads/OpenCV-3.4.9/opencv-3.4.9/modules/highgui/src/window.cpp:658: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'

Aborted (core dumped)

简单的解释就是你的GTK+2.x应该要先于OpenCV安装。所以,重新编译安装一次OpenCV吧!

2.5 为python添加OpenCV接口

2.5.1 添加接口

这里建立软链接

sudo ln -s /usr/local/opencv-3.4.9/lib/python2.7/dist-packages/cv2.so /usr/local/lib/python2.7/dist-packages
sudo ln -s /usr/local/opencv-3.4.9/lib/python3.6/dist-packages/cv2.cpython-36m-x86_64-linux-gnu.so /usr/local/lib/python3.6/dist-packages

2.5.2 更改python中OpenCV的版本

python中使用的opencv版本被系统变量PYTHONPATH控制着。如果要使用opencv3.4.9的版本,用vim或gedit打开~/.bashrc文件,重新设定该变量即可。

export PYTHONPATH=$PYTHONPATH:/usr/local/opencv3.4.9/lib/python2.7/dist-packages:/usr/local/opencv3.4.9/lib/python3.6/dist-packages

如果仍然无法达到目的,则从自定义安装的 /usr/local/opencv-3.4.9/lib/python2.7/dist-packages 路径下,复制cv2.so文件到相应路径下的 /usr/local/lib/python2.7/dist-packages 文件夹中。

sudo cp 

为什么cv2.so文件cp到 /usr/local/lib/python2.7/dist-packages 即可?可能的原因是cv2.so这个模块里面应该有指明了我们自定义安装opencv3.4.9的安装路径,这样就可以找到libopencv等其他文件。

按照如下操作测试安装是否成功。       

3
使用数据集(Monocular Examples)测试ORB_SLAM2

参考链接:ORB-SLAM2的编译运行以及TUM数据集测试 - 水木清扬 - 博客园

3.1 下载ORB_SLAM2

ORB SLAM2 所需的文件集。链接:https://pan.baidu.com/s/1HgcIf8sjOOI4eSNUgFU7_A,提取码:csdn

可能需要以下操作:

a) 清空原文件中的 catkin_ws 目录下 build 和 devel 文件夹。

b) 清空 catkin_ws/src/build 文件夹。

c) 清空其他 build 文件夹

或者 到github上下载 ORB_SLAM2:

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

3.2 下载数据集(TUM Monocular Datasets)

百度网盘。链接:https://pan.baidu.com/s/172KZNUYf37GmTBCe74xXeQ,提取码:j7ey

数据集原链接: Computer Vision Group - Dataset Download

3.3 编译与测试ORB_SLAM2

3.3.1 编译:

cd ORB_SLAM2
chmod +x build.sh

3.3.2 修改最后一行

改make -j为make -j4,然后 通过脚本 build.sh 完成编译。注意:还需要清除 Thirdparty 下 DBoW2 和 g2o 的 build 文件夹。

./build.sh

3.3.3 执行命令:

  执行下面的语句. 更改 TUMX.yaml 为 TUM1.yaml,TUM2.yaml 或 TUM3.yaml 以分别启动对应的 freiburg1, freiburg2 和 freiburg3 序列. 更改 PATH_TO_SEQUENCE_FOLDER 为解压后的图片序列文件夹。如果没有图像,可能还需要安装 rviz。

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM2.yaml PATH_TO_SEQUENCE_FOLDER
sudo apt install rviz  ## 安装 rviz
  1. 参考链接:Computer Vision Group - Useful tools for the RGB-D benchmark
  2. 参考链接:ORBSLAM2编译运行数据集(亲测可用)_RobotSlam的博客-CSDN博客_orbslam2运行数据集
  3. 参考链接:ORB-SLAM2 跑数据集&&运行自己的摄像头
  4. 参考链接:ORB SLAM2运行步骤/怎样跑通orbslam2_范坤3371的博客-CSDN博客

3.3.4 查看与关闭进程

ps –aux     //查看进程号
ps –aux | more //全部查看
ps –ef | grep mysql //查看mysql的进程
kill -9 3306 //强制杀掉进程号3306

4 安装ROS Melodic

4.1 Ubuntu18.04下安装ROS

4.1.1 设置sources.list

将电脑设置为接受来自packages.ros.org的软件,但是可能会出现无法定位软件包的错误。

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

所以,推荐使用国内的镜像。

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

4.1.2 设置密钥

使用如下语句:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

sudo apt-get update

如果有问题,则把hkp://keyserver.ubuntu.com:80 替换为

hkp://ha.pool.sks-keyservers.net:80   或   hkp://pgp.mit.edu:80

执行sudo apt-get update 后可能还会有提示:

W: GPG error: http://mirrors.ustc.edu.cn/ros/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654
E: The repository 'http://mirrors.ustc.edu.cn/ros/ubuntu bionic InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

解决办法:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
sudo apt-get update

其中,--recv-keys F42ED6FBAB17C654 就是后面这串签名换成报错的签名。
然后再次执行更新命令 。

4.1.3(推荐)更改源地址

首先 /etc 目录下打开终端,输入以下命令以更改hosts文件权限。

cd /etc
sudo chmod a+rw hosts  // 或者
sudo gedit /etc/hosts

打开hosts文件,在末尾添加以下内容,并保存退出。如果在进行 rosdep update 的时候有错误,则把 151.101.84.133还原(注释掉)重新执行 rosdep update 即可。

151.101.84.133  raw.githubusercontent.com //更换源地址

4.1.4(推荐)安装完整桌面:

ROS,rqt,rviz,机器人通用库,2D / 3D模拟器,导航和2D / 3D感知(大约1.56GB)。或者根据在Ubuntu 18.04 LTS安装ROS Melodic版机器人操作系统(2019年10月更新MoveIt! 1.0 ROS 2.0 Dashing)_zhangrelay的博客-CSDN博客_ros melodic是ros几 进行配置。

sudo apt-get update
sudo apt-get install ros-melodic-desktop-full
sudo apt-get install ros-melodic-rqt*
sudo apt install rospack-tools

4.2 初始化并更新rosdep

初始化和更新rosdep能够轻松地安装要编译的源代码的系统依赖关系,并且需要在ROS中运行一些核心组件。

sudo rosdep init
rosdep update

 后面的步骤我完全按照在Ubuntu 18.04 LTS安装ROS Melodic版机器人操作系统(2019年10月更新MoveIt! 1.0 ROS 2.0 Dashing)_zhangrelay的博客-CSDN博客_ros melodic是ros几 做的十分顺畅没有出现前面的我自己存在的问题,可以继续参考这个进行对安装的完善和验证就结束了。

如果初始化失败:

需要更改Python的默认环境为Python2,另外还可以参考《ROS初始化 sudo rosdep init失败》。

sudo rosdep init
rosdep update

初始化 sudo rosdep init 时显示下面的错误,则按照 4.1.3 方法替换源地址。

ERROR: cannot download default sources list from: 
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.

恢复源地址

首先 /etc 目录下打开终端,输入以下命令以更改hosts文件权限。

cd /etc
sudo chmod a+rw hosts  // 或者
sudo gedit /etc/hosts

打开hosts文件,把末尾添加的以下内容注释,并保存退出。

# 151.101.84.133  raw.githubusercontent.com ### 更换源地址

然后,继续更新 rosdep 。

$ sudo rosdep update
updated cache in /home/<USER>/.ros/rosdep/sources.cache

ROS一般使用Python2环境执行任务,如果使用Python3环境则可能需要参照《ROS中使用Python3的注意事项》使用。

4.3 添加ros环境变量

在文件 ~/.bashrc 的末尾添加路径 source /opt/ros/melodic/setup.bash

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

注意:如果安装了多个ROS分发,则~/ .bashrc必须仅为当前使用的版本提供setup.bash。

4.4 安装ros常用的命令行工具

rosinstall是一种常用的命令行工具,建议安装。

sudo apt install python-rosinstall python-rosinstall-generator 
sudo apt install python-wstool build-essential
sudo apt install python-catkin-pkg
sudo apt install python-roslib
sudo apt install python-roslaunch

如果是运行在Python3环境,则需要注意安装时使用 sudo apt install python3-*。

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo apt-get install ros-melodic-cv-bridge ros-melodic-tf ros-melodic-message-filters ros-melodic-image-transport

4.5 小海龟例子

注意:系统默然的 python 版本须为 python2,否则会提示错误。(可能是根据实际安装时的python版本而定)

在第一个终端(1st Terminal)

roscore

在第二个终端(2nd Terminal)

rosrun turtlesim turtlesim_node

在第三个终端(3rd Terminal)进行控制

rosrun turtlesim turtle_teleop_key

最终,在第三个终端里可以通过键盘控制上下左右,这样小海龟就能运动了。

4.2 Ubuntu18.04安装ROS 常见问题 踩坑集

Ubuntu18.04安装ROS 常见问题 踩坑集合_君琴的博客-CSDN博客

4.3 Ubuntu18.04+DSO+ROS(catkin)配置问题贴

Ubuntu18.04+DSO+ROS(catkin)配置问题贴_Jelly_T的博客-CSDN博客_catkin ubuntu

5 安装usb_cam驱动

5.1 构建 catkin_ws 文件夹

先按下面的结构构建 catkin_ws 文件结构树。

~/catkin_ws
├── build
├── devel
└── src
    ├── ORB_SLAM2
    ├── rgbd_dataset_freiburg1_360
    └── usb_cam

然后在 catkin_ws  目录下,执行命令 catkin_make。

cd ~/catkin_ws
catkin_make # 可暂时不执行

5.2 安装usb_cam

mkdir catkin_ws/src
cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam usb_cam
cd usb_cam
mkdir build 
cd build 
cmake -D CMAKE_BUILD_TYPE=Release ..
# cmake .. 
make -j4
echo "source /home/<USER>/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

5.3 选择摄像头

在目录 catkin_ws/src/usb_cam/launch 下,更改 usb_cam-test.launch 文件夹里的   摄像头序号

5.4 接收摄像头消息

5.4.1 将之前编译的SLAM里的文件夹拷贝到 catkin_ws/src 下。

5.4.2 将 需要运行的 窗口 改为 摄像头的  窗口。即:用 /usb_cam/image_raw 替换掉 /camera/image_raw。

5.4.3 在 ~/.bashrc 末尾添加以下路径:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/<USER>/catkin_ws/src/ORB_SLAM2/Examples/ROS
source ~/.bashrc     //之后  source以下

5.4.4 重新编译ORB_SLAM2,  在ORB_SLAM2  目录下执行:

chmod +x build_ros.sh
./build_ros.sh

二、可能遇到的问题

1 问题1 - OpenCV版本冲突问题

由于ROS melodic使用的是opencv-3.2,而本系统安装的是opencv-3.4.9,因此可能出现下面的冲突提示。

/usr/bin/ld: warning: libopencv_imgproc.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.3.4
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_core.so.3.4

解决办法

这些 warning 是由于这些库默认找的opencv和我安装的不是同一个,所以需要手动改CMakeLists来编译。

cv_bridge会使用自定义版本的opecv,一般会出现与我们所使用的opencv版本不一致,就会出现冲突问题。

/opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake 会对其所使用的opencv版本进行设置。

set(libraries "cv_bridge;
/usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0;
/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0;
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0")

另外,/opt/ros/melodic/lib/pkgconfig/cv_bridge.pc 也会对其所使用的opencv的动态链接库文件版本进行设置。

Name: cv_bridge
Description: Description of cv_bridge
Version: 1.13.0
Cflags: -I${prefix}/include -I/usr/include -I/usr/include/opencv
Libs: -L${prefix}/lib -lcv_bridge /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0

如果我们自己的模块中依赖了cv_bridge,就会将cv_bridge配置的opencv版本加入到我们的编译环境中来。
如果我们在自己的CMakeLists.txt中设置了自定义的opencv版本和环境,将会产生冲突。

会按照cv_bridge所使用的opencv版本来进行链接,然而cv_bridge的opencv版本配置一般不全面,很多库文件没有添加,就会出现命名设置了opencv环境,但还是找不到库文件的情况。
解决办法有两个:

首先,找到 /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake 和 cv_bridge-extras.cmake;然后按下图修改 opencv 的路径。(94-96,118行)

  • (1)将cv_bridge使用opencv版本切换为自己工程所使用的版本。

Name: cv_bridge
Description: Description of cv_bridge
Version: 1.13.0
Cflags: -I${prefix}/include -I/usr/local/opencv-3.4.9/include -I/usr/local/opencv-3.4.9/include/opencv
Libs: -L${prefix}/lib -lcv_bridge /usr/local/opencv-3.4.9/lib/libopencv_core.so.3.4.9 /usr/local/opencv-3.4.9/lib/libopencv_imgproc.so.3.4.9 /usr/local/opencv-3.4.9/lib/libopencv_imgcodecs.so.3.4.9
  • (2)或将自己工程所使用的opencv版本切换为cv_bridge使用的版本。

  • 删除 catkin_ws 目录下除 src 外的文件夹;删除 src/ORB_SLAM2/build 文件夹;删除 src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build 文件夹;

2 问题2 - *.so 找不到链接目录

修改完成后重新编译,出现如下错误:

[ 88%] Linking CXX executable ../Stereo
/usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/Stereo.dir/build.make:230: recipe for target '../Stereo' failed
make[2]: *** [../Stereo] Error 1
CMakeFiles/Makefile2:206: recipe for target 'CMakeFiles/Stereo.dir/all' failed
make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/usr/bin/ld: warning: libopencv_imgproc.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.3.4
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_core.so.3.4
[ 88%] Built target MonoAR
[100%] Linking CXX executable ../RGBD
/usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/RGBD.dir/build.make:230: recipe for target '../RGBD' failed
make[2]: *** [../RGBD] Error 1
CMakeFiles/Makefile2:179: recipe for target 'CMakeFiles/RGBD.dir/all' failed
make[1]: *** [CMakeFiles/RGBD.dir/all] Error 2
Makefile:148: recipe for target 'all' failed
make: *** [all] Error 2

根据这篇文章的分析,出错原因为:libboost_system.so 与libboost_filesystem.so找不到链接目录。

解决方案:

locate boost_system # 查找到目录

/snap/code/47/usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0
/usr/lib/x86_64-linux-gnu/libboost_system.a
/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1

然后继续

locate boost_filesystem # 查找到目录

/snap/code/47/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
/usr/lib/x86_64-linux-gnu/libboost_filesystem.a
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1

将 libboost_system.so 与 libboost_filesystem.so 复制到 ORB_SLAM2/lib 下,并且将 ORBSLAM2/Examples/ROS/ORBSLAM2下的Cmakelists.txt中加入库目录,具体为 
在下面的信息之后

set(LIBS 
${OpenCV_LIBS} 
${EIGEN3_LIBS} 
${Pangolin_LIBRARIES} 
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so 
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so 
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so 

加入

${PROJECT_SOURCE_DIR}/../../../lib/libboost_filesystem.so 
${PROJECT_SOURCE_DIR}/../../../lib/libboost_system.so 

问题得以解决。

三、测试运行ROS实例

首先启动ROS,再打开usb_cam ,最后在 catkin_ws/src 打开终端。

具体命令运行如下:

roscore        # 第一个终端(1st Terminal),启动 ROS
roslaunch usb_cam usb_cam-test.launch   # 第二个终端(2nd Terminal):启动 usb_cam 摄像头
cd ~/home/npuyin/catkin_ws/src/ORB_SLAM2/catkin_ws/src/ORB_SLAM2
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml # 第三个终端(3rd Terminal):在  catkin_ws/src/ORB_SLAM2   目录下  运行ROS实例

如果出现在ubuntu系统中报错内容如下:

error while loading shared libraries: libboost_system.so.1.58.0: cannot open shared object file: No such file or directory

在 ~/.bashrc 中添加 LD_LIBRARY_PATH 路径。

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/npuyin/catkin_ws/src/ORB_SLAM2/lib


四、总结

花了近三天的时间,终于把Ubuntu-18.0.43下的ORB_SLAM2给调通了,成就感满满!最后的测试时,发现可能是因为电脑的配置太低,姿态稍微变化稍微快一点,SLAM的轨迹跟踪就会跟丢!

看来,降低计算量、提升响应速度是SLAM面临的一个很大的痛点。

编辑更新:2023年01月03日星期二

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重做Unbuntu 18.0.43 LTS系统 并为SLAM配置环境 的相关文章

随机推荐

  • 部署散记1(增强)

    拉取modelscope镜像 span class token function sudo span span class token function docker span pull registry cn hangzhou aliyu
  • 图形化深度学习开发平台PaddleStudio(代码开源)

    目录 一 PaddleStudio概述二 环境准备2 1 安装PaddlePaddle2 2 安装依赖库 三 基本使用介绍3 1 启动3 2 快速体验3 2 1 下载示例项目3 2 2 训练3 2 3 评估3 2 4 测试3 2 5 静态图
  • 一款免费的人像修图工具(笨擦擦)

    推荐一个我们自己开发的免费人像修图工具 xff1a 笨擦擦 使用这个工具可以免费抠图 美颜 证件照制作 我们是一群因为兴趣聚在一起的 二哈 程序员 xff0c 我们没资金 没大佬 没资质 xff0c 但就是喜欢做一些有意思的事 笨擦擦 是我
  • 利用Python生成和识读二维码(QR Code)和微二维码(Micro QR Code)

    目录 一 环境准备二 二维码 xff08 QR Code xff09 生成和读取2 1 生成二维码2 2 读取二维码 三 微二维码 xff08 Micro QR Code xff09 生成和读取3 1 生成微二维码3 2 读取微二维码 之前
  • 贴图问题,opengl,linux,windows,消除锯齿,摩尔纹,yuv 还是 rgb

    1 消除锯齿和摩尔纹 windows下使用d3d是很方便的 xff0c 基本不用设置很多东西 xff0c 就可以做到 xff0c 所以windows上最好使用d3d 但是linux上有所不同 摩尔条纹是两条线或两个物体之间以恒定的角度和频率
  • QT基础(五)----QPainter高级功能

    一 场景和窗口 头文件MyWidget h ifndef MYWIDGET H define MYWIDGET H include lt QWidget gt include lt QGraphicsScene gt 场景 include
  • DSP28335 高速modbus代码实现

    程序特点 不使用while循环速度尽可能快速除去程序运行时间 xff0c 没有多余等待时间优化CRC校验方式 头文件modbus h span class token macro property span class token dire
  • matlab 画图时遇到的一些问题以及解决方法

    matlab 画图时遇到的一些问题以及解决方法 最近在使用 matlab 画图时 xff0c 遇到了许许多多各式各样的问题 xff0c 有些问题甚至折腾了很久才搞好 xff0c 特此记录下来 设置画图时图中线段的粗细plot x1 y1 3
  • Ubuntu18.04上Gazebo安装和使用

    一 基本介绍 Gazebo是一款与机器人开发相关的3D动态模拟仿真软件 xff0c 能够在复杂的室内和室外环境中准确有效地模拟机器人群 这款软件中包含了丰富的机器人模型 xff0c 环境库以及各种各样的传感器 xff0c 并且在操作方面它的
  • Python运行 import cv2 等报错 Illegal instruction (core dumped) 解决办法

    import cv2 报错 Illegal instruction core dumped nanopc T4 开发板上安装好 opencv 后 xff0c import cv2 时 会报错 Illegal instruction core
  • 多个py文件同时执行(多进程与多线程实现)

    本人在编写python程序时 xff0c 需要多个py文件在不同终端内同时运行 xff0c 从而配合实现某种功能 xff0c 经过多方查找与实验 xff0c 排除了很多无法使用的方案 xff0c 最终确定了以下两个方案 xff0c 现将其记
  • nanopc-T4 开发板通过USB麦克风采集录制音频

    文章目录 1 使用 nanopc T4 开发板采集音频2 使用 Tyless外置usb麦克风录制声音3 使用 ffrmpeg 将实时视频与音频合并并推流到 rtmp 服务器中4 成功实现opencv采集图像与音频合并推送到rtmp 1 使用
  • 北京超级云计算中心操作训练指南

    北京超级云计算中心操作指南 本人在实验室做深度学习图像领域相关研究 xff0c 前期使用实验室的设备 2080Ti xff0c 运行时间较慢 xff1b 跑一轮需要6个小时以上 xff1b 后来开始使用超算 xff0c 运行速度比实验室快多
  • windows to go 和 linux to go 制作教程

    文章目录 使用 ventoy 制作windows to go 和 linux to go 教程 xff0c 将系统装进U盘中随身携带1 ventoy 介绍2 准备工作3 windows to go3 1 将 U盘初始化3 2 虚拟磁盘安装
  • 使用nps搭建内网穿透并配置泛域名解析

    使用nps搭建内网穿透并配置泛域名解析 前言1 准备工作2 服务器端搭建nps并配置2 1 配置nps配置文件2 2 docker安装nps2 3 web端配置nps并使用 3 客户端使用nps4 配置泛域名解析5 参考链接 前言 nps是
  • web内外网判断界面

    因日常需要 xff0c 我们在实验室内网中部署了一个服务 xff0c 在校园网内都能正常访问 xff0c 同时配置了内网穿透服务 xff0c 实现外网也能正常访问 但外网访问毕竟是通过内网穿透实现 xff0c 稳定性与网速都有限制 xff0
  • 为无登陆鉴权功能的接口与网站添加登陆鉴权功能

    1 缘由 本人部分服务的测试接口为方便日常测试调试 xff0c 使用了 ip 43 端口 的形式进行访问 xff0c 并且未配置账号密码鉴权机制 在日常测试一段时间后 xff0c 终于还是收到了来自腾讯云的监管通知 xff0c 说服务存在数
  • RoboMaster机器人运行教程(一)

    1 环境配置 系统 xff1a ubuntu16 04 xff0c 安装ROS 2 基础学习 需要C 43 43 和python基础 xff0c 和ROS的基础知识 xff0c 网上有很多教程 xff0c 推荐知乎大佬教程 xff1a 我的
  • slambook2+ch7+pose_estimation_2d2d+估计多张图像之间的位姿

    算法 计算第一张图和第二张图的关键点并匹配以第一张图的相机坐标为世界坐标 xff0c 计算第二张图相对第一张图的旋转矩阵 平移矩阵不断更新第一张图 xff0c 在进行第二次计算时 xff0c 以第二张图为第一张图 xff0c 以第二张图的相
  • 重做Unbuntu 18.0.43 LTS系统 并为SLAM配置环境

    目录 前言 一 安装列表 1 Ubuntu 18 0 43 LTS 1 0 A 搜狗输入法 1 0 B ibus输入法安装 1 1 更换软件源 1 2 安装vim curl等工具 1 3 安装浏览器Chrome git等 1 4 安装g 4