ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Could this be a misinterpretation / misquote of the docs? "Broadcasting" is the word used in the docs. This just means: sending a msg to all who are/will listen. "Sending to" implies there is some unidirectional transfer going on. TF does not send anything "from X to Y". The example you show ..

Could this be a misinterpretation / misquote of the docs? "Broadcasting" is the word used in the docs. This just means: sending a msg to all who are/will listen. "Sending to" implies there is some unidirectional transfer going on. TF does not send anything "from X to Y". Y".

The example you show ..just broadcasts a single message that contains the information about a single transform "from the child to the parent frame". It's a piece of information that TF listeners will use to update their tree of transforms.

The "child" and "parent" are just labels (ie: names for humans), not entities in a ROS node graph (ie: nodes or similar active constructs) that receive or send any messages.

Could this be a misinterpretation / misquote of the docs? "Broadcasting" is the word used in the docs. This just means: sending a msg to all who are/will listen. "Sending to" implies there is some unidirectional transfer going on. TF does not send anything "from X to Y".

The example you show just broadcasts a single message that contains the information about a single transform "from the child to the parent frame". It's a piece of information that TF listeners will use to update their tree of transforms.

The "child" and "parent" are just labels (ie: names for humans), not entities in a ROS node graph (ie: nodes or similar active constructs) that receive or send any messages.

From the same docs on TransformBroadcaster:

TransformBroadcaster is a convenient way to send transformation updates on the "/tf" message topic.

All the methods in this class do is send out messages (geometry_msgs/TransformStamped) that inform listeners about a single or multiple edge(s) in the TF tree. Between each node a transformation matrix exists. For new transforms, an edge is added and the matrix attached. For existing transforms, the matrix is updated.

Could this be a misinterpretation / misquote of the docs? "Broadcasting" is the word used in the docs. This just means: sending a msg to all who are/will listen. "Sending to" implies there is some unidirectional transfer going on. TF does not send anything "from X to Y".

The example you show just broadcasts a single message that contains the information about a single transform "from the child to the parent frame". It's a piece of information that TF listeners will use to update their tree of transforms.

The "child" and "parent" are just labels (ie: names for humans), not entities in a ROS node graph (ie: nodes or similar active constructs) that receive or send any messages.

From the same docs on TransformBroadcaster:

TransformBroadcaster is a convenient way to send transformation updates on the "/tf" message topic.

All the methods in this class do is send out messages (geometry_msgs/TransformStamped) that inform listeners about a single or multiple edge(s) in the TF tree. Between each node a transformation matrix exists. For new transforms, an edge is added and the matrix attached. For existing transforms, the matrix is updated.

Does "send a transformation from the child to the parent frame" actually mean that tf sends e.g. a homogenous matrix representing the transformation (i.e. rotation and orientation) of a point in the local frame of the child to a point in the local frame of the parent, or is it vice-versa, or something else?

I would say this is more what the various transformX(..) methods in TF do. The TransformBroadcaster really only updates the transformation matrices that you refer to (but they're not encoded as matrices, but as separate Vector3 and Quaternion).

Could this be a misinterpretation / misquote of the docs? "Broadcasting" is the word used in the docs. This just means: sending a msg to all who are/will listen. "Sending to" implies there is some unidirectional transfer going on. TF does not send anything "from X to Y".Y" (well, the TransformBroadcaster does, but at a different level perhaps).

The example you show just broadcasts a single message that contains the information about a single transform "from the child to the parent frame". It's a piece of information that TF listeners will use to update their tree of transforms.

The "child" and "parent" are just labels (ie: names for humans), not entities in a ROS node graph (ie: nodes or similar active constructs) that receive or send any messages.

From the same docs on TransformBroadcaster:

TransformBroadcaster is a convenient way to send transformation updates on the "/tf" message topic.

All the methods in this class do is send out messages (geometry_msgs/TransformStamped) that inform listeners about a single or multiple edge(s) in the TF tree. Between each node a transformation matrix exists. For new transforms, an edge is added and the matrix attached. For existing transforms, the matrix is updated.

Does "send a transformation from the child to the parent frame" actually mean that tf sends e.g. a homogenous matrix representing the transformation (i.e. rotation and orientation) of a point in the local frame of the child to a point in the local frame of the parent, or is it vice-versa, or something else?

I would say this is more what the various transformX(..) methods in TF do. The TransformBroadcaster really only updates the transformation matrices that you refer to (but they're not encoded as matrices, but as separate Vector3 and Quaternion).

Could this be a misinterpretation / misquote of the docs? "Broadcasting" is the word used in the docs. This just means: sending a msg to all who are/will listen. "Sending to" implies there is some unidirectional transfer going on. TF does not send anything "from X to Y" (well, the TransformBroadcaster does, but at a different level perhaps).

The example you show just broadcasts a single message that contains the information about a single transform "from the child to the parent frame". It's a piece of information that TF listeners will use to update their tree of transforms.

The "child" and "parent" are just labels (ie: names for humans), not entities in a ROS node graph (ie: nodes or similar active constructs) that receive or send any messages.

From the same docs on TransformBroadcaster:

TransformBroadcaster is a convenient way to send transformation updates on the "/tf" message topic.

All the methods in this class do is send out messages (geometry_msgs/TransformStamped) that inform listeners about a single or multiple edge(s) in the TF tree. Between each node a transformation matrix exists. For new transforms, an edge is added and the matrix attached. For existing transforms, the matrix is updated.

Does "send a transformation from the child to the parent frame" actually mean that tf sends e.g. a homogenous matrix representing the transformation (i.e. rotation and orientation) of a point in the local frame of the child to a point in the local frame of the parent, or is it vice-versa, or something else?

I would say this is more what the various transformX(..) methods in TF do. The TransformBroadcaster really only updates the transformation matrices that you refer to (but they're not encoded as matrices, but as separate Vector3 and Quaternion).

re-reading your question you might actually be saying the same as I was. The TransformBroadcaster is not about points, but the transformation matrices themselves. If that is what you were describing, then yes, that is what it is doing. The transformX(..) methods in TF(2) then use those to do the actual transformation of points between those frames.

Edit:

Does "send a transformation from the child to the parent frame" actually mean that tf sends e.g. a homogenous matrix representing the transformation (i.e. rotation and orientation) of a point in the local frame of the child to a point in the local frame of the parent, or is it vice-versa, or something else?

I would say this is more what the various transformX(..) methods in TF do. The TransformBroadcaster really only updates the transformation matrices that you refer to (but they're not encoded as matrices, but as separate Vector3 and Quaternion).

re-reading your question you might actually be saying the same as I was. The TransformBroadcaster is not about points, but the transformation matrices themselves. If that is what you were describing, then yes, that is what it is doing. The transformX(..) methods in TF(2) then use those to do the actual transformation of points between those frames.


Could this be a misinterpretation / misquote of the docs? "Broadcasting" is the word used in the docs. This just means: sending a msg to all who are/will listen. "Sending to" implies there is some unidirectional transfer going on. TF does not send anything "from X to Y" (well, the TransformBroadcaster does, but at a different level perhaps).

The example you show just broadcasts a single message that contains the information about a single transform "from the child to the parent frame". It's a piece of information that TF listeners will use to update their tree of transforms.

The "child" and "parent" are just labels (ie: names for humans), not entities in a ROS node graph (ie: nodes or similar active constructs) that receive or send any messages.

From the same docs on TransformBroadcaster:

TransformBroadcaster is a convenient way to send transformation updates on the "/tf" message topic.

All the methods in this class do is send out messages (geometry_msgs/TransformStamped) that inform listeners about a single or multiple edge(s) in the TF tree. Between each node a transformation matrix exists. For new transforms, an edge is added and the matrix attached. For existing transforms, the matrix is updated.

Does "send a transformation from the child to the parent frame" actually mean that tf sends e.g. a homogenous matrix representing the transformation (i.e. rotation and orientation) of a point in the local frame of the child to a point in the local frame of the parent, or is it vice-versa, or something else?

I would say this is more what the various transformX(..) methods in TF do. The TransformBroadcaster really only updates the transformation matrices that you refer to (but they're not encoded as matrices, but as separate Vector3 and Quaternion).

re-reading your question you might actually be saying the same as I was. The TransformBroadcaster is not about points, but the transformation matrices themselves. If that is what you were describing, then yes, that is what it is doing. The transformX(..) methods in TF(2) then use those to do the actual transformation of points between those frames.