ROS packages for vision-based MAVs.
Required dependencies:
- px-ros-pkg
- ethzasl_sensor_fusion (branch: catkin)
- asctec_mav_framework (branch: experimental)
- Boost >= 1.4.0 (Ubuntu package: libboost-all-dev)
- Eigen3 (Ubuntu package: libeigen3-dev)
- gflags (Ubuntu package: libgflags-dev)
- glog (Source install)
- OpenCV >= 2.4.8
- SuiteSparse >= 4.2.1 (Source install)
- RTI Connext DDS >= 5.1.0 (Source install to /opt)
If you use the packages for an academic publication, please cite either or both of the following papers depending on which packages you use:
Lionel Heng, Gim Hee Lee, and Marc Pollefeys,
Self-Calibration and Visual SLAM with a Multi-Camera System on a Micro Aerial Vehicle,
In Proc. Robotics: Science and Systems (RSS), 2014.
Lionel Heng, Dominik Honegger, Gim Hee Lee, Lorenz Meier,
Petri Tanskanen, Friedrich Fraundorfer, and Marc Pollefeys,
Autonomous Visual Mapping and Exploration With a Micro Aerial Vehicle,
Journal of Field Robotics (JFR), 31(4):654-675, 2014.
For hardware synchronization between the IMU on any AscTec platform and a single/multi-camera system, perform the following steps:
- Connect a cable between the GPIO pins on the autopilot (ground pin: GND, trigger signal pin: P1.16) and the correct pins on the camera hardware. The GPIO pins on the autopilot are shown in http://wiki.asctec.de/display/AR/I2C%2C+SPI%2C+GPIO.
- Compile the autopilot firmware from https://github.com/cvg/asctec_mav_framework/tree/experimental/asctec_hl_firmware. Note that this firmware differs from the official ethz-asl version, as the firmware is modified to support camera triggering.
- Flash the autopilot firmware by following the instructions in http://wiki.asctec.de/display/AR/SDK+Setup+for+Linux.
- Now you can adjust the camera trigger rate by modifying the value for the trigger_rate_cam parameter that is used by the asctec_hl_interface package.
- Each time the autopilot sends a trigger signal to the camera(s), the autopilot records the IMU data at that point of time. The asctec_hl_interface package publishes both a CamTrigger message and sensor_msgs::Imu message. Information in these messages can be used to infer which IMU message corresponds to a given camera image.
The primary author, Lionel Heng, is funded by the DSO Postgraduate Scholarship. This work is partially supported by the SNSF V-MAV grant (DACH framework).
The repository includes third-party code from the following sources:
1. M. Rufli, D. Scaramuzza, and R. Siegwart,
Automatic Detection of Checkerboards on Blurred and Distorted Images,
In Proc. IEEE/RSJ International Conference on Intelligent Robots and Systems, 2008.
2. Sameer Agarwal, Keir Mierle, and Others,
Ceres Solver.
https://code.google.com/p/ceres-solver/
3. D. Galvez-Lopez, and J. Tardos,
Bags of Binary Words for Fast Place Recognition in Image Sequences,
IEEE Transactions on Robotics, 28(5):1188-1197, October 2012.
4. L. Kneip, D. Scaramuzza, and R. Siegwart,
A Novel Parametrization of the Perspective-Three-Point Problem for a
Direct Computation of Absolute Camera Position and Orientation,
In Proc. IEEE Conference on Computer Vision and Pattern Recognition, 2011.
5. pugixml
http://pugixml.org/
6. E. Olson,
AprilTag: A robust and flexible visual fiducial system,
In Proc. IEEE International Conference on Robotics and Automation, 2011.