/*!

\mainpage ViSP @VISP_VERSION@ main page

\tableofcontents

\section intro_sec Introduction

<p>ViSP \cite Marchand05b is a modular C++ library that allows fast development of visual
servoing applications. ViSP is developed and maintained by the Inria
<a href="https://team.inria.fr/rainbow/" target="_parent">Rainbow</a>
(former <a href="http://team.inria.fr/lagadic" target="_parent">Lagadic</a>) team located at <a
href="http://www.inria.fr/en/centre/rennes" target="_parent">Inria Rennes</a>.</p>

<p>ViSP official site is <a href="https://visp.inria.fr" target="_parent">https://visp.inria.fr</a></p>

<p>ViSP wiki is <a href="https://github.com/lagadic/visp/wiki" target="_parent">https://github.com/lagadic/visp/wiki</a></p>

<p>ViSP source code available on GitHub <a href="https://github.com/lagadic/visp" target="_parent">https://github.com/lagadic/visp</a></p>

<p>If you have any problems or find any bugs, please report them in
<a href="https://github.com/lagadic/visp/issues">the bug tracker</a>. If you may need help, please use the available <a href="http://gforge.inria.fr/forum/?group_id=397" target="_parent">forums</a>.<p>

It is also possible to contact ViSP main developers using: <a href="mailto:visp@inria.fr?subject=[visp]">visp@inria.fr</a>

\section arch_sec Software architecture

Since ViSP 3.0.0, we design a new modular software architecture where ViSP capabilities are grouped in several modules (core, io, gui, vision, …). In ViSP 3.1.0 we introduced a new module called imgproc. As a result, the user will find several shared or static libraries, one for each module. The following figure highlights the module dependencies and the third-party libraries that may be used by each module. The central module is the core module. All other modules depend on core.

\image html soft_archi_v6.png "ViSP modules and their optional dependencies"

\section hardware Supported Hardware

ViSP is interfaced with various robots, haptic devices, force-torque sensors, laser range finders, depth cameras, RGB cameras,
and motion capture system that you can use for learning visual-servoing or building robotics applications
on top of them based on ViSP. See \ref supported-material section.

\section software Supported Third-Party Libraries

To not reinvent the wheel, ViSP is interfaced with various third parties like OpenCV, MavSDK, libur_rtde...
See the complete list of \ref supported-third-parties.

\section download_sec Download

<p>From <a
href="https://visp.inria.fr/download" target="_parent">https://visp.inria.fr/download</a>
you can either download the latest stable release, a daily snapshot or the current
development distribution using git.</p>

\section install_sec Installation

<p>Because ViSP is a multi platform library that works under Linux, OSX
and Windows, to install ViSP from source you need the CMake configuration tool
available from <a href="http://www.cmake.org" target="_parent">http://www.cmake.org</a>.
Furthermore, depending on your operation system and the capabilities (framegrabber,
display, simulation, ...) you need, prior to install ViSP,
install \ref supported-third-parties. There is also this page
<a href="https://visp.inria.fr/software-architecture" target="_parent">https://visp.inria.fr/software-architecture</a>
that gives an overview of the third-parties used by each ViSP module.</p>

<p>ViSP full installation procedure explaining how to install CMake and third-parties is detailed in the \ref tutorial_install page. \ref tutorial_started and documents in pdf are also available from <a
href="https://visp.inria.fr/publications" target="_parent">https://visp.inria.fr/publications</a>.</p>

\section tutorial Tutorials

To learn ViSP, we propose a lot of tutorials that show the basic use of <a href="classes.html">ViSP classes</a> in \ref tutorial_users.

@VISP_MAINPAGE_EXTENSION@

\section Citing_ViSP Citing ViSP

Please cite <a href="https://inria.hal.science/inria-00351899">ViSP</a> in your publications if it helps your research:
```
@article{Marchand05b,
   Author = {Marchand, E. and Spindler, F. and Chaumette, F.},
   Title = {ViSP for visual servoing: a generic software platform with a wide class of robot control skills},
   Journal = {IEEE Robotics and Automation Magazine},
   Volume = {12},
   Number = {4},
   Pages = {40--52},
   Publisher = {IEEE},
   Month = {December},
   Year = {2005}
}
```
To cite the <a href="https://inria.hal.science/hal-01853972v1">generic model-based tracker</a>:
```
@InProceedings{Trinh18a,
   Author = {Trinh, S. and Spindler, F. and Marchand, E. and Chaumette, F.},
   Title = {A modular framework for model-based visual tracking using edge, texture and depth features},
   BookTitle = {{IEEE/RSJ Int. Conf. on Intelligent Robots and Systems, IROS'18}},
   Address = {Madrid, Spain},
   Month = {October},
   Year = {2018}
}
```
To cite <a href="https://hal.science/hal-01246370v1">pose estimation algorithms and hands-on survey</a> illustrated with <a href="https://github.com/lagadic/camera_localization">ViSP examples</a>:
```
@article{Marchand16a,
   Author = {Marchand, E. and Uchiyama, H. and Spindler, F.},
   Title = {Pose estimation for augmented reality: a hands-on survey},
   Journal = {IEEE Trans. on Visualization and Computer Graphics},
   Volume = {22},
   Number = {12},
   Pages = {2633--2651},
   Month = {December},
   Year = {2016}
}
```

\section Examples_sec Using ViSP

<p>ViSP C++ classes are organized in <a href="modules.html">modules</a> that may help the user during his project implementation.</p>

<p>From the <a href="examples.html">example</a> page, you will also find
examples showing how to use the library to acquire and display an
image, compute a camera pose, estimate an homography, servo a real
robot or a simulated one using a 2D, 2D half or 3D visual servoing
scheme, ...</p>

\section Howto_sec How to help ?

<p>ViSP library is an open source C++ library which is developed at <a href="http://www.inria.fr/en/centre/rennes">Inria</a>
by <a href="http://team.inria.fr/rainbow.html">Rainbow team</a>. If you enjoy using ViSP, you may contribute to the project
in different ways. This will motivate us to continue the efforts.

- You can submit a <a href="https://github.com/lagadic/visp/issues">bug report using the tracker</a>.
- You can submit patches or new functionalities using GitHub Pull Request mechanism.
- You can write new tutorials, new documentations or simply improve the existing documentation.
- If you just want to say you've been happy with the library, you can send us a postcard from your place, to the following address: <em>Inria Rennes Bretagne Atlantique, Lagadic team, Campus de Beaulieu, 35042 Rennes Cedex, FRANCE.</em>

<p>You can also ask for help using <a href="https://github.com/lagadic/visp/discussions">GitHub discussions</a>.

*/


