GVINS, a non-linear optimization based system that tightly fuses GNSS raw measurements with visual and inertial information for real-time and drift-free state estimation. This system aims to provide accurate global 6-DoF estimation under complex indoor-outdoor environment where GNSS signals may be intermittent or even totally unavailable. code link. paper link.
(1)This package requires some features of C++11.
(2)This package is developed under ROS Kinetic environment.
(3)This package uses Eigen 3.3.3 for matrix manipulation.
(4)This package uses ceres 1.12.0 to solve the non-linear optimization problem.
(5)This package also requires gnss_comm for ROS message definitions and some utility functions. Follow those instructions to build the gnss_comm package.
Clone the repository to your catkin workspace (for example ~/catkin_ws/):
cd ~/catkin_ws/src/
git clone https://github.com/HKUST-Aerial-Robotics/GVINS.git
Then build the package with:
cd ~/catkin_ws/
catkin_make
source ~/catkin_ws/devel/setup.bash
If you encounter any problem during the building of GVINS, this author recommend you to try docker first.
To simplify the building process, the author add docker in this code.
Docker is like a sandbox so it can isolate this code from your local environment.
To run with docker, first make sure ros and docker are installed on your machine.
Then add your account to docker
group by sudo usermod -aG docker $USER
.
Logout and re-login to avoid the Permission denied error, then type:
cd ~/catkin_ws/src/GVINS/docker
make build
The docker image gvins:latest
should be successfully built after a while. Then you can run GVINS with:
./run.sh LAUNCH_FILE
(for example ./run.sh visensor_f9p.launch
).
Open another terminal and play your rosbag file, then you should be able to see the result.
If you modify the code, simply re-run ./run.sh LAUNCH_FILE
to update.