VINS-Mono环境配置与测试笔记
标签: SLAM VINS-mono
本文转载自:
VINS-Mono环境配置与测试笔记
error:cv_bridge---opencv和ros连接起来的桥
1.简介
VINS-Mono和VINS-Mobile是香港科技大学沈劭劼团队开源的单目视觉惯导SLAM方案。是基于优化和滑动窗口的VIO,使用IMU预积分构建紧耦合框架。并且具备自动初始化,在线外参标定,重定位,闭环检测,以及全局位姿图优化功能。
本篇笔记是初配置VINS-Mono运行环境时的记录。
2.测试环境配置
2.1.配置目标
电脑 64位 8g内存 100g+1T硬盘
windows10+Ubuntu16.04双系统
Ubuntu 16.04, ROS Kinetic, OpenCV 3.3.1, Eigen 3.3.3,Ceres-Solver
2.2. Win10+Ubuntu16.04双系统
win10下安装Ubuntu16.04双系统
- 在Ubuntu官网上下载所需的iso镜像安装文件;
- 准备一个空U盘(2g以上),用Ultral软件试用版本制作安装盘(文件->打开iso镜像文件;启动->写入硬盘映像);
- 右键计算机->管理->磁盘管理,压缩出Ubuntu系统的安装区域(本次在机械硬盘上试用256G卷);
- 在安装盘插入的情况下重启计算机,使用开机向导(ASUS默认开机同时esc键进入),选择从U盘进入,开始安装Ubuntu;
- …(一系列不重要的步骤,可按默认选择)…选择自定义安装,开始划分磁盘分区;
- 本次分区配置如下:总256G,BIO主分区 32M,\boot主分区Et4 1G(听说更新内核后前引导文件不会自动删除,为省麻烦干脆放大一点),\home逻辑分区Et4 100G,swap交换分区 8G,\逻辑分区Et4 剩余所有内存,安装启动引导器的设备\boot(不知道为什么挂sda上报错);
- 安装完成,重启。
2.3. ROS Kinetic安装
ROS不能再详细的安装教程
- 版本选择
ROS发布日期 |
ROS版本 |
对应的Ubuntu版本 |
2016.3 |
ROS Kinetic Kame |
Ubuntu16.04/Ubuntu15.01 |
2015.3 |
ROS Jade Turtle |
Ubuntu15.04/Ubuntu LTS14.04 |
2014.7 |
ROS Indigo Lgloo |
Ubuntu14.04 |
- 安装步骤
添加源:打开控制台Ctrl+Alt+T输入以下命令
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
设置密钥:
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116
确保系统软件处于最新版:
$ sudo apt-get update
安装全功能版ROS:
$ sudo apt-get install ros-kinetic-desktop-full
查看可用的包:
$ apt-cache search ros-kinetic
初始化ROS:
$ sudo rosdep init
$ rosdep update
初始化环境变量:
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
安装常用插件:
$ sudo apt-get install python-rosinstall
测试ROS,启动ROS环境:
$ roscore
显示started core service [/rosout] 则安装成功
2.4. OpenCV 3.3.1
- 去opencv官网opencv下载地址下载对应版本的opencv安装包;
- 安装pip,安装numpy
sudo apt install python-pip
pip install numpy
- 安装依赖项
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev libtbb-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libpng-dev libdc1394-22-dev
- 解压opencv安装包,进入安装文件目录
tar -xzvf opencv-3.3.1.tar.gz
cd opencv-3.3.1/
cd ..
mkdir build
cd build
cmake ..
make # make -j4表示开4个线程来进行编译
make install
- 安装完成
2.5. Eigen安装
未安装Eigen的PC可以输入以下命令进行安装:
sudo apt-get install libeigen3-dev
可输入以下命令寻找安装位置:
sudo updatedb
locate eigen3
安装完成
2.6. Cere的安装
官网英文安装教程
可去GitHub上下载Ceres:Ceres下载地址
最新版本可从git库克隆:
以下安装步骤参照《SLAM十四讲》进行
安装依赖项:(若为Ubuntu14.04则应为libcxsparse3.1.2)
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.4 libgflags-dev libgoogle-glog-dev libgtest-dev
以下安装参照安装教程进行
安装依赖项:
#CMake
sudo apt-get install cmake
#google-glog + gflags
sudo apt-get install libgoogle-glog-dev
#BLAS&LAPACK
sudo apt-get install libatlas-base-dev
#Eigen3
sudo apt-get install libeigen3-dev
#SuiteSparse和CXSparse(可选)
# - 如果要将Ceres构建为* static *库(默认),您可以在主Ubuntu软件包#storage中使用SuiteSparse软件包:
sudo apt-get install libsuitesparse-dev
# - 但是,如果要将Ceres构建为* shared *库,则必须添加以下PPA:
sudo add-apt-repository ppa:bzindovic / suitesparse-bugfix-1319687
sudo apt-get update
sudo apt-get install libsuitesparse-dev
解压Cere安装包,进入安装目录下:
tar zxf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0
mkdir build
cmake ..
make
make install
3.测试
3.1.先决条件
ROS安装额外的ROS pacakge:
sudo apt-get install ros-kinetic-cv-bridge ros-kinetic-tf ros-kinetic-message-filters ros-kinetic-image-transport
3.2.在ROS上构建VINS-Mono
在ROS上构建VINS-Mono,克隆存储库和catkin_make:
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash
3.3.公共数据集上的视觉 - 惯性测距和姿势图重用
测试包文件下载路径:EuRoC MAV Dataset
打开三个终端,分别启动vins_estimator,rviz和播放包文件。以MH_01为例:
source ~/catkin_ws/devel/setup.bash #每个终端运行前都要加上这一句
roslaunch vins_estimator euroc.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play ~/catkin_ws/Dates/MH_01_easy.bag
测试成功
4.后续问题
一天想重新运行一下程序发现以下错误:
$ roslaunch vins_estimator euroc.launch程序“roslaunch”尚未安装。 您可以使用以下命令安装:
sudo apt install python-roslaunch
按照提示安装报错:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
下列软件包有未满足的依赖关系:
python-roslaunch : 依赖: python-roslib 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
尝试使用roscore同样报错:
$ roscore
程序“roscore”尚未安装。 您可以使用以下命令安装:
sudo apt install python-roslaunch
于是动手检查ros安装情况
dpkg -l "ros*"
期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)
| 状态=未安装(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)/触发器等待(W)/触发器未决(T)
|/ 错误?=(无)/须重装(R) (状态,错误:大写=故障)
||/ 名称 版本 体系结构: 描述
+++-==============-============-============-=================================
ii ros-kinetic-ac 1.11.13-0xen amd64 The actionlib stack provides a st
ii ros-kinetic-ac 1.12.6-0xeni amd64 actionlib_msgs defines the common
ii ros-kinetic-ac 0.1.10-0xeni amd64 The actionlib_tutorials package
ii ros-kinetic-an 1.9.11-0xeni amd64 This package provides a set of si
ii ros-kinetic-bo 1.8.1-0xenia amd64 A bond allows two processes, A an
...#一堆安装项还在,似乎没什么大问题
尝试重新初始化ROS环境变量
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
加入后roscore运行正常:
ros_comm version 1.12.14
summry
PARAMETERS
* /rosdistro: kinetic
* /rosversion: 1.12.14
NODES
auto-starting new master
process[master]: started with pid [10380]
ROS_MASTER_URI=http://wanghuidan-N501JW:11311/
setting /run_id to 2c90f326-d28a-11e8-a529-acfdce69c639
process[rosout-1]: started with pid [10393]
started core service [/rosout]
重新尝试运行程序:
$ source ~/catkin_ws/devel/setup.bash
$ roslaunch vins_estimator euroc.launch
程序“roslaunch”尚未安装。 您可以使用以下命令安装:
sudo apt install python-roslaunch
继续报开始的错,而且ros命令继续失效。。。
兜兜转转两三次以后感觉是程序这边的问题,于是重新catkin_make程序
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash
重新按3.3节跑测试
测试成功
5.openCV与cvbridge兼容问题
本部分转自:http://www.cnblogs.com/Jessica-jie/p/6959309.html
error:cv_bridge---opencv和ros连接起来的桥
有多个warning出现。。。版本冲突
解决办法:
cv_bridge[opencv和ros连接起来的桥],默认依赖的opencv版本是2.4.8,如果安装了新的opencv版本,比如3.1.0,那么在编译cv_bridge时候会提示无法找到opencv 2.4.8.so的库。
1.必须要先把旧版本的cv_bridge卸载掉:
sudo apt-get remove ros-indigo-cv-bridge
2.然后下载新版本的cv_bridge:
git clone https://github.com/ros-perception/vision_opencv.git
3.修改cv_bridge中的cmakelists.txt
find_package(OpenCV 3.1 REQUIRED) //将opencv的版本指定为3.1
4.将里面的cv_bridge包拿出来,放到工作空间中,重新编译:
catkin_make --pkg cv_bridge //catkin_make --pkg[package包],单独编译工作空间catkin_ws中的包;catkin_make编译所有的
也可以通过cmake编译
cd ~/catkin_ws/src/cv_bridge
mkdir build
cd build
cmake ..
make
sudo make install
结束之后你就可以更改你的其他代码了,由于以前的cv_bridge不见了,所以要在其他代码的cmakelists.txt添加一句话,后面的路径是自己的路径,查找cv_bridge.config.cmake所在的路径即可
set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake) //在find_package前面
5.python调用cv_bridge相关的工作
在~/.bashrc中添加
export LD_LIBRARY_PATH=/usr/local/lib/