【学习VINS-MONO】环境配置、测试

VINS-MONO环境配置、测试:

配置环境:
基于Ubuntu16.04、下载安装对应版本的ROS Kinetic、opencv-3.3.1、eigen-3.3.3、ceres-solver-1.14.0、cmake3.10以上的版本
虚拟机vmware workstation
笔记本 hp win10 64位 32G内存
2023.3.14 试过了Ubuntu20.04安装ROS

前言

虚拟机的优点在于安装卸载简单,可以保存快照,遇到问题可以回溯,适合刚开始的学习,目前有教程说虚拟机会出现玄学的问题,但也能安装成功。
虚拟机的玄学问题主要是硬件链接方面,本次测试不需要链接外部硬件设备,不会出现此类问题。
此外,虚拟机比较吃电脑的内存和cpu配置,配置不好的电脑体验可能会比较差。

个人记录学习过程中遇到的问题已经解决办法:
2022.8.29

一、VINS-MONO是什么?

VINS-Mono和VINS-Mobile是香港科技大学沈劭劼团队开源的单目视觉惯导SLAM方案。
是基于优化和滑动窗口的VIO,使用IMU预积分构建紧耦合框架。并且具备自动初始化,在线外参标定,重定位,闭环检测,以及全局位姿图优化功能。

二、vmware虚拟机安装Ubuntu16.04

1.下载Ubuntu16.04的iso镜像

Ubuntu官方下载地址:Ubuntu下载链接

2.安装Ubuntu【学习VINS-MONO】环境配置、测试_第1张图片

【学习VINS-MONO】环境配置、测试_第2张图片

【学习VINS-MONO】环境配置、测试_第3张图片
【学习VINS-MONO】环境配置、测试_第4张图片
【学习VINS-MONO】环境配置、测试_第5张图片
tips:分配磁盘稍微大些,并将虚拟磁盘存储单个文件
【学习VINS-MONO】环境配置、测试_第6张图片
进行内存、核心的分配
【学习VINS-MONO】环境配置、测试_第7张图片

这样虚拟机一启动基本就会占用8G左右的内存了,内存大一点运行起来会更流畅一些

配置好硬件后启动虚拟机,进入Ubuntu安装界面
【学习VINS-MONO】环境配置、测试_第8张图片
选择中文,点击右侧安装
【学习VINS-MONO】环境配置、测试_第9张图片
【学习VINS-MONO】环境配置、测试_第10张图片
由于这是虚拟机,不存在将整个磁盘都清理的情况,所以可以点击第一个选项;但是如果双系统,需选择第四个选项,进行分区,否则会丢失文件。

之后的语言选择和注册账户正常进行。
【学习VINS-MONO】环境配置、测试_第11张图片
进入界面,安装完成

3.安装vmware tools

vmware tools可实现主机与虚拟机之间文字和文件的复制粘贴
找到虚拟机菜单栏中虚拟机,点击安装vmware tools,载入驱动,选择压缩包复制到桌面并且解压缩。
如果按键是灰色:解决方案
【学习VINS-MONO】环境配置、测试_第12张图片
安装详细教程链接:vmware tools安装

注意:
1.install过程中是no的输入yes,其他回车默认yes
2.第8条以后必须要看,安装完成后会发现只能跨平台粘贴文字,文件依旧不能复制。
解决方案:实现复制文件功能

经过以上两步,试验后成功!
若还是不成,可以试试:

apt-get install open-vm-tools-desktop

详细方法!
重启是点Ubuntu系统的重启,不要点击虚拟机的重启,两者都试一下吧。
至此,Ubuntu系统上的准备工作完成,接下来开始安装ROS。

三、ROS安装

