Visual Servoing Platform  version 3.6.1 under development (2024-11-15)
Supported Third-Party Libraries

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

Computer Vision

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

OpenCV

We highly recommend to install OpenCV, one of the optional 3rd parties supported by ViSP core: Core module, io: I/O module, gui: Graphical user interface module, detection: Detection module, klt: Kanade Lucas tracker module, vision: Computer vision module and mbt: Model-based tracker module 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).

  • Ubuntu or debian installation
    $ sudo apt-get install libopencv-dev
    
  • Fedora, RedHat or CentOS installation
    $ su -c "yum install opencv-devel"
    
  • Mac OSX installation
    $ brew install opencv
    
  • Windows installation with Visual Studio C++
    Depending your Visual Studio version and Windows version, we propose a set of tutorials that you may follow
  • Windows installation with MinGW
    Depending your Windows version, we propose a set of tutorials that you may follow

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 Which BLAS/LAPACK 3rd-party for basic operations section to identify section to identify the best 3rd-party for your application.

Intel Math Kernel Library (MKL)

Installation instructions are provided in Tutorial: Basic linear algebra operations.

OpenBLAS

Installation instructions are provided in Tutorial: Basic linear algebra operations.

Gnu Scientic Library (GSL)

Installation instructions are provided in Tutorial: Basic linear algebra operations.

Netlib

Installation instructions are provided in Tutorial: Basic linear algebra operations.

Atlas

Installation instructions are provided in Tutorial: Basic linear algebra operations.

Eigen3

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

  • Ubuntu or debian installation
    $ sudo apt-get install libeigen3-dev
    
  • MacOS installation
    $ brew install eigen
    
  • Windows installation
    See Eigen3 3rd party installation instructions

Image I/O

These are the optional 3rd-parties supported by ViSP in io: I/O module for image I/O operations.

libjpeg

  • Ubuntu or debian installation
    $ sudo apt-get install libjpeg-dev
    
  • Fedora, RedHat or CentOS installation
    $ su -c "yum install libjpeg-devel"
    

libpng

  • Ubuntu or debian installation
    $ sudo apt-get install libpng-dev
    
  • Fedora, RedHat or CentOS installation
    $ su -c "yum install libpng-devel"
    

Robot Control

The following optional third-parties are used in robot: Robot module to enable the robot arms usage supported by ViSP.

ur_rtde C++ interface

ur_rtde C++ interface is an optional 3rd party that you can install to control Universal Robots thanks to vpRobotUniversalRobots class.

Installation instructions are given in Install ur_rtde 3rd party section.

There are 2 tutorials that explain how to control an Universal Robot with ViSP: Tutorial: IBVS with a robot from Universal Robots and Tutorial: PBVS with a robot from Universal Robots.

libfranka

libfranka is the SDK that allows to control the Franka Emika Panda robot in its research configuration. Installing this third-party allows to control a Panda robot thanks to vpRobotFranka class.

Installation instructions are provided in Install Franka library section.

There are also 2 tutorials that may be useful to start with this robot in ViSP: Tutorial: IBVS with Panda 7-dof robot from Franka Emika and Tutorial: PBVS with Panda 7-dof robot from Franka Emika. If you want to simulate this robot using ViSP and ROS there is also this other tutorial: Tutorial: FrankaSim a Panda 7-dof robot from Franka Emika simulator.

Kinova Jaco Gen2 SDK

All the Kinova 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 Ubuntu and Windows.

FLIR PTU SDK

All the FLIR Pan Tilt Units are supported by ViSP using vpRobotFlirPtu class, an interface over FLIR PTU SDK.

Installation instructions are provided in Install FLIR PTU SDK section.

The Tutorial: Visual servoing with FLIR Pan Tilt Unit could be also useful.

ARDroneSDK3

The Parrot Bebop2 drone is supported by ViSP using vpRobotBebop2, an interface over Parrot ARDroneSDK3.

Installation instructions are provided On Ubuntu and On Mac OSX.

