Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I understand what you mean. You want to translate in the rotated frame and not the original frame. Unfortunately tf2 only works with translation and rotation being published with respect to the original frame. Because it is a transform with respect to that particular frame.

To solve your problem there are two ways:

  1. The simple way is to create two frames. A temporary frame which contains only the rotation. And then another transform to translate in this frame.
  2. If you do not want to create a temporary frame, you can calculate what the translational vector will be in the rotated frame. And then use those values instead. To illustrate: If you want to first rotate by r,p,y and then translate in the rotated frame by a,b,c. You should calculate the new translational values R * {a,b,c} where R is the rotation matrix constructed by the rotation angles. Then you can use the tf2 package with these new values.

Hope this helps!