/*******************************************
 * Module core
 *******************************************/
/*!
  \defgroup module_core core: Core module
  Core module content.
*/
/*!
  \ingroup module_core
  \defgroup group_core_camera Camera model
  Camera model.
*/
/*!
  \ingroup module_core
  \defgroup group_core_image Image manipulation
  Image manipulation, including I/O from image files or videos.
*/
/*!
  \ingroup module_core
  \defgroup group_core_math Mathematics
  Mathematics.
*/
/*!
  \ingroup group_core_math
  \defgroup group_core_robust Robust estimation
  Robust estimation.
*/
/*!
  \ingroup group_core_math
  \defgroup group_core_random Random number generator
  Random number generator.
*/
/*!
  \ingroup group_core_math
  \defgroup group_core_matrices Matrices and vectors
  Matrices and vectors.
*/
/*!
  \ingroup group_core_math
  \defgroup group_core_transformations Tranformations
  Transformations.
*/
/*!
  \ingroup group_core_math
  \defgroup group_core_math_tools Other tools
  Other tools.
*/
/*!
  \ingroup group_core_math
  \defgroup group_core_math_spline Spline
  Spline.
*/
/*!
  \ingroup group_core_math
  \defgroup group_core_kalman Kalman filter
  Kalman filter.
*/
/*!
  \ingroup module_core
  \defgroup group_core_tools Tools
  Tools.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_moments Image moments
  Image moments.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_gui Generic GUI
  Generic graphical user interface tools.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_trackers Generic tracker
  Generic tracker tools.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_geometry 2D and 3D geometry
  2D and 3D geometry.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_bridges Bridges over other frameworks
  Conversion from/to OpenCV...
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_threading Multi threading
  Capabilities to execute multiple threads concurrently and protect shared data thanks to mutexes.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_debug Debug and exceptions
  Debug and exceptions.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_com Communication
  Networking.
*/
/*!
  \ingroup group_core_com
  \defgroup group_core_com_ethernet Ethernet
  Ethernet communication either using TCPIP or UDP protocol.
*/
/*!
  \ingroup group_core_com
  \defgroup group_core_com_serial Serial
  Serial communication.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_histogram Histogram
  Histogram.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_files_io Files and directories
  Files and directories.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_time Time management
  Time management.
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_optim Optimization
  Optimization solvers for Linear Programs (simplex) and Quadratic Programs (active sets).
*/
/*!
  \ingroup group_core_tools
  \defgroup group_core_munkres Munkres Assignment Algorithm
  Munkres Assignment Algorithm.
*/

