前言:在前面的试验中,我们分别有wolrd,turtle1和turtle2三个坐标系,并且world是turtle1和turtle2的父坐标系。现在我们来新建一个自定义坐标系,让turtle2跟着新的坐标系”carrot“运动。
参考自:http://wiki.ros.org/tf/Tutorials/Adding%20a%20frame%20%28C%2B%2B%29
新建frame_tf_broadcaster.cpp文件,内容如下:
#include
#include
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(, , , ) );//设置新坐标系相对旋转关系
br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "turtle1", "carrot1"));//创建一个新坐标系carrot1,距离父坐标系turtle1距离2米
rate.sleep();
}
;
};
在launch文件中添加代码:
修改turtle_tf_listener.cpp文件
listener.lookupTransform(), transform);
编译并运行launch文件
roslaunch learning_tf start_demo.launch
现在turtle2始终跟随在carrot坐标系运动。
-END-
手机扫一扫
移动阅读更方便
你可能感兴趣的文章