因为Ubuntu的版本决定了ROS的版本,所以要对应安装ROS Kinetic版本
在开始之前先更换一下系统的国内镜像下载源,有些依赖项和库是通过代码自动更新和下载的。
如果阿里云速度也很慢的话,可以校园网教育网可以尝试清华云和华中科大的,多选几个试试。。一开始用的阿里云感觉速度可以,后来切换成华科云以后,33m/s更快了,安装ROS的时候几秒钟就可以完成。
tips:如果选择服务器的时候就很慢,说明要换一个了,,
【学习VINS-MONO】环境配置、测试_第13张图片

1、设置sources.list

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

2、设置key(公钥已更新)

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

有时候会导入公钥会导入不成功,多找几个源和key导入一下即可,这个应该没问题。
【学习VINS-MONO】环境配置、测试_第14张图片

3、更新package

sudo apt-get update

4、安装ROS kinetic完整版

sudo apt-get install ros-kinetic-desktop-full

这里的版本号是kinetic,搞错了的话中端会出现一行错误命令,删除即可。
5、初始化rosdep
注意:在使用ROS之前需要初始化rosdep

sudo rosdep init

在这里插入图片描述
遇到这种问题可能是因为被墙了,需要改ip地址,注意添加位置,不是在文件最下方!
解决方案:更改ip地址的详细方法
但是上面的方法基本不好用了!
下面两个方法可以解决:一个是通过GitHub自己去下载,安装时指向本地;另一个是更改ip代理
网络问题很严重,更改代理也不能解决问题的话,按照本方法根本解决问题,但是有点麻烦。注意的点是,在进入GitHub的时候把整个包下载下来放到home下,路径名称为home/(用户名)/。手动下载
先改名字,去掉master;然后pwd查看路径(主要是用户名);最后按照修改即可
在这里插入图片描述
这样就时初始化成功了!

rosdep update

更新一下~
9.22更新补充:重新安装的时候,由于墙的原因,更新也会失败,换了网,服务器也都不行,最后在某乎上看到了一个修改代理的方式解决了!代理修改
其中有一点可能不清楚,替换代理ip的时候,是将前面http整个复制过去,替换掉原来的http,后面再紧跟网址。

6、配置ROS环境

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

7、安装依赖项

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

8、测试ROS是否安装成功

roscore #初始化ROS环境,以后的实验也需要开启这个环境

存在一些问题:
ubuntu20.04安装ROS

rosrun turtlesim turtlesim_node #调出小乌龟
rosrun turtlesim turtle_teleop_key #将控制权交给键盘

以上三个界面,分为三个终端运行
【学习VINS-MONO】环境配置、测试_第15张图片
OK!

四、OpenCV安装

opencv的版本决定了后期调用头文件的问题???不是很清楚,之前用Ubuntu20.04+ROS+opencv4.5.2失败了

这次在Ubuntu16.04下采用opencv3.3.1版本

首先去opencv官网下载opencv3.3.1:下载opencv3.3.1

1.可以先检查一下opencv是否安装:

pkg-config --modversion opencv

2.安装必要的依赖库:

sudo apt-get upgrade
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python3.5-dev
sudo apt-get install ffmpeg

3.找到opencv的压缩包,解压缩后:

cd opencv-3.3.1
mkdir build
cd build
18:cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..

16:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local  ..

————————————————

CMAKE_BUILD_TYPE=RELEASE:
这样产生的makefile文件make生成的可执行文件就带有调试信息,供gdb和gdbserver使用了。CMAKE_BUILD_TYPE的值可以为Release或者Debug。

CMAKE_INSTALL_PREFIX=/usr/local …:
INSTALL 指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及文件、目录、脚本等。 这里就是提前设置好编译到的路径!

OPENCV_GENERATE_PKGCONFIG=ON:
该选项开启生成opencv4.pc文件,支持 pkg-config 工程。默认的是False
CMAKE_INSTALL_PREFIX 该选项是指定目录的安装目录。如上指定【/usr/local】,则会安装在该路径下的【include、bin、lib】三个文件夹下。该项的设置,在安装多个版本设置不同路径变得很有必要。