/*******************************************
 * Module io
 *******************************************/
/*!
  \defgroup module_io io: I/O module
  I/O module content.
*/
/*!
  \ingroup module_io
  \defgroup group_io_image Image I/O
  Image reading and writing.
*/
/*!
  \ingroup module_io
  \defgroup group_io_video Video I/O
  Video reading and writing.
*/
/*!
  \ingroup module_io
  \defgroup group_io_keyboard Keyboard I/O
  Keyboard management.
*/
/*!
  \ingroup module_io
  \defgroup module_io_cmd_parser Command line parser I/O
  Command line parser.
*/
/*!
  \ingroup module_io
  \defgroup group_io_parallel_port Parallel port I/O
  Parallel port I/O.
*/

/*******************************************
 * Module visual_features
 *******************************************/
/*!
  \defgroup module_visual_features visual_features: Visual features module
  Visual features module content.
*/
/*!
  \ingroup module_visual_features
  \defgroup group_visual_features Visual features
  Visual features.
*/
/*!
  \ingroup module_visual_features
  \defgroup group_visual_features_builder Visual features builder
  Visual features builder.
*/

/*******************************************
 * Module gui
 *******************************************/
/*!
  \defgroup module_gui gui: Graphical user interface module
  Graphical user interface module content.
*/
/*!
  \ingroup module_gui
  \defgroup group_gui_display Display device
  Display device interface.
*/
/*!
  \ingroup module_gui
  \defgroup group_gui_plotter Drawing of 2D or 3D graphics
  Drawing of 2D or 3D graphics.
*/
/*!
  \ingroup module_gui
  \defgroup group_gui_projection Forward projection
  Forward projection interface.
*/


/*******************************************
 * Module ar
 *******************************************/
/*!
  \defgroup module_ar ar: Augmented reality module
  Augmented reality module content.
*/
/*!
  \ingroup module_ar
  \defgroup group_ar_renderer Renderer
  Renderer interfaces.
*/
/*!
  \ingroup module_ar
  \defgroup group_ar_simulator Simulator
  Simulator interfaces.
*/

/*******************************************
 * Module detection
 *******************************************/
