ROS tf-数据类型
博客参考:https://www.ncnynl.com/archives/201702/1305.html
ROS与C++入门教程-tf-数据类型
说明:
- 介绍roscpp的Data Types(数据类型)及使用
数据类型
- 数据类型定义在tf/transform_datatypes.h
基本数据类型
- 基本数据类型有:(Quaternion, Vector, Point, Pose, Transform)
- ROS Fuerte后,TF已经定义了自己的数据类型。关于如何迁移pre-Fuerte代码到更新的ROS版本,查阅geometry/bullet_migration
- 基本类型:
Type |
tf |
Quaternion |
tf::Quaternion |
Vector |
tf::Vector3 |
Point |
tf::Point |
Pose |
tf::Pose |
Transform |
tf::Transform |
tf::Stamped 模板
- tf::Stamped 对上述数据类型做模板化(除了tf::Transform),并附带元素frame_id_和stamp_ 。
- 定义代码:
template <typename T> class Stamped : public T{ public: ros::Time stamp_; std::string frame_id_; Stamped() :frame_id_ ("NO_ID_STAMPED_DEFAULT_CONSTRUCTION"){}; //Default constructor used only for preallocation Stamped(const T& input, const ros::Time& timestamp, const std::string & frame_id); void setData(const T& input); };
tf::StampedTransform
- tf::StampedTransform 是tf::Transforms的特例,它要求frame_id 、stamp 、child_frame_id.
- 定义代码:
/** \brief The Stamped Transform datatype used by tf */ class StampedTransform : public tf::Transform { public: ros::Time stamp_; ///< The timestamp associated with this transform std::string frame_id_; ///< The frame_id of the coordinate frame in which this transform is defined std::string child_frame_id_; ///< The frame_id of the coordinate frame this transform defines StampedTransform(const tf::Transform& input, const ros::Time& timestamp, const std::string & frame_id, const std::string & child_frame_id): tf::Transform (input), stamp_ ( timestamp ), frame_id_ (frame_id), child_frame_id_(child_frame_id){ }; /** \brief Default constructor only to be used for preallocation */ StampedTransform() { }; /** \brief Set the inherited Traonsform data */ void setData(const tf::Transform& input){*static_cast<tf::Transform*>(this) = input;}; };
辅助函数
- 函数:tf::Quaternion createIdentityQuaternion()
- 作用:返回四元数句柄
- 函数:tf::Quaternion createQuaternionFromRPY(double roll,double pitch,double yaw)
- 作用:返回从固定轴的Roll, Pitch and Yaw(滚动,俯仰和偏转)构造的tf::Quaternion四元数
- 函数:geometry_msgs::Quaternion createQuaternionMsgFromRollPitchYaw(double roll,double pitch,double yaw)
- 作用:返回从固定轴的Roll, Pitch and Yaw(滚动,俯仰和偏转)构造的geometry_msgs::Quaternion四元数
数据类型转换