————————————————
cmake后的样子:
【学习VINS-MONO】环境配置、测试_第16张图片

4.上述配置命令执行成功后,继续执行编译命令:

make -j8

其中 -jx 是使用CPU的多线程,x是要使用的线程数量。有j4 、j12、还有直接make的也可以
时间会有点长

5.执行安装命令:

sudo make install

6.加入到动态链接中:

sudo ldconfig

7.此时在检查一下版本,出现版本号即安装成功!

pkg-config --modversion opencv

在这里插入图片描述
安装好opencv3.3.1了

五、手动安装Eigen3.3.3

两种方法,一种是通过apt的方法从Ubuntu库里自动安装,另一种手动下载源代码指定安装包安装。
因为安装Eigen3.3.3这一指定版本,所以我们采取第二种方法。
官网下载地址:这里

在其他版本下载中,找到:
【学习VINS-MONO】环境配置、测试_第17张图片
可以在win10主机环境中下载,然后copy到虚拟机中,这样快一些。
1.解压缩后进入文件
解压缩这里,需要从文件夹中的计算机进入桌面终端,而不是右击桌面来进行终端命令
解压缩详细:各种安装包的压解方法,解压位置教程

【学习VINS-MONO】环境配置、测试_第18张图片

在桌面上也可以用手动解压缩的方法,右击文件------提取到此处。
【学习VINS-MONO】环境配置、测试_第19张图片
2.创建build文件夹

mkdir build

3.进入build文件中

cd build

4.cmake进行编译

cmake ..

5.编译成功后进行安装

sudo make install

注意:
由于后面运行vins-mono环境的时候,需要链接eigen的头文件,所以现在需要链接到该目录下。
原话是:此外,需使用下面命令将Eigen映射到 /usr/include 路径下,因为在很多程序中include时经常使用#include 而不是使用#include ,不映射的话一些程序在编译时会因找不到Eigen/Dense而报错。
链接部分如下:

sudo cp -r /usr/local/include/eigen3 /usr/include/eigen3   #cp -r命令与cp命令的简单复制不同,它带有对文件子目录一个递归的性质。
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen   # ln-s 是软链接

不过有的博客里没有添加软链接这一行代码,但两个都写上是没有问题的。

Eigen3.3.3 安装完成!

六、安装Ceres

安装2.**版本很容易出现问题,ceres是最容易出问题的了,很烦

1.安装依赖项:

sudo apt-get install liblapack-dev libsuitesparse-dev libgflags-dev 
sudo apt-get install libgoogle-glog-dev libgtest-dev
sudo apt-get install libcxsparse3
  1. 下载ceres-solver-1.14.0并解压
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
tar -zxvf ceres-solver-1.14.0.tar.gz

3.进入安装包后,编译:

cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..   #  可能出现错误
make -j8  #也可能出现错误
sudo make install

【学习VINS-MONO】环境配置、测试_第20张图片

**注意:cmake … 过程中可能会遇到这个问题,是因为cmake版本过低造成的,Error中也提到需要3.10及以上的版本,所以就要想办法更新或下载高版本的cmake
百度后发现有人说不需要卸载原先的cmake,直接更新即可,否则会出现其他的问题。不要随意卸载原先的cmake!!!
详细解决过程:

wget https://cmake.org/files/v3.12/cmake-3.12.3.tar.gz
tar zxvf cmake-3.12.3.tar.gz
# 下载、解压
cd cmake-3.12.3
./configure
make
sudo make install
#  配置、编译、安装
sudo cmake --version
#检查是否更新完成

在这里插入图片描述
cmake更新安装完成!这样再回去cmake就没问题了

至此,准备工作就全部完成了,下面的任务就是安装与编译VINS-Mono环境,并测试.bag数据包

七、安装与编译VINS-Mono

这一篇文章分析的很清晰:vins-mono文件组成

1.创建ROS工作空间:
先添加依赖项:

sudo apt-get install ros-kinetic-cv-bridge ros-kinetic-tf ros-kinetic-message-filters ros-kinetic-image-transport

创建目录:

mkdir -p ~/catkin_ws/src		# 递归创建工作空间及其下的src目录
cd ~/catkin_ws/src				# 移动到工作空间下的src目录
catkin_init_workspace			# 初始化工作空间

可以看到,在~/catkin_ws/src路径下创建了一个CMakeLists.txt文件.
一个典型的ROS工作空间目录结构如下:

catkin_ws/         			# 工作空间
├── src/                   	  # src目录放置源码
│   ├── CMakeLists.txt          # 顶层CMakeLists.txt
│   ├── package_1/				# ROS包1
│   ├── package_2/				# ROS包2
│   └── package_n/				# ROS包n
├── build/                    # build目录放置编译结果
├── devel/                    # devel目录放置开发相关文件
│   └── setup.bash              # 运行该脚本才能让该工作空间下的包被ROS发现
└── install/                  # install目录放置安装相关文件

src目录下存放的是我们写的源码,build、devel和install目录都是ROS在编译过程中为我们生成的,不需要我们创建或修改.

2.安装与编译vins-mono
继续上面的空间终端

git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ../
catkin_make

【学习VINS-MONO】环境配置、测试_第21张图片
编译成功!这也说明vins-mono环境配置好了,可以下载数据包导入跑数据了。
测试包文件下载路径:EuRoC MAV Dataset
【学习VINS-MONO】环境配置、测试_第22张图片
下载很慢-。-
下载完成后,在catkin_ws文件夹下新建一个Dates文件,放入。运行ros。打开三个终端,分别启动vins_estimator,rviz和播放包文件。以MH_01为例:

roscore
source ~/catkin_ws/devel/setup.bash #每个终端运行前都要加上这一句
roslaunch vins_estimator euroc.launch 
roslaunch vins_estimator vins_rviz.launch
roslaunch benchmark_publisher publish.launch sequence_name:=MH_01_easy.bag
rosbag play ~/catkin_ws/Dates/MH_01_easy.bag

配置工作空间时,source devel/setup.bash命令用于刷新环境,编译完成后必须使用source命令刷新一下工作空间的环境。每次进行catkin_make之后,都要进行source devel/setup.bash,进行package创建时,当加入新的package并编译完成后,也要进行source devel/setup.bash刷新环境,否则会出现package XXX not found 的问题。由于我在使用时,经常忘记source,所以我将source devel/setup.bash命令添加到了.bashrc文件中,让系统自动刷新工作空间环境,这样,在这个工作空间下的所有package都可以在编译后直接运行了,不用再source devel/setup.bash。
为了避免每次都要运行脚本指令,可以在.bashrc文件下提前写好~

gedit ~/.bashrc
source ~/catkin_ws/devel/setup.bash

成功运行!
【学习VINS-MONO】环境配置、测试_第23张图片

总结

注意版本号,有许多问题,例如头文件出错,c++格式错误、opencv版本对应不上,其实都是版本问题。测试过以上版本均没有问题,可以正常运行。纯纯小白。
2022.8.30

参考链接:
Ubuntu16.04安装ROS Kinetic详细过程
rosdep init 错误解决方法
安装了vmware tools还是不能复制粘贴,使用了很多种方法都不可以
git clone 出现fatal:无法访问问题解决】Ubuntu16.04安装Opencv3.3.1
VMware Tools安装教程
VINS-Mono环境配置与测试笔记
VINS-Mono笔记01_VINS-Mono的编译运行
https://blog.csdn.net/nannan7777/article/details/102915699?spm=1001.2014.3001.5506
Ubuntu 16.04 VINS-Mono 安装
详细介绍如何在ubuntu20.04中安装ROS系统,以及安装过程中出现的常见错误的解决方法,填坑!!!

你可能感兴趣的:(ubuntu,linux)