/*!
  \defgroup module_detection detection: Detection module
  Detection module content.
*/
/*!
  \ingroup module_detection
  \defgroup group_detection_barcode Bar code detection
  Bar code detection.
*/
/*!
  \ingroup module_detection
  \defgroup group_detection_face Face detection
  Face detection.
*/
/*!
  \ingroup module_detection
  \defgroup group_detection_tag Tag detection
  Tag detection.
*/
/*!
  \ingroup module_detection
  \defgroup group_detection_keypoint Keypoint detection and matching
  Keypoint detection and matching.
*/
/*!
  \ingroup module_detection
  \defgroup group_detection_mbt_object Model-based object detection
  Model-based object detection.
*/
/*!
  \ingroup module_detection
  \defgroup group_detection_dnn Deep learning object detection
  Deep learning object detection.
*/
/*******************************************
 * Module tracker
 *******************************************/
 /*!
   \defgroup module_tracker tracker: ViSP trackers
   ViSP trackers.
 */

/*******************************************
 * Module mbt
 *******************************************/
/*!
  \ingroup module_tracker
  \defgroup module_mbt mbt: Model-based tracker module
  Model-based tracker module content.
*/
/*!
  \ingroup module_mbt
  \defgroup group_mbt_trackers Trackers
  These are the classes that allow markerless model-based tracking.

  The only class that has to be used to design an application is the vpMbGenericTracker class. It allows:
  - to track an object observed by a single, a stereo camera or more cameras, a RGB-D camera
  - to consider moving-edges, keypoints or depth as visual features or a combination of these visual features.

  The following classes that allow to track an object on a single image continue to be maintained but should no more be used since we provide a more generic class with vpMbGenericTracker:
  - vpMbEdgeTracker
  - vpMbKltTracker
  - vpMbEdgeKltTracker
*/
/*!
  \ingroup module_mbt
  \defgroup group_mbt_features Features
  Model-based trackers features.
*/
/*!
  \ingroup module_mbt
  \defgroup group_mbt_faces Faces management
  Faces management including visibility.
*/
/*!
  \ingroup module_mbt
  \defgroup group_mbt_xml_parser XML parsers
  XML parsers dedicated to model-based trackers.
*/
/*******************************************
 * Module robot
 *******************************************/
/*!
  \defgroup module_robot robot: Robot module
  Robot module content.
*/
/*!
  \ingroup module_robot
  \defgroup group_robot_real Real robots
  Real robots interfaces.
*/
/*!
  \ingroup group_robot_real
  \defgroup group_robot_real_gantry Gantry robot
  Afma6 gantry robot interfaces.
*/
/*!
  \ingroup group_robot_real
  \defgroup group_robot_real_cylindrical Cylindrical robot
  Afma4 cylindrical robot interfaces.
*/
/*!
  \ingroup group_robot_real
  \defgroup group_robot_real_unicycle Unicycle robot
  Pioneer P3DX unicycle robot interfaces.
*/
/*!
  \ingroup group_robot_real
  \defgroup group_robot_real_ptu Pan-tilt unit
  Pan-tilt unit interfaces.
*/
/*!
  \ingroup group_robot_real
  \defgroup group_robot_real_arm Anthropomorphic arm
  Anthropomorphic arm interfaces.
*/
/*!
  \ingroup group_robot_real
  \defgroup group_robot_real_template New robot interface (template)
  Template for users that want to integrate their own real-robot.
*/
/*!
  \ingroup group_robot_real
  \defgroup group_robot_real_drone Drone
  Flying robot interfaces.
*/

/*!
  \ingroup module_robot
  \defgroup group_robot_haptic Haptic devices
  Haptic devices interfaces.
*/
/*!
  \ingroup module_robot
  \defgroup group_robot_simu Robot simulation
  Simulated robots interfaces.
*/
/*!
  \ingroup group_robot_simu
  \defgroup group_robot_simu_gantry Gantry robot simulation
  Gantry robot interfaces.
*/
/*!
  \ingroup group_robot_simu
  \defgroup group_robot_simu_arm Anthropomorphic arm simulation
  Anthropomorphic arm interfaces.
*/
/*!
  \ingroup group_robot_simu
  \defgroup group_robot_simu_unicycle Unicycle robot simulation
  Pioneer P3DX unicycle robot interfaces.
*/
/*!
  \ingroup group_robot_simu
  \defgroup group_robot_simu_camera Free flying camera simulation
  Free flying camera interfaces.
*/
/*!
  \ingroup module_robot
  \defgroup group_robot_image_simu Image simulation
  Image simulation.
*/

