vtec_ros repository

Repository Summary

Checkout URI https://github.com/lukscasanova/vtec_ros.git
VCS Type git
VCS Version master
Last Updated 2019-04-25
Dev Status UNMAINTAINED
Released UNRELEASED

Packages

Name Version
vtec_msgs 0.1.0
vtec_ros 0.1.0
vtec_tracker 0.1.0

README

VisioTec ROS Packages

ROS packages developed at the VisioTec research group, CTI Renato Archer, Brazil. Further information about this group can be found here.

Video Examples

Click on the thumbnails to watch the videos on YouTube.

  • Intensity-based visual tracking with full 8-DoF homography

YouTube

  • Robust intensity-based visual tracking with full 8-DoF homography and occlusion handling

YouTube

Documentation and Citing

The technical report available here describes the underlying algorithm and its working principles. If you use this software, please cite the technical report using:

@TechReport{nogueira2019,
  author = {Lucas Nogueira and Ely de Paiva and Geraldo Silveira},
  title  = {Visio{T}ec robust intensity-based homography optimization software},
  number = {CTI-VTEC-TR-01-19},
  institution = {CTI},
  year = {2019},
  address = {Brazil}
}

Installation

These packages were tested both on ROS Kinetic with Ubuntu 16.04, and on ROS Melodic with Ubuntu 18.04.

Dependencies

Install the usb_cam driver from ROS repositories.

sudo apt-get install ros-[kinetic|melodic]-usb-cam

Build

Setup a ROS workspace.

mkdir -p ~/catkin_ws/src

Install the VisioTec Library. It is a standalone cpp library, non-ROS.

cd ~/catkin_ws/src
git clone https://github.com/lukscasanova/vtec.git
cd vtec
mkdir build
cd build
cmake ..
make

Install the ROS packages

cd ~/catkin_ws/src
git clone https://github.com/lukscasanova/vtec_ros.git
cd ~/catkin_ws
catkin_make
source devel/setup.bash

Nodes

ibgho_tracker_node

Tracks a planar object in an image sequence.

Subscribed Topics

The incoming image stream from the camera.

Published Topics

The image stream annotaded with the tracked image region and the score.

The warped image patch from the image stream, that tries to match to the reference image patch.

The reference template extracted from the reference image file.

Information about the tracking, including the estimated homography and the quality score.

Parameters

  • image_topic (string, default: "usb_cam/image_raw")

The name of the image input topic.

  • bbox_pos_x (int, default: 200)

The x coordinate of the upper left corner of the region of interest in the reference image.

  • bbox_pos_y (int, default: 150)

The y coordinate of the upper left corner of the region of interest in the reference image.

  • bbox_size_x (int, default: 200)

The length in pixels of the region of interest along the x direction.

  • bbox_size_x (int, default: 200)

The length in pixels of the region of interest along the y direction.

  • max_nb_iter_per_level (int, default: 5)

Maximum number of optimization iterations per pyramid level.

  • max_nb_pyr_level (int, default: 2)

Maximum number of pyramids levels.

  • sampling_rate (double, default: 1.0)

The sampling rate used to sample points used in the optimization process. 1.0 means 100% of the points are used.

  • homography_type (string, default: "full")

Specifies the type of homography to be considered by the optimization algorithm. The options are: "full", "affine" and "stretch".

  • robust_flag (bool, default: "false")

    Set this to true to enable robust mode. This will try to detect partial occlusions on the current image and discard that information from the estimation procedure.

Usage

Running with a dataset

Newspaper Dataset

Download the dataset from here: newspaper dataset

Open two terminal windows, and launch in the first one the tracker node with:

roslaunch vtec_tracker tracker.launch

In the other terminal, navigate to the directory where you downloaded the dataset, decompress and play the bagfile with:

rosbag decompress vtec_test_tracker.bag
rosbag play vtec_test_tracker.bag

Now you should see in RViz the tracking process using the default parameters from the launch file.

Theater Dataset

Download the dataset from here: theater dataset

Open two terminal windows, and launch in the first one the tracker node with:

roslaunch vtec_tracker tracker.launch config_file:=config_theater.yaml

In the other terminal, navigate to the directory where you downloaded the dataset, decompress and play the bagfile with:

rosbag decompress vtec_tracker_theater.bag
rosbag play vtec_tracker_theater.bag

Now you should see in RViz the tracking process using the default parameters from the launch file.

Occlusion Dataset

Download the dataset from here: occlusion dataset

Open two terminal windows, and launch in the first one the tracker node with:

roslaunch vtec_tracker tracker.launch config_file:=config_robust.yaml

In the other terminal, navigate to the directory where you downloaded the dataset, decompress and play the bagfile with:

rosbag decompress vtec_occlusion.bag
rosbag play vtec_occlusion.bag

Now you should see in RViz the tracking process using the parameters from the launch file.

Running from a live camera

Open a terminal window and launch the tracker node:

roslaunch vtec_tracker tracker_live.launch

A Rviz window will pop-up with the camera images. In the terminal window where you issued the roslaunch command, press the S key to start tracking. This will select a bounding box in the current frame to be tracked. You can press S again anytime to restart the tracking process.

If you want to enable the robust to unknown occlusion mode, use the following command instead:

roslaunch vtec_tracker tracker_live_occlusion.launch 

Resources

Acknowledgment ##

This work was supported in part by the CAPES under Grant 88887.136349/2017-00, in part by the FAPESP under Grant 2017/22603-0, and in part by the InSAC (CNPq under Grant 465755/2014-3 and FAPESP under Grant 2014/50851-0).

Bugs & Feature Requests

Please report bugs and request features using the Issue Tracker.