目录

前言

一、安装列表

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-essentialsudo apt install flex
sudo apt install bison

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

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get updatesudo 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.2make -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.gzcd 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 Releasecp make.inc.example make.inccmake -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 buildcmake ..make -j4
sudo make install

2.1.10 DBoW3

在~/Downloads下git,编译安装。
git clone https://github.com/rmsalinas/DBow3.git
cd DBow3
mkdir build
cd buildcmake ..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 releasecmake -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 421C365BD9FF1F717815A3895523BAEEB01FA116sudo 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日星期二

重做Unbuntu 18.0.43 LTS系统 并为SLAM配置环境相关推荐

  1. win10环境向移动固态硬盘安装Ubuntu 18.04.3 LTS系统(即插即用)

    win10环境向移动固态硬盘安装Ubuntu 18.04.3 LTS系统(即插即用) 一.从官网下载ubuntu18镜像 地址:https://ubuntu.com/download/desktop ...

  2. 浅谈Ubuntu 18.04.1 LTS x86_64安装,美化配置及常用软件安装配置的历程

    浅谈Ubuntu 18.04.1 LTS x86_64安装,美化及常用软件安装配置的历程 这几天入坑Ubuntu,本着双系统来的却不小心把Windows玩崩了.期间各种问题各种坑,查阅了很多文章来解决 ...

  3. 解决Mac系统下需要每次配置环境的问题

    问题描述: 第一次使用mac,在配置环境方面与win系统很大不同,根据网上很多篇文章的方法配置adb时,发现使用adb命令前都得重新配置,实在是很不方便. 解决方案: 结合网上的方法,需要加一条命令即 ...

  4. 苹果电脑安装java_mac系统 安装 JDK 并配置环境

    第一步 : 下载 mac 版的 JDK // 同意协议并点击下载 第二步 : 下载完成后, 按提示完成安装. 打开Finder,可以在下图所示的路径中找到安装好的jdk: 其中Contents下的Ho ...

  5. 逃脱只会部署集群系列 —— Kubeadm部署v1.18.0与ETCD操作

    目录 一.Kubeadm部署K8s1.18.0版本 1. 安装要求 2.环境准备 3. docker安装[所有节点都需要安装] 4.docker配置cgroup驱动[所有节点] 5.镜像加速[所有节点 ...

  6. 安装mysql8.0配置环境_Windows环境下MySQL 8.0 的安装、配置与卸载

    软件版本 Windows:Windows10 MySQL:mysql-8.0.17-winx64.zip 安装步骤 1.配置环境变量 name:Path value:C:\Program Files\ ...

  7. Ubuntu 18.04 LTS系统主题美化

    Ubuntu 18.04 LTS系统主题美化 安装主题 设置主题 安装Dash to dock工具栏 安装Hide to bar顶栏隐藏工具栏 安装Pixel Saver 找设置一下登录界面的主题吧 ...

  8. 台式机下成功在windows10的基础上安装Ubuntu 18.04 LTS 系统(详细教程)

    台式机成功在windows10的基础上安装Ubuntu 18.04 LTS 系统 1 前言 因为工作缘故经常需要使用windows和ubuntu两个不同的计算机系统,因此想把实验室的台式机安装成双系统 ...

  9. [解决]关于Manjaro KDE更新系统至Manjaro 18.0.4 Illyria在心触控板驱动下轻触功能缺失的问题

    如题:关于Manjaro KDE更新系统至Manjaro 18.0.4 Illyria在心触控板驱动下轻触功能缺失的问题 由于xf86-input-synaptics驱动已经停止了维护工作, 所以ma ...

最新文章

  1. File.separator或File.pathSeparator
  2. Android:手把手教你 实现Activity 与 Fragment 相互通信(含Demo)
  3. 【大佬漫谈】数字科技驱动的信贷风险技术——乔杨
  4. 弗洛伊德算法_弗洛伊德算法
  5. 【网络协议】TCP中的四大定时器
  6. shell编程练习题
  7. 谈谈对python的理解_浅谈对python pandas中 inplace 参数的理解
  8. java ssm框架 缓存_SSM框架之Mybatis(7)延迟加载、缓存及注解
  9. 可编程控制器是计算机,可编程控制器的工作原理!与我们PC有什么区别呢?
  10. Bigemap如何添加卫星影像在线地图服务
  11. PID原理(图形并茂)
  12. 桓公与轮扁:轮扁斫轮
  13. 手机投屏到电脑教程,高清、高帧率、无延时投屏
  14. 页面置换算法之 LRU算法
  15. GMARK设计奖申报
  16. C++——HIS排班系统for Neuedu
  17. 模板式表单与响应式表单关系
  18. 简单好用的网络保护软件 lulu for mac 支持big sur系统
  19. python json字典模块详解,json.dumps(),json.loads()
  20. Windows7 IP地址切换器

热门文章

  1. 教授专栏09 | 彭倩: 港具优势 利好SPAC发展
  2. android和ios GoogleMap画导航线路图 路径规划(Directions)
  3. 宝塔linux升级,宝塔linux面板之升级OpenSSL教程
  4. 图像处理与机器视觉_第一篇
  5. 手机端适用:vue列表拖拽组件 vue-dragging
  6. LWC 63:748. Shortest Completing Word
  7. 一条收藏已久的秘方!
  8. 学习笔记 -- 用python中的selenium模拟知乎登录
  9. LDheatmap | SNP连锁不平衡图(LD)可视化,自己数据实现版!
  10. Kubernetes CKA认证运维工程师笔记-Kubernetes调度