/*******************************************
 * Module sensor
 *******************************************/
/*!
  \defgroup module_sensor sensor: Sensor module
  Sensor module content. It provides bridges over drivers to acquire data from some sensors.
*/
/*!
  \ingroup module_sensor
  \defgroup group_sensor_laserscanner Laser scanner
  Laser scanner interfaces.
*/
/*!
  \ingroup module_sensor
  \defgroup group_sensor_camera Camera
  Camera interfaces.
*/
/*!
  \ingroup module_sensor
  \defgroup group_sensor_rgbd RGB-D sensor
  RGB-D sensor interfaces.
*/
/*!
  \ingroup module_sensor
  \defgroup group_sensor_ft Force/Torque sensor
  Force/Torque sensor interfaces.
*/
/*!
  \ingroup module_sensor
  \defgroup group_sensor_mocap Motion capture
  Motion capture interfaces.
*/
/*******************************************
 * Module tt
 *******************************************/
/*!
  \ingroup module_tracker
  \defgroup module_tt tt: Template tracker module
  Template tracker module content.
*/
/*!
  \ingroup module_tt
  \defgroup group_tt_tracker Trackers
  Classes dedicated to template tracking.
*/
/*!
  \ingroup module_tt
  \defgroup group_tt_warp Warping function
  Classes that implement warping functions that are estimated by the template trackers.
*/
/*!
  \ingroup module_tt
  \defgroup group_tt_tools Tools
  Tools used by template trackers.
*/
/*******************************************
 * Module tt_mi
 *******************************************/
 /*!
  \ingroup module_tracker
  \defgroup module_tt_mi tt_mi: Template tracker based on mutual information module
  Template tracker based on mutual information module content. This module is an
  extension of \ref module_tt where mutual information cost function is introduced.
*/
/*!
  \ingroup module_tt_mi
  \defgroup group_tt_mi_tracker Trackers
  Classes dedicates to template tracking with mutual information cost function.
*/
/*******************************************
 * Module me
 *******************************************/
 /*!
  \ingroup module_tracker
  \defgroup module_me me: Moving-edges tracker module
  Moving-edges tracker module.
*/
/*******************************************
 * Module blob
 *******************************************/
 /*!
  \ingroup module_tracker
  \defgroup module_blob blob: Blob tracker module
  Blob tracker module.
*/
/*******************************************
 * Module klt
 *******************************************/
 /*!
  \ingroup module_tracker
  \defgroup module_klt klt: Kanade Lucas tracker module
  Kanade Lucas tracker module.
*/
/*******************************************
 * Module blob
 *******************************************/
 /*!
  \ingroup module_tracker
  \defgroup module_dnn_tracker dnn_tracker: Deep learning tracker module
  Deep learning tracker module.
*/
/*******************************************
 * Module vision
 *******************************************/
 /*!
  \defgroup module_vision vision: Computer vision module
  Computer vision module content.
*/
/*!
  \ingroup module_vision
  \defgroup group_vision_calib Camera calibration
  Camera calibration algorithms.
*/
/*!
  \ingroup module_vision
  \defgroup group_vision_homography Homography estimation
  Homography estimation algorithms.
*/
/*!
  \ingroup module_vision
  \defgroup group_vision_pose Pose estimation
  Pose estimation algorithms.
*/
/*!
  \ingroup module_vision
  \defgroup group_vision_keypoints Keypoints detection, matching and classifiers
  Keypoints detection and matching algorithms but also classifiers.
*/
/*******************************************
 * Module vs
 *******************************************/
 /*!
  \defgroup module_vs vs: Visual servoing module
  Visual servoing module content.
*/
/*!
  \ingroup module_vs
  \defgroup group_task Task and control laws
  Classes used to define task and control laws.
*/
