Ros.7 tf 坐标变换

2020-07-15  本文已影响0人  proud2008

官方demo在地图上显示两个乌龟

roslaunch turtle_tf2 turtle_tf2_demo.launch
rosrun turtlesim turtle_teleop_key # 方向键控制移动
rosrun tf tf_monitor #查看坐标系的发布状态
rosrun tf tf_echo <source> <target> #查看坐标系之间的关系
rosrun tf static_transform_publisher # 发布坐标变换
# x y z yaw pitch roll frame_id child_frame_id period_in_ms
rosrun tf view_frames #显示tf树的信息,

发布坐标变换

使用tf

import rospy
import tf
rospy.init_node('turtle_tf_broadcaster')
br = tf.TransformBroadcaster()
br.sendTransform((1000,100, 100),
                    tf.transformations.quaternion_from_euler(0, 0, 0),
                    rospy.Time.now(),
                    turtlename,
                    "world")

使用tf2

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import rospy
import tf2_ros
import geometry_msgs
import math

if __name__ == '__main__':

    rospy.init_node('dynamic_tf2_broadcaster2')
    br = tf2_ros.TransformBroadcaster()
    t = geometry_msgs.msg.TransformStamped()

    t.header.frame_id = "turtle1"
    t.child_frame_id = "carrot1"

    rate = rospy.Rate(10.0)
    while not rospy.is_shutdown():
        x = rospy.Time.now().to_sec() * math.pi

        t.header.stamp = rospy.Time.now()
        t.transform.translation.x = 10 * math.sin(x)
        t.transform.translation.y = 10 * math.cos(x)
        t.transform.translation.z = 0.0
        t.transform.rotation.x = 0.0
        t.transform.rotation.y = 0.0
        t.transform.rotation.z = 0.0
        t.transform.rotation.w = 1.0

        br.sendTransform(t)
        rate.sleep()

上一篇下一篇

猜你喜欢

热点阅读