添加一个frame 坐标

来源:互联网 发布:定义二维数组可缺省 编辑:程序博客网 时间:2024/05/16 14:58

frame_tf_broadcaster.cpp

   1 #include <ros/ros.h>   2 #include <tf/transform_broadcaster.h>   3    4 int main(int argc, char** argv){   5   ros::init(argc, argv, "my_tf_broadcaster");   6   ros::NodeHandle node;   7    8   tf::TransformBroadcaster br;   9   tf::Transform transform;  10   11   ros::Rate rate(10.0);  12   while (node.ok()){  13     transform.setOrigin( tf::Vector3(0.0, 2.0, 0.0) );  14     transform.setRotation( tf::Quaternion(0, 0, 0, 1) );  15     br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "turtle1", "carrot1"));//在这里,我们创建一个新的转换,从父turtle1到新的carrot1所述carrot1坐标系turtle1右侧  16     rate.sleep();  17   }  18   return 0;  19 };

同时你需要在你的listener重新收听新的坐标系

   1   listener.lookupTransform("/turtle2", "/carrot1",   2                            ros::Time(0), transform);

之前的坐标系是静态的,现在广播一个动态的参考系

   1     transform.setOrigin( tf::Vector3(2.0*sin(ros::Time::now().toSec()), 2.0*cos(ros::Time::now().toSec()), 0.0) );   2     transform.setRotation( tf::Quaternion(0, 0, 0, 1) );



原创粉丝点击