Visual Servoing Platform  version 3.5.0
ViSP 3.5.0 main page

Introduction

ViSP [32] 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 https://visp.inria.fr

ViSP wiki is https://github.com/lagadic/visp/wiki

ViSP source code available on GitHub https://github.com/lagadic/visp

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: visp@inria.fr

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.

soft_archi_v6.png
ViSP modules and their optional dependencies

Download

From https://visp.inria.fr/download you can either download the latest stable release, a daily snapshot or the current development distribution using git.

Installation

Because ViSP is a multi platform library that works under Linux, OSX and Windows, to install ViSP you need the CMake configuration tool available from http://www.cmake.org. Furthermore, depending on your operation system and the capabilities (framegrabber, display, simulation, ...) you need, prior to install ViSP you may install third party libraries https://visp.inria.fr/software-architecture.

ViSP full installation procedure using CMake is detailed in the Installation from prebuild SDK tutorials and Installation from source tutorials. Getting started tutorials and documents in pdf are also available from https://visp.inria.fr/publications.

Tutorials for ViSP users

Here after you will find a list of tutorials that show the basic use of ViSP classes with a small first code.

ViSP iOS

ViSP for Java

ViSP for Android

ViSP for Unity

  • Github visp_unity project
    This project contains a wrapper between ViSP and Unity engine. Two Unity AR applications that show the usage of the wrapper are also available. This is the link to a project started during GSoC 2018.
  • ViSP for Unity introduction
    This is an overview that explains the interaction between ViSP and Unity engine.
  • How to build ViSP wrapper plugin for Unity
    This tutorial explains how to generate ViSPUnity plugin for your Unity project depending on your platform (MacOS, Ubuntu, Windows).
  • How to run Unity AR application based on ViSP
    This page shows how to track an AprilTag for an AR application and how to track a cube using the generic model-based tracker implemented in VISP.

Installation from prebuild SDK

Installation from source

Installation from cross-compiling

Installation from Docker images

  • Tutorial: Installation from Docker images
    In this tutorial you will be able to get a system up and running with Docker that has ViSP already installed. This tutorial is a good solution for people who have struggled with installation issues.

Getting started

Linear algebra operations

Image manipulation

Image processing

Camera calibration

Tracking

Detection

Computer vision

Visual servoing

Assignment algorithm

Bridges over other frameworks (OpenCV, MATLAB, ROS-1)

Other tools

Tutorials for ViSP developers

Here after you will find a list of tutorials that show how to to modify ViSP.

Contributing to ViSP source code

Extanding ViSP with contrib modules

Citing ViSP

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

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

@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}
}

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 Lagadic 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 either the french or the english forum.