1.tf::Pose
是TF库中的一个类,用于表示3D空间中的姿态(位置和方向)。它提供了许多方法和操作符重载,用于创建、获取、设置和变换姿态。
以下是 tf::Pose
类的定义和常用方法:
class tf::Pose {
public:
Pose();
Pose(const tf::Quaternion& rotation, const tf::Vector3& translation);
const tf::Quaternion& getRotation() const;
const tf::Vector3& getOrigin() const;
tf::Vector3 getBasisX() const;
tf::Vector3 getBasisY() const;
tf::Vector3 getBasisZ() const;
void setRotation(const tf::Quaternion& rotation);
void setOrigin(const tf::Vector3& translation);
void setRotation(double x, double y, double z, double w);
void setOrigin(double x, double y, double z);
void setIdentity();
void mult(const Pose& pose1, const Pose& pose2);
Pose operator*(const Pose& p) const;
tf::Point operator*(const tf::Point& pt) const;
tf::Vector3 operator*(const tf::Vector3& vec) const;
};
- Pose():默认构造函数创建一个单位姿态,表示无旋转和平移。
- Pose(const tf::Quaternion& rotation, const tf::Vector3& translation):构造函数创建一个具有给定旋转和平移的姿态对象。
- const tf::Quaternion& getRotation() const:获取姿态对象的旋转四元数。
- const tf::Vector3& getOrigin() const:获取姿态对象的平移向量。
- tf::Vector3 getBasisX() const:获取姿态对象的X轴方向的向量。
- tf::Vector3 getBasisY() const:获取姿态对象的Y轴方向的向量。
- tf::Vector3 getBasisZ() const:获取姿态对象的Z轴方向的向量。
- void setRotation(const tf::Quaternion& rotation):设置姿态对象的旋转四元数。
- void setOrigin(const tf::Vector3& translation):设置姿态对象的平移向量。
- void setRotation(double x, double y, double z, double w):按给定的四个参数设置姿态对象的旋转四元数。
- void setOrigin(double x, double y, double z):按给定的三个参数设置姿态对象的平移向量。
- void setIdentity():将姿态对象设置为单位姿态,即无旋转和平移。
- void mult(const Pose& pose1, const Pose& pose2):将两个姿态对象进行组合,将结果存储在当前对象中。
- Pose operator*(const Pose& p) const:重载乘法运算符,将当前姿态对象和另一个姿态对象相乘,返回新的姿态对象。
- tf::Point operator*(const tf::Point& pt) const:重载乘法运算符,将当前姿态对象和一个点对象相乘,返回变换后的点对象。
- tf::Vector3 operator*(const tf::Vector3& vec) const:重载乘法运算符,将当前姿态对象和一个向量对象相乘,返回变换后的向量对象。
除了以上方法,tf::Pose
还提供了一些其他方法和辅助函数,用于进行坐标变换、插值、单位化、求逆等操作。具体使用方法可以根据实际需求和具体问题进行查阅和使用。
2.tf::Pose
可以通过tf::Transform
构造。tf::Transform
是另一个在TF库中用于表示姿态变换的类。它包含了一个旋转(tf::Quaternion
)和平移(tf::Vector3
)的组合,用于描述姿态变换。
以下是tf::Transform
的定义和常用方法:
class tf::Transform {
public:
Transform();
Transform(const tf::Quaternion& rotation, const tf::Vector3& translation);
const tf::Vector3& getOrigin() const;
const tf::Quaternion& getRotation() const;
void setOrigin(const tf::Vector3& translation);
void setRotation(const tf::Quaternion& rotation);
void setIdentity();
const tf::Transform& inverse() const;
tf::Transform inverseTimes(const tf::Transform& t) const;
tf::Transform operator*(const tf::Transform& t) const;
};
可以看到,tf::Transform
提供了与tf::Pose
相似的构造函数、获取和设置旋转/平移的方法,以及单位化、求逆和变换操作等方法。
由于两者的构造函数和旋转/平移的获取和设置方法类似,可以使用tf::Transform
对象作为参数来构造tf::Pose
对象,或者使用一个已经存在的tf::Pose
对象来初始化tf::Transform
对象。
tf::Transform tfTransform; // Create a tf::Transform object
tf::Pose tfPose(tfTransform); // Use tf::Transform object to construct a tf::Pose object
tf::Pose tfPose; // Create a tf::Pose object
tf::Transform tfTransform(tfPose); // Use tf::Pose object to construct a tf::Transform object
通过以上方法,可以将 tf::Transform
和 tf::Pose
对象之间进行转换和互用,方便根据实际情况和需求选择适合的类来表示和操作姿态变换数据。