Show EOL distros: 

vision_visp: visp | visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

visp_camera_calibration allows easy calibration of cameras using a customizable pattern.

vision_visp: visp | visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

visp_camera_calibration allows easy calibration of cameras using a customizable pattern.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

visp_camera_calibration allows easy calibration of cameras using a customizable pattern and ViSP library.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

visp_camera_calibration allows easy calibration of cameras using a customizable pattern and ViSP library.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

visp_camera_calibration allows easy calibration of cameras using a customizable pattern and ViSP library.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

visp_camera_calibration allows easy calibration of cameras using a customizable pattern and ViSP library.

Overview

visp_camera_calibration is a ROS package that allows a highly customisable camera calibration using calibration tools from the ViSP library avalaible from https://visp.inria.fr. The image feed used for calibration is a set of clearly distinguishible points. The planar disposition of the points is of no importance.

This package uses ViSP's camera model described in ViSP geometric transformation and objetcs manual and camera calibration capabilities described in ViSP computer vision algorithms manual. The output camera parameters are given in the sensor_msgs/CameraInfo format.

Supported hardware

visp_camera_calibration will work with any camera driver node satisfying the standard ROS camera interface. See the image_pipeline hardware requirements.

Installation

visp_camera_calibration is part of vision_visp stack.

  • To install visp_camera_calibration package run

    sudo apt-get install ros-$ROS_DISTRO-visp-camera_calibration
  • Or to install the complete stack run

    sudo apt-get install ros-$ROS_DISTRO-vision-visp

Tutorials

There are two tutorials:

  • A tutorial out-of-the-box demonstration tutorial using the experimental camera shipped with this package can be found here.

  • A tutorial that shows how to calibrate using an external camera can be found here.

Usage

Since the module is highly customisable, the paramaters are complex. A roslauch xml file is advisable.

Image processing and user interaction

The user has to select seed points to start calibration from. This requires an image processing initialisation interface module. This module needs to load several parameters:

  • 3D coordinates of at least four points the user is supposed to select to initialise the image processing
  • 3D coordinates of all points of the calibration pattern
  • tracking parameters used in image processing
  • behaviour of the interface. Set pause_at_each_frame to True if you're using the experimental camera shipped with this package. For any other ROS camera, set it to False.

   1 <node pkg="visp_camera_calibration" name="visp_camera_calibration_image_processing" type="visp_camera_calibration_image_processing">
   2       <!-- 3D coordinates of 4 points the user has to select to initialise the calibration process -->
   3       <rosparam param="selected_points_x">[0.03, 0.03, 0.09, 0.12]</rosparam>
   4       <rosparam param="selected_points_y">[0.03, 0.12, 0.12, 0.03]</rosparam>
   5       <rosparam param="selected_points_z">[0.00, 0.00, 0.00, 0.00]</rosparam>
   6 
   7       <!-- 3D coordinates of all points on the calibration pattern. In this example, points are planar -->
   8       <rosparam param="model_points_x">[0.0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.0, 0.03, 0.06, 0.09, 0.12, 0.15]</rosparam>
   9       <rosparam param="model_points_y">[0.0, 0.00, 0.00, 0.00, 0.00, 0.00, .03, 0.03, 0.03, 0.03, 0.03, 0.03, .06, 0.06, 0.06, 0.06, 0.06, 0.06, .09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.12,0.12, 0.12, 0.12, 0.12, 0.12, 0.15,0.15, 0.15, 0.15, 0.15, 0.15]</rosparam>
  10       <rosparam param="model_points_z">[0.0, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0, 0.00, 0.00, 0.00, 0.00,0.00]</rosparam>
  11 
  12       <!-- Tracking parameters used in image processing -->
  13       <param name="gray_level_precision" value="0.7" />
  14       <param name="size_precision" value="0.5" />
  15 
  16       <!-- Behaviour of the interface -->
  17       <param name="pause_at_each_frame" value="False" />
  18 </node>

Camera calibrator

You can run the calibrator without any parameters.

   1 <node pkg="visp_camera_calibration" name="visp_camera_calibration_calibrator" type="visp_camera_calibration_calibrator"/>

Experimental camera

For testing purposes, the package contains a camera satisfying the standard ROS camera interface. The camera reads a video or a sequence of images and is configured as follows:

   1 <node pkg="visp_camera_calibration" name="visp_camera_calibration_camera" type="visp_camera_calibration_camera">
   2         <param name="images_path" value="images/grid36-0%d.pgm" />

ROS API

visp_camera_calibration_image_processing

The image processing module subscribes to the image feed from a camera, displays it to the user in order to select the (four) points used to initialise the image processing. Then, it processes the images to extract every possible keypoint. Finally it publishes the processed data to a calibrator topic.

Subscribed Topics

image (sensor_msgs/Image)
  • raw image topic, feed from camera

Published Topics

point_correspondence (visp_camera_calibration/CalibPointArray)
  • array of 2D/3D point pairs used to calibrate the camera

Parameters

gray_level_precision (double, default: 0.7)
  • Gray level precision used to detect the dot boundaries in ]0, 1]. 1 means full precision, whereas values close to 0 show a very bad accuracy.
size_precision (double, default: 0.5)
  • Size precision of the dot in ]0, 1]. Used to test the validity of the dots that are detected in the image. 1 means that all the dots should have the same size, whereas values close to 0 allows variation in the dot size. To desactivate validity test set size_precision to 0.
pause_at_each_frame (bool, default: False)
  • If True, pauses the interface each time a new frame is recieved. Consequently, the user selects points at each frame. You should set this to True only with the experimental camera shipped with the package.
model_points_x (array)
  • List of x coordinates of the model points.
model_points_y (array)
  • List of y coordinates of the model points.
model_points_z (array)
  • List of z coordinates of the model points.
selected_points_x (array)
  • List of x coordinates of model 3D points corresponding to the user-selected points.
selected_points_y (array)
  • List of y coordinates of model 3D points corresponding to the user-selected points.
selected_points_z (array)
  • List of z coordinates of model 3D points corresponding to the user-selected points.
calibration_path (string)
  • Location of the ini file to write calibration configuration into.

visp_camera_calibration_calibrator

This node computes the camera calibration parameters and calls the sensor_msgs/SetCameraInfo service on the current camera. It produces a calibration.ini file that will be in your $HOME/.ros directory.

Subscribed Topics

point_correspondence (visp_camera_calibration/CalibPointArray)
  • array of 2D/3D point pairs used to calibrate the camera

Published Topics

point_correspondence (visp_camera_calibration/CalibPointArray)
  • array of 2D/3D point pairs used to calibrate the camera

Services Called

set_camera_info (sensor_msgs/SetCameraInfo)
  • Sets the camera info.

visp_camera_calibration_camera

This is an experimental camera node used for test purposes.

Published Topics

image (sensor_msgs/Image)
  • raw image topic, feed from camera

Services Called

calibrate (visp_camera_calibration/calibrate)
  • Get the camera parameters according to the chosen camera model, with or without distorsion and the size of the images.

Wiki: visp_camera_calibration (last edited 2016-06-20 13:15:38 by FabienSpindler)