Skip to content

Latest commit

 

History

History
171 lines (112 loc) · 6.32 KB

README.md

File metadata and controls

171 lines (112 loc) · 6.32 KB

VINS-Mobile

Monocular Visual-Inertial State Estimator on Mobile Phones

13 Nov 2017: Wrap VINS-Mobile into a library to be used on multiple platforms.

Dependencies: Boost OpenCV Ceres-Solver

Test with Boost 1.63, OpenCV 3.2, Ceres-Solver 1.12 on Ubuntu 16.04, GCC 4.9, Clang 3.8.

Build procedure:

Linux/Ubuntu:

1. Build Ceres-Solver (a minimal version). 
	
	cd VINS_ThirdPartyLib/ceres-solver/
	
	export EIGEN_DIRS=absolute_path_to_VINS_ThirdPartyLib_eigen3

	To build with GCC:

		mkdir build_linu && cd build_linux

		cmake -DEIGEN_DIRS=${EIGEN_DIRS} -DMINIGLOG=ON -DSUITESPARSE=OFF -DLAPACK=OFF -DOPENMP=OFF -DCXX11=ON 
			-DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=./install ..

	To build with Clang:

		mkdir build_clang && cd build_clang

		cmake -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DEIGEN_DIRS=${EIGEN_DIRS} 
			-DMINIGLOG=ON -DSUITESPARSE=OFF -DLAPACK=OFF -DOPENMP=OFF -DCXX11=ON 
			-DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=./install ..
	
	make 

	make install

2. Prepare Boost and OpenCV

	Suppose Boost directory structure is:

		boost_1_63_0
				|
				|---- install
				|		|
				|		|---- include 
				|		|
				|		|---- lib
				|
				|---- install_clang
						|
						|---- include 
						|
						|---- lib

	OpenCV directory structure is:

		opencv
			|
			|---- release
			|		|
			|		|---- install
			|				|
			|				|---- bin
			|				|
			|				|---- include
			|				|
			|				|---- lib
			|				|
			|				|---- share
			|
			|---- release_clang
					|
					|---- install
							|
							|---- bin
							|
							|---- include
							|
							|---- lib
							|
							|---- share		

	To build with GCC:

		export BOOST_DIR=absolute_path_to_boost_1_63_0/install/

		export OPENCV_DIR=absolute_path_to_opencv/release/install/

	To build with Clang:

		export BOOST_DIR=absolute_path_to_boost_1_63_0/install_clang/

		export OPENCV_DIR=absolute_path_to_opencv/release_clang/install/

3. Build VINS-Mobile library and test executable

	cd VINS-Mobile

	To build with GCC:

		mkdir build_linux && cd build_linux 

		cmake -DCMAKE_BUILD_TYPE=Release -DBOOST_DIR=${BOOST_DIR} -DOPENCV_DIR=${OPENCV_DIR} ..

	To build with Clang:

		mkdir builc_clang && cd build_clang

		cmake -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ 
			-DCMAKE_BUILD_TYPE=Release -DBOOST_DIR=${BOOST_DIR} -DOPENCV_DIR=${OPENCV_DIR} .. 

	make 

27 Jun 2017: We upgrade the pose outputs and AR rendering to 30 Hz by motion-only 3D tracking in front-end and improve the loop-closure procedure(See our technical report for detail).

22 May 2017: VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator is released. It is the Linux version and is fully integrated with ROS. Available at: link

VINS-Mobile is a real-time monocular visual-inertial state estimator developed by members of the HKUST Aerial Robotics Group. It runs on compatible iOS devices, and provides localization services for augmented reality (AR) applications. It is also tested for state estimation and feedback control for autonomous drones. VINS-Mobile uses sliding window optimization-based formulation for providing high-accuracy visual-inertial odometry with automatic initialization and failure recovery. The accumulated odometry errors are corrected in real-time using global pose graph SLAM. An AR demonstration is provided to showcase its capability.

Authors: Peiliang LI, Tong QIN, Zhenfei YANG, Kejie QIU, and Shaojie SHEN from the HKUST Aerial Robotics Group

Videos: https://youtu.be/0mTXnIfFisI https://youtu.be/CI01qbPWlYY (Video1 Video2 for mainland China friends)

Related Papers:

If you use VINS-Mobile for your academic research, please cite at least one of our related papers.

1. Build

The code has been compiled on macOS Sierra with Xcode 8.3.1 and tested with iOS 10.2.1 on iPhone7 Plus.

1.1 Install boost for macOS

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install boost

1.2 Download specific opencv2.framework from here, then unzip it to VINS_ThirdPartyLib/opencv2.framework (Please make sure you haven't installed opencv for your OSX)

1.3 In your Xcode, select Product-> Scheme-> Edit Scheme-> Run-> Info, set Build Configuration to Release (not debug)

1.4 Slect your device at upper left corner, then choose your device size at Main.storyboard, build and run

1.5 Compatible Devices and iOS version requiements

iPhone7 Plus, iPhone7, iPhone6s Plus, iPhone6s, iPad Pro
iOS 10.2.1 and above

2. Acknowledgements

We use ceres solver for non-linear optimization and DBow for loop detection.

Thanks the contributions of Botao Hu (from Amber Garage) and Yang Liu.

3. Licence

The source code is released under GPLv3 licence.

We are still working for improving the code readability. Welcome to contribute to VINS-Mobile or ask any issues via Github or contacting Peiliang LI <pliapATconnect.ust.hk> or Tong QIN <tong.qinATconnect.ust.hk>.

For commercial inqueries, please contact Shaojie SHEN <eeshaojieATust.hk>