Note: This tutorial assumes that you have completed the previous tutorials: ROS tutorials.
(!) Please ask about problems and questions regarding this tutorial on Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Fusing multiple measurements originating from the same object

Description: One object can generate multiple measurements at one time step. This can be the result of a poor object detection, but is also common in scenarios including multiple sensors or robots. This tutorial demonstrates the world model's ability to fuse multiple measurements with the same time stamp originating from the same object.

Tutorial Level: BEGINNER

Next Tutorial: Data association exploiting multiple object attributes


The goal of the wire meta package is fusing measurements into one consistent world state estimate. In order to achieve this goal the data association problem has to be solved. This demo shows how the data association problem is solved in a static scene where multiple measurements originate from the same object. The video shows both the detections and the estimated world state.


All measurements are close to each other and have a relatively high measurement covariance matrix. As a result, the world modeling algorithm associates all measurements with the same object. All measurements are used to update the object position at each time step using a Kalman filter with constant velocity motion model.


In order to be able to reproduce the result shown in the video above, make sure that you have downloaded and compiled the wire packages:

$ git clone
$ catkin_make

Download the bag-file containing the data (demo01.bag) and decompress the file:

$ rosbag decompress demo01.bag

The bag file contains tfs, object detections and both rgb and depth images. The images are only included for ease of interpretation and inspection. These are not used by wire.

Reproducing the result

Start a ROS core:

$ roscore

Then, set the use_sim_time parameter to true:

$ rosparam set use_sim_time true

and launch the wire_core:

$ roslaunch wire_core start.launch

In a second terminal, launch the visualization:

$ roslaunch wire_tutorials rviz_wire_kinetic.launch

Finally, play back the data:

$ rosbag play demo01.bag --clock

The results should be similar to the results shown in the video above.

Wiki: wire/Tutorials/Fusing multiple measurements originating from the same object (last edited 2017-05-17 12:21:58 by JosElfring)