02-TF-创建tf发布

0.创建工作包

$ cd %YOUR_CATKIN_WORKSPACE_HOME%/src
$ catkin_create_pkg learning_tf tf roscpp rospy turtlesim

配置工作环境

$ cd %YOUR_CATKIN_WORKSPACE_HOME%/
$ catkin_make
$ source ./devel/setup.bash

1.发布变换

此篇教程目的在与发布坐标系到tf,我们尝试将海龟的坐标系发布给tf,随着海龟行动,查看坐标系的变化。

$ roscd learning_tf
$ mkdir nodes
$ vim nodes/turtle_tf_broadcaster.py

#!/usr/bin/env python  
import roslib
roslib.load_manifest('learning_tf')
import rospy

import tf
import turtlesim.msg

def handle_turtle_pose(msg, turtlename):
    br = tf.TransformBroadcaster()
    br.sendTransform((msg.x, msg.y, 0),
                     tf.transformations.quaternion_from_euler(0, 0, msg.theta),
                     rospy.Time.now(),
                     turtlename,
                     "world")

if __name__ == '__main__':
    rospy.init_node('turtle_tf_broadcaster')
    turtlename = rospy.get_param('~turtle')#传递参数名
    rospy.Subscriber('/%s/pose' % turtlename,
                     turtlesim.msg.Pose,
                     handle_turtle_pose,
                     turtlename)
    rospy.spin()

chmod +x nodes/turtle_tf_broadcaster.py

2.运行广播

$ roscd learning_tf
$ mkdir launch
$ vim launch/start_demo.launch

 <launch>
    <!-- Turtlesim Node-->
    <node pkg="turtlesim" type="turtlesim_node" name="sim"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>

    <node name="turtle1_tf_broadcaster" pkg="learning_tf" type="turtle_tf_broadcaster.py" respawn="false" output="screen" >
      <param name="turtle" type="string" value="turtle1" />
    </node>
    <node name="turtle2_tf_broadcaster" pkg="learning_tf" type="turtle_tf_broadcaster.py" respawn="false" output="screen" >
      <param name="turtle" type="string" value="turtle2" /> 
    </node>

  </launch>

$ roslaunch learning_tf start_demo.launch

3.查看结果

rosrun tf tf_echo /world /turtle1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本篇教程演示如何建立新坐标系,建立新坐标系与创建tf广播类似,同时能加强tf功能。 1.为什么添加坐标系 很多实例...
    joey_zhou阅读 1,439评论 0 0
  • 时间关系 进入软件包 $ roscd learning_tf 现在我们将第二个海龟实时跟随第一只海龟更改为第二只海...
    joey_zhou阅读 991评论 0 1
  • 创建一个ROS Package 这个教程包括使用roscreate-pkg或者catkin去创建一个新的packa...
    铁熊玩创客阅读 4,995评论 0 7
  • TF介绍 描述 教程介绍了tf的实际应用,并展示了使用 turtlesim的多机器人示例. 同时介绍了tf_ech...
    joey_zhou阅读 1,990评论 0 0
  • 1.编码 $ roscd learning_tf$ vim nodes/turtle_tf_listener.py...
    joey_zhou阅读 971评论 0 0