Visual Servoing Platform  version 3.6.0
ViSP 3.5.1 main page


ViSP [33] is a modular C++ library that allows fast development of visual servoing applications. ViSP is developed and maintained by the Inria Rainbow (former Lagadic) team located at Inria Rennes.

ViSP official site is

ViSP wiki is

ViSP source code available on GitHub

If you have any problems or find any bugs, please report them in the bug tracker. If you may need help, please use the available forums.

It is also possible to contact ViSP main developers using:

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.

ViSP modules and their optional dependencies

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 Supported Hardware section.

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 Supported Third-Party Libraries.


From you can either download the latest stable release, a daily snapshot or the current development distribution using git.


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 Furthermore, depending on your operation system and the capabilities (framegrabber, display, simulation, ...) you need, prior to install ViSP, install Supported Third-Party Libraries. There is also this page that gives an overview of the third-parties used by each ViSP module.

ViSP full installation procedure explaining how to install CMake and third-parties is detailed in the Installation page. Getting started and documents in pdf are also available from


To learn ViSP, we propose a lot of tutorials that show the basic use of ViSP classes in Tutorials.

Citing ViSP

Please cite ViSP in your publications if it helps your research:

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 generic model-based tracker:

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 pose estimation algorithms and hands-on survey illustrated with ViSP examples:

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}

Using ViSP

ViSP C++ classes are organized in modules that may help the user during his project implementation.

From the example 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, ...

How to help ?

ViSP library is an open source C++ library which is developed at Inria by Rainbow team. 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 bug report using the tracker.
  • 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: Inria Rennes Bretagne Atlantique, Lagadic team, Campus de Beaulieu, 35042 Rennes Cedex, FRANCE.

You can also ask for help using GitHub discussions.