API review

Proposer: Tully

Present at review:

  • List reviewers

Question / concerns / comments

Enter your thoughts on the API and any questions / concerns you have here. Please sign your name. Anything you want to address in the API review should be marked down here before the start of the meeting.

Meeting agenda

To be filled out by proposer based on comments gathered during API review period

Twist message discussion summary

The problem with twist messages is that there are 4 potential different coordinate frames associated with any twist. There are:

  • reference point
  • reference frame
  • observational frame
  • body frame

The problem with this is that the TwistStamped messages only has one coordinate frame.

  • With this message the body frame cannot be expressed.
  • There is a consensus to collapse the reference point and reference frame into a single coordinate frame.
  • Whether to consider the observational frame the same as the reference frame is a question.
  • This is particularly an issue when considering transforming velocities. Are they absolute measurements of velocity, or are the relative ones which should be only rereferenced but not transformed.
  • For example: two robots are driving forward. They each see each other as moving 1 m/s in the world. I could ask for robot1's velocity in robot2's frame. The results of this could either be a transformation of 1m/s linear to the combo of angular and linear which is offset by the distance between the robots. But still the magnitude is


  • make transformVelocity which assumes observational frame is coincident with reference frame, and corrects for moving frames.
  • make rereferenceTwist which only changes the representation of the twist to a new coordinate frame

Other options

  • possibly make a new Velocity Message?
  • Extend the twist message


Here's my use case:

  • I am controlling the gripper in the frame of the forearm camera. My joystick defines a twist of the gripper in the frame of the forearm camera. I want to transform that twist to the frame of the torso, and then apply it to the gripper.


Stack status change mark change manifest)

  • /!\ Action items that need to be taken.

  • {X} Major issues that need to be resolved

  • tf provide lookupTwist methods
    • lookupTwist(string tracking frame, string obs frame, string reference_frame, pointStamped ref_point, Time time)
    • simple version where:(ref_point is origin of target_frame, ref_frame =obs frame)
  • move transformTwist into tf_kdl_conversions as helper functions

Wiki: tf/Reviews/2010-03-12_API_Review (last edited 2010-03-12 22:18:44 by TullyFoote)