The Tutorial: Visual-servoing with Parrot Bebop 2 drone could be also useful.

Aria

Aria is the third-party that allows to control a Pioneer P3DX through vpRobotPioneer class.

  • Ubuntu or debian installation
    $ sudo apt-get install libaria-dev
    
  • Installation from source instructions are provided here.

MavSDK/MavLink

The MavLink 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 3rd party library.

Installation instructions are provided in Software section.

The Tutorial: Image-based visual-servoing on a drone equipped with a Pixhawk could be also useful.

Force/Torque Interfaces

These are the optional 3rd-parties supported by ViSP in sensor: Sensor module to interface F/T devices.

Comedi

If you have an ATI F/T sensor you can use vpForceTorqueAtiSensor class to get access to the measurements. This wrapper uses Comedi 3rd party.

  • Ubuntu or debian installation
    $ sudo apt-get install libcomedi-dev
    
  • Fedora, RedHat or CentOS installation
    $ su -c "yum install comedilib-devel"
    

Depth Camera SDK

These are the optional 3rd-parties supported by ViSP in sensor: Sensor module to interface depth cameras.

librealsense

All Intel Realsense depth camera devices are supported in ViSP thanks to vpRealSense2 class, a wrapper over librealsense.

Occipital Structure SDK

All Occipital devices are supported in ViSP thanks to vpOccipitalStructure class, a wrapper over Occipital Structure SDK.

libfreenect

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

  • Ubuntu or debian installation
    $ sudo apt-get install libfreenect-dev
    $ sudo adduser $USER video
    
  • MacOS installation
    $ brew install libfreenect
    
  • See older installation instructions provided here.

Camera SDK

These are the optional 3rd-parties supported by ViSP in sensor: Sensor module to interface RGB cameras.

uEye SDK

Industrial cameras from IDS are also supported in ViSP thanks to vpUeyeGrabber class, a wrapper over uEye SDK.

Pylon SDK

Industrial cameras from Basler are also supported in ViSP thanks to vpPylonGrabber class, a wrapper over Pylon SDK.

Flycapture SDK

Industrial cameras from FLIR are supported in ViSP thanks to vpFlyCaptureGrabber class, a wrapper over FlyCapture SDK.

libdc1394

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

  • Since Ubuntu 20.04 or Debian 11
    $ sudo apt-get install libdc1394-dev
    
  • On older Ubuntu or Debian distros
    $ sudo apt-get install libdc1394-22-dev
    

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

  • Ubuntu or debian installation
    $ sudo apt-get install libv4l-dev
    

Motion Capture SDK

Qualisys SDK

If you have the Qualisys Motion Capture System you can stream data using vpMocapQualisys class, a wrapper over qualisys_cpp_sdk.

Vicon SDK

If you have rather the Vicon Motion Capture System you can stream data using vpMocapVicon class, a wrapper over Vicon Datastream SDK.

Toolbox

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

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, JSON for modern C++ 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.

  • Ubuntu or debian installation
    $ sudo apt-get install nlohmann-json3-dev
    
  • Fedora installation
    $ sudo dnf install nlohmann-json-devel
    
  • CentOS installation
    $ sudo yum install json-devel
    
  • MacOS installation
    $ brew install nlohmann-json
    
  • Windows installation

    To install JSON on windows, follow JSON 3rd party installation instructions.

  • Installation from source

    If the package is not available for your distribution, you can install JSON from source:

    $ 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
    

Point Cloud Library (PCL)

Point Cloud Library 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.

  • Ubuntu or debian installation
    $ sudo apt-get install libpcl-dev
    
  • Fedora installation
    $ sudo dnf install pcl-devel
    
  • MacOS installation
    $ brew install pcl
    
    On MacOS, if ViSP is not able to detect PCL, follow instructions described in Unable to build with pcl 1.12.1 known issue.
  • Windows installation

    To install PCL on windows, follow PCL 3rd party installation instructions.