WhyCon is a vision-based localization system that can be used with low-cost web cameras, and achieves millimiter precision with very high performance. These characteristics allow its use as an alternative to more expensive localization systems available. The system is capable of efficient real-time detection and precise position estimation of several circular markers in a video stream. It can be used both off-line, as a source of ground-truth for robotics experiments, or on-line as a component of robotic systems that require real-time, precise position estimation. WhyCon is meant as an alternative to widely used and expensive localization systems. It is fully open-source.
The WhyCon system was developed as a joint project between the University of Buenos Aires, Czech Technical University and University of Lincoln, UK. The main contributors were Matias Nitsche, Tom Krajnik and Jan Faigl. Each of these contributors maintains a slightly different version of WhyCon.
WhyCon version | Application | Main features | Maintainer |
---|---|---|---|
WhyCon-ROS | general | 2D, 3D, ROS + lightweight | Matias Nitsche |
WhyCon-Mini | general | 2D, 3D, lightweight, autocalibration | Tom Krajnik |
SwarmCon | μ-swarms | 2D, individual IDs, autocalibration | Tom Krajnik |
Caspa-WhyCon | UAVs | embedded, open HW-SW solution | Jan Faigl |
Social-card | HRI | orientation translated to commands | Tom Krajnik |
A six-page overview of the WhyCon system was first presented at the ICAR conference [1]. A detailed description was published in the Journal of Intelligent and Robotics Systems [2]. An overview of WhyCon's applications was presented at the Workshop on Open Source Aerial Robotics during the International Conference on Intelligent Robotic Systems, 2015 [3]. Nowadays, the system is being used in several research projects the across globe, see the following video for examples.
If you decide to use this WhyCon for your research, please cite it using the one of the references provided in this bibtex file. Note that this .bib includes not only the references to the scientific works that describe the underlying method, but also a reference to the implementation for a specific (stable) version of the code on GitHub (look for the DOI containing the word "zenodo").
The code can be compiled either as a ROS package (shared library) or in a standalone version.
NOTE: while the standalone version includes a demo application, this demo is not actively maintained anymore and will probably be removed soon. The reference application is provided as a series of ROS nodes, which utilize the WhyCon shared library. For an example of how to implement your own standalone application, see the ROS node.
Stable releases are available periodically. Latest stable release can be downloaded by clicking here.
For the latest development version (which should also work and may contain new experimental features) you can clone the repository directly.
Only LTS versions are targeted. At the moment, Indigo and Kinetic are targeted.
It is recommended to install required dependencies using
rosdep install -y --from-path <path to whycon source package directory>
NOTE: it is recommended to use OpenCV 3 since it is actually latest stable version. In ROS Kinetic this is installed by default. On ROS Indigo, you should install it by doing:
apt-get install ros-indigo-opencv3
The main directory should be placed inside a catkin workspace source-space (e.g.: ~catkin_ws/src). It can then be compiled simply by:
catkin_make
Or, if you are using catkin-tools
catkin build
NOTE: as previously mentioned, this version is not actively maintained and cannot provide support for it
The standalone version requires you to take care of installing the correct dependencies: OpenCV and Boost. If you are on Ubuntu, simply perform the following:
sudo apt-get install libopencv-dev libboost-all-dev
The installation process is really straightforward, as with any CMake based project. Inside the main directory do:
mkdir build
cd build
cmake -DDISABLE_ROS=ON ..
make
The code can be installed to the system by doing:
make install
Note the default CMake location is /usr/local
, but you can redefine this by invoking cmake in this way instead:
cmake -DDISABLE_ROS=ON -DCMAKE_INSTALL_PREFIX=/usr ..
Please refer to the wiki.
The development of this work was supported by EU within its Seventh Framework Programme project ICT-600623 ``STRANDS''. The Czech Republic and Argentina have given support through projects 7AMB12AR022, ARC/11/11 and 13-18316P.