Skip to content
forked from lrse/whycon

Vision-based external localization system. NOTE: not currently being developed

License

Notifications You must be signed in to change notification settings

anthonymiglio/whycon

 
 

Repository files navigation

WhyCon

A precise, efficient and low-cost localization system

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.

WhyCon example application (video) Scenario description
WhyCon applications -precise docking to a charging station (EU project STRANDS),
-fitness evaluation for self-evolving robots (EU proj. SYMBRION),
-relative localization of UAV-UGV formations (CZ-USA project COLOS),
-energy source localization in (EU proj REPLICATOR),
-robotic swarm localization (EU proj HAZCEPT).

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

How does it work ?

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.

Can I use it ?

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").


References

  1. T. Krajník, M. Nitsche et al.: External localization system for mobile robotics. International Conference on Advanced Robotics (ICAR), 2013. [bibtex].
  2. T. Krajník, M. Nitsche et al.: A Practical Multirobot Localization System. Journal of Intelligent and Robotic Systems (JINT), 2014. [bibtex].
  3. M. Nitsche, T. Krajník et al.: WhyCon: An Efficient, Marker-based Localization System. IROS Workshop on Open Source Aerial Robotics, 2015. [bibtex].
  4. J. Faigl, T. Krajník et al.: Low-cost embedded system for relative localization in robotic swarms. International Conference on Robotics and Automation (ICRA), 2013. [bibtex].

Installing WhyCon

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.

ROS

Only LTS versions are targeted. At the moment, Indigo and Kinetic are targeted.

Dependencies

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

Compilation

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

Standalone

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

Using WhyCon

Please refer to the wiki.


Acknowledgements

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.

About

Vision-based external localization system. NOTE: not currently being developed

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 80.6%
  • CMake 17.4%
  • TeX 1.5%
  • Ruby 0.5%