ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
You get to specify what you mean within the message itself so that there is no ambiguity. Check out ROS REP 105, where some common coordinate frames and their meanings are discussed. What you are calling "robot coordinates" is called base_link
, and "world coordinates" is called odometry
. Note that there are multiple extrinsic frames, with map
and utm
being the other common extrinsic frames in addition to odometry
.
The way that you specify which coordinate frame you are using is by setting the nav_msgs/Odometry/Header/frame_id
field. It is then up to the nodes subscribing to your messages to correctly interpret the data. Very often, tf is used to transform data into the appropriate frame for the specific receiving node.
For your specific question, I have mostly seen robot velocity measurements (from GPS, wheel encoders, Kalman filters, etc.) be published in the base_link
(or intrinsic, "robot coordinates") frame.
2 | No.2 Revision |
You get to specify what you mean within the message itself so that there is no ambiguity. Check out ROS REP 105, where some common coordinate frames and their meanings are discussed. What you are calling "robot coordinates" is called base_link
, and "world coordinates" is called odometry
. Note that there are multiple extrinsic frames, with map
and utm
being the other common extrinsic frames in addition to odometry
.
The way that you specify which coordinate frame you are using is by setting the
field. It is then up to the nodes subscribing to your messages to correctly interpret the data. Very often, tf is used to transform data into the appropriate frame for the specific receiving nav_msgs/Odometry/Header/frame_idHeader/frame_idnode.node. If there is no Header/frame_id
field (as is the case for the basic Twist
message) then I have seen most subscribing nodes assume that the Twist
data is in the base_link
frame. If possible, it is nicer to use the TwistStamped
or TwistWithCovarianceStamped
variants of the message type for this reason.
For your specific question, I have mostly seen robot velocity measurements (from GPS, wheel encoders, Kalman filters, etc.) be published and interpreted as being in the base_link
(or intrinsic, "robot coordinates") frame.
3 | No.3 Revision |
You get to specify what you mean within the message itself so that there is no ambiguity. Check out ROS REP 105, where some common coordinate frames and their meanings are discussed. What you are calling "robot coordinates" is called base_link
, and "world coordinates" is called
. Note that there are multiple extrinsic frames, with odometryodommap
and utm
being the other common extrinsic frames in addition to
.odometryodom
The way that you specify which coordinate frame you are using is by setting the Header/frame_id
field. It is then up to the nodes subscribing to your messages to correctly interpret the data. Very often, tf is used to transform data into the appropriate frame for the specific receiving node. If there is no Header/frame_id
field (as is the case for the basic Twist
message) then I have seen most subscribing nodes assume that the Twist
data is in the base_link
frame. If possible, it is nicer to use the TwistStamped
or TwistWithCovarianceStamped
variants of the message type for this reason.
For your specific question, I have mostly seen robot velocity measurements (from GPS, wheel encoders, Kalman filters, etc.) be published and interpreted as being in the base_link
(or intrinsic, "robot coordinates") frame.