C++中给我们提供了很多TF的数据类型,如下表:
名称 | 数据类型 |
---|---|
向量 | tf::Vector3 |
点 | tf::Point |
四元数 | tf::Quaternion |
3*3矩阵(旋转矩阵) | tf::Matrix3x3 |
位姿 | tf::pose |
变换 | tf::Transform |
带时间戳的以上类型 | tf::Stamped |
带时间戳的变换 | tf::StampedTransform |
在tf中与数据转化的数据都类型都包含在#include<tf/tf.h>
头文件中;
tf主要的工作就是数据转换,常见的是四元数、旋转矩阵、欧拉角这三种数据之间的转换;
数据转换相关API都存在tf_demo中的coordinate_transformation.cpp当中,其中列表如下:
编号 | 函数名称 | 函数功能 |
---|---|---|
1.1 | tfScalar::tfDot(const Vector3 &v1, const Vector3 &v2) | 计算两个向量的点积 |
1.2 | tfScalar length() | 计算向量的模 |
1.3 | Vector3 &normalize() | 求与已知向量同方向的单位向量 |
1.4 | tfScalar::tfAngle(const Vector3 &v1, const Vector3 &v2) | 计算两个向量的夹角 |
1.5 | tfScale::tfDistance(const Vector3 &v1, const Vector3 &v2) | 计算两个向量的距离 |
1.6 | tfScale::tfCross(const Vector3 &v1,const Vector3 &v2) | 计算两个向量的乘积 |
2.1 | setRPY(const tfScalar& yaw, const stScalar &pitch, const tfScalar &roll) | 由欧拉角计算四元数 |
2.2 | Vector3 getAxis() | 由四元数得到旋转轴 |
2.3 | setRotation(const Vector3 &axis, const tfScalar& angle) | 已知旋转轴和旋转角估计四元数 |
3.1 | setRotaion(const Quaternion &q) | 通过四元数得到旋转矩阵 |
3.2 | getEulerYPR(tfScalar &yaw, tfScalar &pitch, tfScalar &roll ) | 由旋转矩阵求欧拉角 |
以上程序可能是由旧版的ROS tf包提供,可能存在找不到的情况,最新版的包在文件夹名称和函数名称上可能都有所更新!!!最新的资源请参考: