What happend to child_frame_id in tf2?
I've just noticed that child_frame_id
totally disappeared from tf2::Stamped<Transform>
, whereas it used to be a part of tf::StampedTransform
. This makes migration quite painful, as it's no longer just about changing function/datatype names, but you need to add (boilerplate) lines of code.
What's worse, if you convert geometry_msgs::TransformStamped
to tf2::Stamped<Transform>
, you get no warning about losing the child_frame_id
, and in the opposite conversion, it is not easily spottable that child_frame_id
has to be filled in separately. So what i'd expect to be an identity, is actually not:
geometry_msgs::TransformStamped tf = ...;
tf2::Stamped<tf2::Transform> tf2;
tf2::fromMsg(tf, tf2);
tf2::toMsg(tf2) == tf // doesn't hold
Isn't this weird? So there isn't any "tf2-native" datatype that'd correspond to geometry_msgs::TransformStamped
? What was the reason for this omission in designing TF2? I assume this is also the reason why there's no tf2_ros::TransformBroadcaster::sendTransform(tf2::Stamped<Transform>& tf)
, which used to be useful in tf.