1. 概述
使用代码实例来理解tf发布信息中的位姿变换具体含义:在
父
坐标系下描述
父
坐标系到
子
坐标系的变换关系,希望能帮助大家,同时给自己一个参考。
2. 代码
参考代码如下
#include <ros/ros.h>
#include <tf/transform_broadcaster.h>
int main(int argc, char** argv){
ros::init(argc, argv, "my_tf_broadcaster");
ros::NodeHandle node;
tf::TransformBroadcaster br;
tf::Transform transform;
ros::Rate rate(10.0);
while (node.ok()){
//从父坐标系到子坐标系变换,是在父坐标系下的描述。
transform.setOrigin( tf::Vector3(0.0, 2.0, 0.0) );
transform.setRotation( tf::Quaternion(0, 0, 0, 1) );
br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "turtle1", "carrot1"));
rate.sleep();
}
return 0;
};
3. 最终结果
以
turtle1
坐标系为世界坐标系(固定坐标系)。从图中可以看到刚才发布的tf信息所表示的含义:
-
表示从
父
坐标系”turtle1″到
子
坐标系 “carrot1″的变换为[0.0, 2.0, 0.0],(其实可以认为当前
只有父坐标系
,因此只能得到在父坐标系下的变换关系),这个变换关系是在
父坐标系
下的描述,如果是
子
坐标系的描述,那么变换关系会变成[0.0, -2.0, 0.0]。
4. 参考链接
版权声明:本文为i_robots原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。