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

Revision history [back]

Pose is the x,y,z position and quaternion orientation of the robot, a rosmsg show Pose reveals:

[geometry_msgs/Pose]:
geometry_msgs/Point position
  float64 x
  float64 y
  float64 z
geometry_msgs/Quaternion orientation
  float64 x
  float64 y
  float64 z
  float64 w

While PoseStamped is simply a Pose message with the standard ROS header:

[geometry_msgs/PoseStamped]:
Header header
  uint32 seq
  time stamp
  string frame_id
geometry_msgs/Pose pose
  geometry_msgs/Point position
    float64 x
    float64 y
    float64 z
  geometry_msgs/Quaternion orientation
    float64 x
    float64 y
    float64 z
    float64 w

I think it depends on which stack you are using for which message is used, and I believe that PoseStamped is largely preferred because it includes the coordinate frame_id of the given Pose, as well as the time stamp that that Pose is valid.

On the other hand, if you don't need time information (say you are storing a time-independant Path), you could use an array of Poses, which would not need the additional header information.