Commit 8f0d044c authored by Joaquim Casals Buñuel's avatar Joaquim Casals Buñuel
Browse files

Add README.md

parent ee42f23d
**THIS IS A WORK IN PROGRESS INFORMATION DOWN BELOW MIGHT BE OUTDATED**
# Apriltag VIO introduction
This project is a ROS node implementing visual inertial navigation based on the Wolf Apriltag fiducial markers and IMU preintegration.
It can be launched using a camera stream only to recover key frames of the 6D camera trajectory using Apriltag markers placed in the scene (VO). IMU preintegration can be added to have a high frequency estimate of the pose and velocity of the system (VIO).
Note: The visual only odometry version is currently implemented and tested, the visual-inertial version however is still under testing and does not currently converges
# Installation
## Wolf
Follow the guidelines of the [Wolf project page](https://gitlab.iri.upc.edu/mobile_robotics/wolf_projects/wolf_lib/wolf). You have to checkout the `Apriltag` branch.
## Apriltag
The apriltag library is responsible for the detection of the fiducial markers. Download and install it from [this repository](https://github.com/AprilRobotics/apriltag).
## Sensor drivers
The sensors used in this project were the camera mvBlueFOX3 which IRI's ROS driver can be found [here](https://gitlab.iri.upc.edu/labrobotica/drivers/mvBlueFOX3) and the IMU microstrain 3DM-GX3-25 which ROS driver is described [there](http://wiki.ros.org/microstrain_3dmgx2_imu).
## This project
Place the project in the `src` directory of your catkin workspace and then use either catkin_make or catkin tools to build it.
`catkin build wolf_apriltag_vio`
Do not forget to run `source ./devel/setup.bash`
# Launch
The same launch file is used to launch in VO and VIO modes, switching between the two being done at the parameter level.
`roslaunch wolf_apriltag_vio apriltag_VIO.launch`
## Arguments
Some usefull arguments can be passed:
* userealcam: if true, launches the camera currently connected to the computer (currently only the mvBluefox3 with IRI's driver)
* userealcam: same for the IMU with the driver indicated previsously
* userviz: launches the the rviz GUI to visualize the trajectory or not
* useimageview: display the image stream with image_view or not
Look for the default values in `launch/apriltag_VIO.launch`
## Set up an experiment
Whether you want to use this node for realtime trajectory estimation or you want to record the data in a bag file to play with it later, print some markers on A4 pages from [this pdf](https://robot2016.mit.edu/sites/default/files/documents/project_apriltag36h11.pdf), measure the width of the black square and report it in `tag_width_default` of the file `config/processor_tracker_landmark_apriltag.yaml`. If you want to use different tag sizes, use the `tag widths` entries rather.
Then place these tags in the scene respecting 2 rules:
* Each tag can only appear in the scene (it is unique)
* If the IMU is not used, there has to be a least one tag measurement in common between two consecutive Keyframes or the factor graph is disconnected
# Configuration
Done mainly in the config folder and in `launch/apriltag_VIO.launch`
* `config/params.yaml`: parameters mainly about the ros node data flow
* `config/processor_tracker_landmark_apriltag.yaml`: apriltag wolf processor settings
* `config/processor_imu.yaml`: imu processor settings
* `config/imu_intrinsics`
* `config/F0300141_calib.yaml`: calibration file of the mvbluefox camera
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment