Show EOL distros: 

vision_visp: visp | visp_tracker

Package Summary

visp_tracker wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

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

Package Summary

visp_tracker wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

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

Package Summary

visp_tracker wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

Wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

Wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

Wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

Wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

Wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

Wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

Wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

vision_visp: visp_auto_tracker | visp_bridge | visp_camera_calibration | visp_hand2eye_calibration | visp_tracker

Package Summary

Wraps the ViSP moving edge tracker provided by the ViSP visual servoing library into a ROS package. This computer vision algorithm computes the pose (i.e. position and orientation) of an object in an image. It is fast enough to allow object online tracking using a camera.

Overview

This package wraps an object tracker provided by the ViSP library. The tracker provides the tracked object position with respect to the camera. It requires the object 3d model and the object initial pose.

ViSP box tracking

The package is composed of one node called tracker that does the tracking and two additional nodes client (that allows to set the initial pose by user mouse click) and viewer that allows to visualize the result of the tracking.

The tracker node tries to track the object as fast as possible but needs to be initialized using the client. The viewer can be used to monitor the tracking result.

Use cases

Reference

Roadmap

The package implementation is finished. Minor changes in the API may happen in the future but impact should be limited.

These features would be valuable contribution to this package:

  • Rely on AssImp to support COLLADA models (instead of ViSP based VRML loader).

  • Use RViz markers and API to support display directly in RViz.

Installation

visp_tracker is part of vision_visp stack.

  • To install visp_tracker package run

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

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

Features

This package objective is to provide the pose of an object (i.e. position and orientation) in a sequence of images knowing its 3d model and its initial pose. It also provides the pose covariance.

ROS API

Note: data is only published if there is at least one listener.

tracker

Main tracking node.

Subscribed Topics

~camera_prefix/camera_info (sensor_msgs/CameraInfo)
  • Camera calibration information, see the camera_calibration package for more details.
~camera_prefix/image_rect (sensor_msgs/Image)
  • Rectified image, see the camera_calibration package for more details.
object_position_hint (geometry_msgs/TransformStamped)
  • Estimation of the tracked object position. This is optional and allows automatic tracker restart if the tracking fails.

Published Topics

object_position (geometry_msgs/PoseStamped)
  • Tracking object pose (stamped).
object_position_covariance (geometry_msgs/PoseWithCovarianceStamped)
  • Tracking object pose with its associated covariance (stamped). You may want to use rviz_plugin_covariance to display this datatype in rviz (Fuerte+).
moving_edge_sites (visp_tracker/MovingEdgeSites)
  • Moving edge sites information (stamped). For debugging/monitoring purpose.
klt_points_positions (visp_tracker/KltPoints)
  • Position and id of the keypoints (stamped). For debugging/monitoring purpose.

Services

init_tracker (visp_tracker/Init)
  • Initialize the tracking by providing the model name, model path, initial object pose and moving edge settings.
tracking_meta_data (visp_tracker/TrackingMetaData)
  • Provides the current camera prefix, model name and model path.

Parameters

~camera_prefix (std_msgs/String)
  • Camera topics namespace ('image_rect' and 'camera_info' topics must be published in this namespace)
~first_threshold (float64)
  • What proportion of points should be valid to acccept an initial pose.
~lambda (float64)
  • Gain used to compute the control law.
~mask_size (int64)
  • Mask size (in pixel) used to compute the image gradient and determine the object contour.
~min_samplestep (float64)
  • Minimum allowed samplestep. Useful to specify a lower bound when the samplestep is changed.
~model_name (std_msgs/String)
  • Model name (without the .wrl filename extension)
~model_path (std_msgs/String)
  • Model database path. Uses the resource_retriever syntax to fetch remote models (i.e. package://, http://, etc.)
~mu1 (float64)
  • Minimum image contrast allowed to detect a contour.
~mu2 (float64)
  • Maximum image contrast allowed to detect a contour.
~n_mask (int64)
  • Number of masks applied to determine the object contour.
~n_total_sample (int64)
  • How many discretization points are used to track the feature.
~range (int64)
  • Maximum seek distance on both sides of the reference pixel.
~sample_step (int64)
  • Minimum distance in pixel between two discretization points.
~strip (int64)
  • How many pixels are ignored around the borders.
~threshold (float64)
  • Value used to determine if a moving edge is valid or not.
~aberration (float64)
  • Ignored.
~init_aberration (float64)
  • Ignored.
~compensate_robot_motion (bool, default: false)
  • If set to true, the robot movement will be used to help reliable tracking (experimental). For this feature to work, tf must provide the transformation between the world frame id and the camera.
~world_frame_id (string, default: /odom)
  • World frame name (see ~compensate_robot_motion).

Required tf Transforms

~world_frame_id<camera frame>
  • Robot movement (optional, see ~compensate_robot_motion).

Provided tf Transforms

<camera frame>visp_tracker
  • Object position w.r.t. the camera.

client

Command line tool used to decide which object to track and what is its initial pose.

Parameters

~camera_prefix (std_msgs/String)
  • Camera topics namespace ('image_rect' and 'camera_info' topics must be published in this namespace)
~tracker_prefix (std_msgs/String, default: tracker_mbt)
  • Namespace in which the tracker has been launched.
~model_path (std_msgs/String, default: $(find visp_tracker)/models)
  • Model location on the filesystem.
~model_name (std_msgs/String)
  • Model name. This parameter is mandatory when launching the client.

viewer

Monitoring tool.

Parameters

~tracker_prefix (std_msgs/String, default: /tracker_mbt)
  • Namespace in which the tracker has been launched.
~image_transport (string, default: raw)

Nodelets

This package provides both nodes and nodelet versions of the tracker, client and viewer.

They are respectively named:

  • visp_tracker/Tracker

  • visp_tracker/TrackerClient

  • visp_tracker/TrackerViewer

...and provide the same API than the equivalent nodes.

When the nodelet version is used, no-copy intraprocess publishing is used. See the nodelet documentation for more information.

An example launch file is also provided:

roslaunch visp_tracker tutorial-nodelet.launch

Note: even if a nodelet is available for the client and viewer, one should avoid running them in the same process than the vision pipeline to avoid crashing the whole pipeline if something goes wrong.

Launch file example

Here is a launch file which starts the tracker and client.

   1 <launch>
   2   <!-- you should first setup your camera grabbing/rectification nodes,
   3        see image_pipeline documentation. -->
   4 
   5   <!-- tracking node -->
   6   <node pkg="visp_tracker" type="tracker" name="tracker_mbt">
   7     <param name="camera_prefix" value="/wide_left/camera" />
   8   </node>
   9 
  10   <!-- starts the client while setting the camera input and the model
  11        which will be tracked -->
  12   <node pkg="visp_tracker" type="client" name="tracker_mbt_client">
  13     <param name="camera_prefix" value="/wide_left/camera" />
  14     <param name="model_name" value="laas-box" />
  15   </node>
  16 </launch>

   1 <launch>
   2   <!-- you should first setup your camera grabbing/rectification nodes,
   3        see image_pipeline documentation. -->
   4 
   5   <!-- tracking node -->
   6   <node pkg="visp_tracker" type="tracker" name="tracker_mbt">
   7     <param name="camera_prefix" value="/wide_left/camera" />
   8     <param name="tracker_type" value="mbt+klt" />
   9   </node>
  10 
  11   <!-- starts the client while setting the camera input and the model
  12        which will be tracked -->
  13   <node pkg="visp_tracker" type="visp_tracker_client" name="visp_tracker_mbt_client">
  14     <param name="camera_prefix" value="/wide_left/camera" />
  15     <param name="model_name" value="laas-box" />
  16     <param name="tracker_type" value="mbt+klt" />
  17   </node>
  18 </launch>

Report a bug

Use GitHub to report a bug or submit an enhancement.

Wiki: visp_tracker (last edited 2016-08-16 09:43:24 by FabienSpindler)