Quadcopter base framework and lab course: arDroneManual/Autonomous
This framework simplifies the development of autonomous flight applications for the popular Parrot AR.Drone 2.0 quadcopter. It consists of two applications: arDroneAutonomous conveniently offers undistorted camera images and other measurements, anti-windup PID position controllers, as well as keyboard and gamepad inputs. arDroneManual provides concurrent manual control and audio feedback about the quadcopter's state.
In our lab courses MTP, RVMRT and in the KSOP Optics and Photonics Lab, this framework is used to practically learn Ziegler-Nichols controller tuning and the detection of and autonomous navigation along a line on the ground. This video shows the lab's final result. A German script is already available, an English version will appear shortly. For the LaTeX sources of the scripts, please contact us.
On-line Performance and Efficiency Optimization: libHawaii
Modern systems for computer vision and other real-time applications not only contain more and more CPU cores, but also graphics processing units (GPUs). For such systems, this C++ library can automatically and continuously optimize throughput and energy efficiency of user-defined stream applications. This paper (accepted version) explains the algorithms and implementation of libHawaii and demonstrates its usage on own applications. A preceding prototype for optimizing the performance of dense stereo vision in particular is described in this paper (accepted version).
Lanelet Maps: libLanelet
This library parses OpenStreetMap files and builds so-called lanelet maps. Those maps represent the environment both in topological and geometrical terms and can be used as a building block in autonomous driving applications. We provide the library as well as supplementary material on this website.
Omni Calibration Toolbox for Quasi-Central Catadioptric Cameras
This toolbox can be used to calibrate quasi-central catadioptric cameras intrinsically and extrinsically from multiple images with a planar checkerboard. An automatic corner detection and correlation is included. Furthermore, a dataset from two catadioptric cameras with calibration images and landmarks to evaluate the calibration performance is enclosed. The implementation contains state-of-the-art central projection functions and the centered projection function for slightly non central catadioptric cameras. More information is availabe on this website.
TriTrack2: MATLAB library for 3D moving object detection and tracking
TriTrack 2 is a MATLAB library for 3D moving object detection and tracking. As input, rectified stereo image pairs are used. Output are 3D bounding boxes in world coordinates. This approach is based on detecting sparse feature points and estimating scene flow using these features. Egomotion is considered using image information only. Clustering the scene flow, considering the quadratically growing stereo error, is used for moving object detection. Detections are tracked over time. The source code of triTrack2 including a readme file with installation instructions and a short demo sequence can be downloaded here.
DIRD: An illumination robust descriptor for place recognition
This website presents DIRD based place recognition. Source code and datasets are made freely available. DIRD feature vectors are extracted for every image of a given sequence. Thereafter pairs of images are automatically found that belong to the same place. The method is very robust against illumination changes.
This library can be used for loop closure detection in visual SLAM. It is written in C++, is self contained, easy to compile using CMake, runs on Linux and Windows and includes MATLAB wrappers as well as sample datasets. Moreover, the feature extraction is very fast (approx. 7ms on a single core). Place recognition is fast using SSE intrinsics. More information is availabe on this website.
Online Toolbox for Camera and Range Sensor Calibration
This online toolbox can be used to fully automatically calibrate one or multiple video cameras intrinsically and extrinsically using a single image per sensor only using a set of planar checkerboard calibration patterns. Furthermore, if provided, it registers the point cloud of a 3D laser range finder with respect to the first camera coordinate system. The main assumption for our algorithm to work is that all cameras and the range finder have a common field of view and the checkerboard patterns can be seen in all images, cover most parts of the images and are presented at various distances and orientations. More information is availabe on this website.
LIBVISO2: Library for Visual Odometry
LIBVISO2 is a very fast cross-platfrom (Linux, Windows) C++ library with MATLAB wrappers for computing the 6 DOF motion of a moving mono/stereo camera rig. The stereo version is based on minimizing the reprojection errors of sparse feature matches and runs in real-time (>20fps on i7 at VGA resolution). No motion model or setup restrictions are imposed, except that the input images must be rectified and calibration parameters are known. The monocular version uses the 8-point algorithm for fundamental matrix estimation. For estimating the scale it assumes that the camera is moving at a known and fixed height over ground. It includes a simple structure-from-motion pipeline to reconstruct sparse 3D point clouds. The source code of libviso2 including a readme file containing installation instructions can be downloaded here. More information is availabe on this website.
LIBELAS: Library for Efficient Large-scale Stereo Matching
LIBELAS is a cross-platfrom (Linux, Windows) C++ library with MATLAB wrappers for computing disparity maps from rectified graylevel stereo pairs. It is robust against moderate changes in illumination and well suited for robotics applications with high resolution images. Computing the left and right disparity map of a one Megapixel image requires less than one second on a single i7 CPU core. A sub-sampling option allows for computing disparity maps at half image but full depth resolution at 10 fps. The source code of libelas including a readme file containing installation instructions can be downloaded here. More information is availabe on this website.
LIBICP: Library for Iterative Closest Point Fitting
LIBICP is a cross-platfrom C++ library with MATLAB wrappers for fitting 2d or 3d point clouds with respect to each other. Currently it implements the SVD-based point-to-point algorithm as well as the linearized point-to-plane algorithm. It also supports outlier rejection and is accelerated by the use of kd trees as well as a coarse matching stage using only a subset of all points. The source code of libicp including a readme file containing installation instructions can be downloaded here. More information is availabe on this website.