/*! \page supported-third-parties Supported Third-Party Libraries

Here you will find a list of third-parties libraries that could be installed to extend ViSP capabilities.

\section soft_vision Computer Vision

These are the optional computer vision 3rd-parties supported by ViSP.

\subsection soft_vision_opencv OpenCV

We highly recommend to install OpenCV, one of the optional 3rd parties supported by ViSP \ref module_core, \ref module_io,
\ref module_gui, \ref module_detection, \ref module_klt, \ref module_vision and \ref module_mbt modules.

ViSP uses OpenCV in order to provide vpImage to cv::Mat image converters (see vpImageConvert class), an vpImage renderer
(see vpDisplayOpenCV class), as well as a  KLT keypoint tracker (see vpKltOpencv class), and keypoint point matching
classes (vpKeyPoint class).

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install libopencv-dev
\endverbatim

- <b>Fedora, RedHat or CentOS installation</b>
\verbatim
$ su -c "yum install opencv-devel"
\endverbatim

- <b>Mac OSX installation</b>
\verbatim
$ brew install opencv
\endverbatim

- <b>Windows installation with Visual Studio C++</b><br>
  Depending your Visual Studio version and Windows version, we propose a set of tutorials that you may follow
  - \ref install_win10_msvc14_3rdparty_opencv when using Visual Studio C++ 2015 (vc14) on Windows 10
  - \ref install_win10_msvc15_3rdparty_opencv when using Visual Studio C++ 2017 (vc15) on Windows 10
  - \ref install_win10_msvc16_3rdparty_opencv when using Visual Studio C++ 2019 (vc16) on Windows 10
  - \ref install_win10_msvc17_3rdparty_opencv when using Visual Studio C++ 2022 (vc17) on Windows 10
  - \ref install_win11_msvc17_3rdparty_opencv when using Visual Studio C++ 2022 (vc17) on Windows 11

- <b>Windows installation with MinGW</b><br>
  Depending your Windows version, we propose a set of tutorials that you may follow
  - \ref install_win10_mingw_3rdparty_opencv when using MinGW on Windows 10
  - \ref install_win11_mingw_3rdparty_opencv when using MinGW on Windows 11

\section soft_linear_algebra Linear Algebra

These are the optional 3rd-parties supported by ViSP for linear algebra operations.

Note that installing one of the following third-parties dedicated to linear algebra can speed up operations on matrices.
See \ref linear-algebra-which section to identify section to identify the best 3rd-party for your application.

\subsection soft_linear_algebra_mkl Intel Math Kernel Library (MKL)

Installation instructions are provided in \ref tutorial-basic-linear-algebra.

\subsection soft_linear_algebra_openblas OpenBLAS

Installation instructions are provided in \ref tutorial-basic-linear-algebra.

\subsection soft_linear_algebra_gsl Gnu Scientic Library (GSL)

Installation instructions are provided in \ref tutorial-basic-linear-algebra.

\subsection soft_linear_algebra_netlin Netlib

Installation instructions are provided in \ref tutorial-basic-linear-algebra.

\subsection soft_linear_algebra_atlas Atlas

Installation instructions are provided in \ref tutorial-basic-linear-algebra.

\subsection soft_linear_algebra_eigen3 Eigen3

Eigen3 is used as an alternative to Blas/Lapack for linear algebra operations in ViSP.

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install libeigen3-dev
\endverbatim

- <b>MacOS installation</b>
\verbatim
$ brew install eigen
\endverbatim

- <b>Windows installation</b><br>
  See \ref install_win10_msvc17_3rdparty_eigen installation instructions

\section soft_image_io Image I/O

These are the optional 3rd-parties supported by ViSP in \ref module_io for image I/O operations.

\subsection soft_image_io_libjpeg libjpeg

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install libjpeg-dev
\endverbatim

- <b>Fedora, RedHat or CentOS installation</b>
\verbatim
$ su -c "yum install libjpeg-devel"
\endverbatim

\subsection soft_image_io_libpng libpng

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install libpng-dev
\endverbatim

- <b>Fedora, RedHat or CentOS installation</b>
\verbatim
$ su -c "yum install libpng-devel"
\endverbatim

\section soft_ar 3D Rendering and Augmented Reality

These are the optional 3rd-parties supported by ViSP in \ref module_ar for 3D Rendering and Augmented Reality.

\subsection soft_ar_Ogre3D Ogre3D

- <b>Ubuntu or debian installation since Ubuntu 24.04</b>
\code{.sh}
$ sudo apt-get install libogre-1.12-dev libois-dev
\endcode
- <b>Ubuntu or debian installation for Ubuntu 22.04 or before</b>
\code{.sh}
$ sudo apt-get install libogre-1.9-dev libois-dev
\endcode
- <b>Fedora or RedHat installation</b>
\code{.sh}
$ su -c "yum install ogre-devel ogre-samples ois-devel"
\endcode
- <b>Windows SDK (MSVC)</b><br>
  See \ref tutorial-ogre-install-windows instructions.

\subsection soft_ar_Panda3D Panda3D

Panda3D installation instructions are provided in \ref tutorial-panda3d.
- <b>\ref tutorial-panda3d-install-ubuntu</b>

- <b>\ref tutorial-panda3d-install-macos</b>

- <b>\ref tutorial-panda3d-install-windows</b>

\subsection soft_ar_Coin3D Coin3D

[Coin3D](https://www.coin3d.org/) is one of the optional 3rd parties supported by ViSP \ref module_ar
and by \ref module_mbt.

In ViSP, Coin3D brings the following capabilities:
- model-based tracker supports VRML CAD model as input. If you are only interested in this feature, you don’t need
  to install SoQT, SoWin or SoXt libraries.
- simulation or augmented reality capabilities (see vpSimulator and vpAR classes).
\note Using Coin3D for simulation or augmented reality throw vpSimulator or vpAR is deprecated. You should rather
use Panda3D to this end, see \ref tutorial-panda3d.

- <b>Ubuntu or debian installation</b>
\code{.sh}
$ sudo apt-get install libcoin-dev
\endcode

\section soft_robot Robot Control

The following optional third-parties are used in \ref module_robot to enable the robot arms usage supported by ViSP.

\subsection soft_robots_ur ur_rtde C++ interface

[ur_rtde C++ interface](https://sdurobotics.gitlab.io/ur_rtde/) is an optional 3rd party that you can install to control
\ref material_robots_ur thanks to vpRobotUniversalRobots class.

Installation instructions are given in \ref ur_prereq_ur_rtde section.

There are 2 tutorials that explain how to control an Universal Robot with ViSP: \ref tutorial-universal-robot-ibvs
and \ref tutorial-universal-robot-pbvs.

\subsection soft_robots_libfranka libfranka

[libfranka](https://frankaemika.github.io/docs/libfranka.html) is the SDK that allows to control the Franka Panda
robot in its research configuration. Installing this third-party allows to control a Panda robot thanks to
vpRobotFranka class.

- <b>Ubuntu installation</b><br>
  Installation instructions are provided in \ref franka_prereq_libfranka section.
- <b>Windows installation</b><br>
  There is also the possibility to install `libfranka` under Windows following \ref franka_prereq_libfranka_0_9_2_win
  installation instructions.

There are also 2 tutorials that may be useful to start with this robot in ViSP: \ref tutorial-franka-ibvs
and \ref tutorial-franka-pbvs. If you want to simulate this robot using ViSP and ROS
there is also this other tutorial: \ref tutorial-franka-sim.

\subsection soft_robots_kinova Kinova Jaco Gen2 SDK

All the [Kinova](https://assistive.kinovarobotics.com/) assistive robotic arms are supported by ViSP using vpRobotKinova,
an interface over Kinova Jaco Gen2 SDK that allows to control Gen2 4, 6 and 7 DoF arm.

Installation instructions are provided for
<a href="tutorial-install-ubuntu.html#install_ubuntu_3rdparty_jaco">Ubuntu</a>
and <a href="tutorial-install-win10-msvc17.html#install_win10_msvc17_3rdparty_jaco">Windows</a>.

\subsection soft_robots_flir_ptu FLIR PTU SDK

All the [FLIR](https://flir.com/) Pan Tilt Units are supported by ViSP using vpRobotFlirPtu class,
an interface over FLIR PTU SDK.

Installation instructions are provided in \ref flir_ptu_prereq_ptu_sdk section.

The \ref tutorial-flir-ptu-vs could be also useful.

\subsection soft_robots_bebop2 ARDroneSDK3

The Parrot Bebop2 drone is supported by ViSP using vpRobotBebop2,
an interface over Parrot [ARDroneSDK3](https://developer.parrot.com/docs/SDK3/).

Installation instructions are provided \ref bebop2_arsdk3_ubuntu and \ref bebop2_arsdk3_osx.

The \ref tutorial-bebop2-vs could be also useful.

\subsection soft_robots_aria Aria

[Aria](https://github.com/reedhedges/AriaCoda) is the third-party that allows to control a Pioneer P3DX through vpRobotPioneer class.

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install libaria-dev
\endverbatim

- Installation from source instructions are provided [here](https://github.com/reedhedges/AriaCoda).

\subsection soft_robots_mavsdk MavSDK/MavLink

The [MavLink](https://mavlink.io/en/) protocol is supported by ViSP to communicate with drones or small mobile robots
equipped with a Pixhawk. To this end you need to install [MavSDK](https://mavsdk.mavlink.io/main/en/index.html) 3rd party library.

Installation instructions are provided in \ref pixhawk_prereq_software section.

The \ref tutorial-pixhawk-vs could be also useful.

\section soft_ft Force/Torque Interfaces

These are the optional 3rd-parties supported by ViSP in \ref module_sensor to interface F/T devices.

\subsection soft_ft_comedi Comedi

If you have an [ATI F/T](https://www.ati-ia.com/products/ft/ft_ModelListing.aspx) sensor you can use vpForceTorqueAtiSensor
class to get access to the measurements. This wrapper uses [Comedi](http://www.comedi.org) 3rd party.

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install libcomedi-dev
\endverbatim

- <b>Fedora, RedHat or CentOS installation</b>
\verbatim
$ su -c "yum install comedilib-devel"
\endverbatim

\section soft_camera_depth Depth Camera SDK

These are the optional 3rd-parties supported by ViSP in \ref module_sensor to interface depth cameras.

\subsection soft_camera_depth_librealsense librealsense

All Intel Realsense depth camera devices are supported in ViSP thanks to vpRealSense2 class, a wrapper over
[librealsense](https://github.com/IntelRealSense/librealsense).

- Ubuntu or debian \ref install_ubuntu_3rdparty_realsense installation instructions
- MacOS \ref install_brew_3rdparty_realsense installation instructions
- Windows 10 \ref install_win10_msvc17_3rdparty_realsense installation instructions

\subsection soft_camera_depth_structure Occipital Structure SDK

All [Occipital](https://structure.io/) devices are supported in ViSP thanks to vpOccipitalStructure class, a wrapper over
[Occipital Structure SDK](https://developer.structure.io/sdk/).

- Ubuntu or debian \ref install_ubuntu_3rdparty_occipital_structure installation instructions
- MacOS \ref install_brew_3rdparty_occipital_structure installation instructions
- Windows 10 \ref install_win10_msvc16_3rdparty_occ_structure installation instructions

\subsection soft_camera_depth_libfreenect libfreenect

If you have a Microsoft Kinect 1, you can use vpKinect class to get data. This class requires `libfreenect` 3rd party.

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install libfreenect-dev
$ sudo adduser $USER video
\endverbatim

- <b>MacOS installation</b>
\verbatim
$ brew install libfreenect
\endverbatim

- See older installation instructions provided [here](https://visp.inria.fr/3rd_freenect).

\section soft_camera Camera SDK

These are the optional 3rd-parties supported by ViSP in \ref module_sensor to interface RGB cameras.

\subsection soft_camera_ueye uEye SDK

Industrial cameras from [IDS](https://en.ids-imaging.com) are also supported in ViSP thanks to vpUeyeGrabber class, a wrapper over uEye SDK.

- Ubuntu or debian \ref install_ubuntu_3rdparty_ueye installation instructions
- Windows 10 \ref install_win10_msvc17_3rdparty_ueye installation instructions

\subsection soft_camera_pylon Pylon SDK

Industrial cameras from [Basler](https://en.ids-imaging.com) are also supported in ViSP thanks to vpPylonGrabber class,
a wrapper over [Pylon SDK](https://www.baslerweb.com/en/downloads/software-downloads/).

- Ubuntu or debian \ref install_ubuntu_3rdparty_pylon installation instructions
- MacOS \ref install_brew_3rdparty_pylon installation instructions
- Windows 10 \ref install_win10_msvc17_3rdparty_pylon installation instructions

\subsection soft_camera_flycapture Flycapture SDK

Industrial cameras from [FLIR](https://www.flir.com) are supported in ViSP thanks to vpFlyCaptureGrabber class,
a wrapper over [FlyCapture SDK](https://www.flir.com/support-center/iis/machine-vision/downloads/spinnaker-sdk-flycapture-and-firmware-download/).

- Ubuntu or debian \ref install_ubuntu_3rdparty_flycapture installation instructions
- Windows 10 \ref install_win10_msvc17_3rdparty_flycapture installation instructions

\subsection soft_camera_libdc1394 libdc1394

Generic firewire 1394 cameras are supported in ViSP using vp1394TwoGrabber class after installing `libdc1394` 3rd party.

- <b>Since Ubuntu 20.04 or Debian 11</b>
\verbatim
$ sudo apt-get install libdc1394-dev
\endverbatim

- <b>On older Ubuntu or Debian distros</b>
\verbatim
$ sudo apt-get install libdc1394-22-dev
\endverbatim

\subsection soft_camera_v4l Video 4 Linux (v4l)

Cameras compatible with Video 4 Linux  (webcam, laptop embedded camera) are supported in ViSP using vpV4l2Grabber
class after installing libv4l 3rd party

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install libv4l-dev
\endverbatim

\section soft_mocap Motion Capture SDK

\subsection soft_mocap_qualisys Qualisys SDK

If you have the [Qualisys](https://www.qualisys.com) Motion Capture System you can stream data using vpMocapQualisys class,
a wrapper over [qualisys_cpp_sdk](https://github.com/qualisys/qualisys_cpp_sdk).

- Ubuntu or debian \ref install_ubuntu_3rdparty_qualisys installation instructions
- MacOS \ref install_brew_3rdparty_qualisys installation instructions
- Windows 10 \ref install_win10_msvc17_3rdparty_qualisys installation instructions

\subsection soft_mocap_vicon Vicon SDK

If you have rather the [Vicon](https://www.vicon.com) Motion Capture System you can stream data using vpMocapVicon class,
a wrapper over [Vicon Datastream SDK](https://www.vicon.com/software/datastream-sdk/).

- Ubuntu or debian \ref install_ubuntu_3rdparty_vicon installation instructions
- MacOS \ref install_brew_3rdparty_vicon installation instructions
- Windows 10 \ref install_win10_msvc17_3rdparty_vicon installation instructions

\section soft_tool Toolbox

These are the optional 3rd-parties supported by ViSP that can bring helpful tools.

\subsection soft_tool_json JSON for modern C++

Since ViSP 3.6.0 we introduced JSON serialization capabilities that may be helpful
to load and save parameters from a YAML file.

To this end, <a href="https://json.nlohmann.me/">JSON for modern C++</a> is supported by ViSP
and can be used to load and save JSON representations of ViSP objects.

Thus installing this 3rd-party allows serialization of vpMbGenericTracker, vpCameraParameters,
vpPoseVector, vpHomogeneousMatrix, and vpPolygon3D objects to load/save internal data or settings
from/to JSON files.

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install nlohmann-json3-dev
\endverbatim

- <b>Fedora installation</b>
\verbatim
$ sudo dnf install nlohmann-json-devel
\endverbatim

- <b>CentOS installation</b>
\verbatim
$ sudo yum install json-devel
\endverbatim

- <b>MacOS installation</b>
\verbatim
$ brew install nlohmann-json
\endverbatim

- <b>Windows installation</b>

  To install JSON on windows, follow \ref install_win11_msvc17_3rdparty_json installation instructions.

- <b>Installation from source</b>

  If the package is not available for your distribution, you can install JSON from source:
\verbatim
$ cd $VISP_WS/3rdparty
$ git clone https://github.com/nlohmann/json.git
$ cd json && mkdir build && cd build
$ cmake ..
$ make -j$(nproc) && sudo make install
\endverbatim

\subsection soft_tool_pcl Point Cloud Library (PCL)

[Point Cloud Library](https://pointclouds.org/) can optionnally be installed to extend vpRealSense2 capabilities
to acquire a point cloud. It could be also used to consider a point cloud as depth feature in the generic
model-based tracker when using vpMbGenericTracker class. If you don't have an Intel Realsense Depth camera
(SR300 or D400 series) or if you are not interested in model-based tracking using depth as feature, installing
PCL is not recommended.

- <b>Ubuntu or debian installation</b>
\verbatim
$ sudo apt-get install libpcl-dev
\endverbatim

- <b>Fedora installation</b>
\verbatim
$ sudo dnf install pcl-devel
\endverbatim

- <b>MacOS installation</b>
\verbatim
$ brew install pcl
\endverbatim
  On MacOS, if ViSP is not able to detect PCL, follow instructions described in
  \ref install_brew_issues_pcl_1_12_1 known issue.

- <b>Windows installation</b>

  To install PCL on windows, follow \ref install_win10_msvc17_3rdparty_pcl installation instructions.
*/
