Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Ros interface for


vrpn_catkin package from:


You have to start a ROS node per tracked object and the ROS node name has to be the name of the trackable object.

 rosrun ros_vrpn_client ros_vrpn_client _object_name:=object_name _vrpn_server_ip:=

Or in a launch file:

<arg name="object_name" default="some_object_name" />
<node name="some_object_name_vrpn_client" type="ros_vrpn_client" pkg="ros_vrpn_client" output="screen">
 <param name="vrpn_server_ip" value="" />
 <param name="object_name" value="$(arg object_name)" />
 <!-- or directly:
 <param name="object_name" value="some_object_name" /> -->

Installation HowTo

Installation Ubuntu

A catkinized version of VRPN can be found here:

For further information about VRPN, please consult their website:

Installation OS X

Use the catkinized package above.

TF coord frames

  1. /optitrak - world frame that we will use. - X axis is along the x axis of the calibration pattern. - Z axis is vertically up.

  2. Every tracked object has a coord frame whose TF name is the name of the ros node (given from the launch file or command line).

    Hitting "Reset To Current Orientation" in the TrackingTools software (Trackable properties) aligns the object coord frame with the /optitrak frame.

Coord frames vodoo

The TrackingTools software outputs the position and orientation in a funky coord frame which has the Y axis pointing vertically up, the X axis along the x axis of the calibration square and Z axis along the -ve z axis of the calibration square.

We perform some rotations to get rid of this funky frame and use the /optitrak frame described above as our fixed world coord frame. The code is in the "VRPN_CALLBACK track_target" function in ros_vrpn_client.cpp