[Documentation] [TitleIndex] [WordIndex


This package provides an implementation of the truncated Signed Distance Function tracking algorithm, proposed here.


Clone the repository and add it to your ROS_PACKAGE_PATH

export ROS_PACKAGE_PATH=/your_path/oru-ros-pkg/:$ROS_PACKAGE_PATH

The following commands should build the sdf_tracker library and the sdf_tracker_node

roscd sdf_tracker

Running the Node

Using an openNI compatible depth-sensor you can get the node up and running with:

roslaunch openni_launch openni.launch &
rosrun sdf_tracker sdf_tracker_node _param1:=val1 _param2:=val2 ...etc



The parameters enable/disable certain features of the node and control the settings for the tracker. The current list of supported parameters are:

Aside from these parameters which directly control the behavior of the tracker, other parameters can be set as well. These are specific to the ROS node.

An example:

rosrun sdf_tracker sdf_tracker_node _c_name:="camera2" _depth_registered:="true" _OutputTriangles:="true" _CellSize:=0.02 _GridSizeX:=300

This will start the node, listening to /camera2/depth_registered/image, using a voxel-size of 2cm in a grid of 300x256x256. Triangles will be dumped to "triangles.obj" at the end of execution, which can be viewed in meshlab.


Initial pose

The initial starting point of the camera is at the center of the specified volume, looking along the z-axis. To change the initial camera pose, relative to the volume set the pose_offset parameter of the SDF_Parameter class and pass this to the constructor when initializing your SDFTracker, e.g.,

   1 //Parameters for an SDFtracker object 
   2 SDF_Parameters myParameters;
   4 //Pose Offset as a transformation matrix
   5 Eigen::Matrix4d initialTransformation = 
   6 Eigen::MatrixXd::Identity(4,4);
   8 //define translation offsets in x y z
   9 initialTransformation(0,3) = 0.5;  //x 
  10 initialTransformation(1,3) = 0.3;  //y
  11 initialTransformation(2,3) = -1.4; //z
  13 myParameters.pose_offset = initialTransformation;
  15 //create the tracker object
  16 SDFTracker myTracker(myParameters);


In the interactive mode, pressing q or <ESC> sets a flag to notify the node that it's time to shut down. Terminating the program with ctrl-C works, but will not output triangles.

If interactive mode is not enabled, you will need to find some other way of deciding when to stop running the program.

2024-07-13 14:38