README.md 3.29 KB
Newer Older
Joaquim Casals Buñuel's avatar
Joaquim Casals Buñuel committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

**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