[ros-users] Merge of Point & Translation

Armin Hornung HornungA at informatik.uni-freiburg.de
Wed Oct 20 10:24:20 UTC 2010

Hi Tully!

> The choice to differentiate between Point and Vector3 was explicit.
> semantically they are quite different.  If you transform a point it both
> rotates and translates whereas if you transform a vector it only rotates.

OK, I see. When applying a transform to them the distinction makes 
sense. However, shouldn't that then happen at the level of mathematical 
operations (i.e. bullet, after converting from the message type)? If the 
distinction would be made during conversion, there could be only one "3D 
positional msg", be it Vector3 or Point.

> The semantic difference between pose and transform exists think what is
> the "product" of two poses? A transform can operate on a pose, but a
> pose can't really operate on anything.  At the level of the stamped
> objects this differentiation actually is represented by different data.
> A TransformStamped has more information than a PoseStamped.

Yes, and that's one additional source of confusion when trying to apply 
conversion functions between tf and messages, it's a pain to find the 
correct one and convert between some other formats afterwards. 
PoseStamped is a Pose + Header, while TransformStamped is a Transform + 
Header + ChildId. I know that makes perfectly sense because 
TransformStamped is the coordinate transform used for tf, the naming is 
just a little inconsistent or confusing.

> The one thing which could be considered is collapsing the Transform and
> Pose messages such that TransformStamped containes a Pose inside.
> However to do this sort of thing between Cturtle and Diamondback
> everything must be backwards compatable(There are over 4000 references
> to the string "Transform" excluding btTransform in released cturtle code
> and 121 references to TransformStamped.  Thus to do this It would
> require making TransformStamped2 or equivalent for backwards
> compatibility and then some fraction of the system would use
> TransformStamped and some fraction would use TransformStamped2.
> in general this is mostly a convenience for conversions between the two
> datatypes.  And that can be easily fixed by writing two functions.
> Based on this difference I would suggest that it is hard to make the
> case that the cost of converting between the two datatypes outweighs the
> cost of migrating all code and going through the ticktock.
> This level of a change would require a REP to be written covering the
> change, backwards compatability, data migration rules for all bagfiles,
> and code migrations approaches and proposed times for phase outs of the
> old data types.
> In general I think that most people would like to do this, but people
> also like stability.  If you would like to write a REP for this please
> post it to ros-developers to get feedback from the community.

As much as I would like to see that merge happening, that definitely 
won't be all in writing until Oct. 22nd, also considering that I'm 
currently at IROS in Taiwan...
But for now, having a clearer distinction outlined somewhere (msg header 
comments, tf function comments, wiki pages) should make life easier.


Armin Hornung                              Albert-Ludwigs-Universität
www.informatik.uni-freiburg.de/~hornunga   Dept. of Computer Science
HornungA at informatik.uni-freiburg.de        Humanoid Robots Lab
Tel.: +49 (0)761-203-8010                  Georges-Köhler-Allee 79
Fax : +49 (0)761-203-8007                  D-79110 Freiburg, Germany

More information about the ros-users mailing list