ROS常用组件_TF坐标变换

TF坐标变换

坐标变换是机器人学中一个非常基础也是非常重要的概念。机器人本体和机器人的工作环境中往往存在大量的组件元素,在机器人设计和机器人应用中都会涉及不同组件的位置和姿态,这就需要引入坐标变换的概念。

A坐标系下的位姿可以通过平移和旋转变换成B坐标系下的位姿,这里的平移和旋转可以通过4*4的变换矩阵(四元数)来描述

坐标变换是机器人系统中常用的基础功能,ROS中的坐标变换系统由TF功能包提供。

 

TF功能包

tf是一个可让用户随时间跟踪多个坐标系的软件包。 tf使用树形数据结构,根据时间缓冲并维护多个坐标系之间坐标变换的关系,并允许用户在任意的时间点在任意两个坐标系之间转换点,向量等。

机器人系统通常具有随时间变化的许多3D坐标系,例如世界坐标系(world frame), 基础坐标系( base frame),抓手坐标系(gripper frame),头部坐标系( head frame)等。Tf可以以时间为轴跟踪所有这些坐标系(默认10s内),并允许提出以下问题:

·5秒钟前,头部坐标系相对于世界坐标系在哪里?

·夹具中物体相对于机器人中心坐标系的位姿是什么?

·机器人中心坐标系相对于全局坐标系的位姿是什么?

 

tf可以在分布式系统中运行。 这意味着有关机械人的坐标系的所有坐标变换信息可用于系统中任何计算机上的所有ROS组件,所有订阅TF消息的节点都会缓冲一份所有坐标系的变换关系数据。没有转换信息的中央服务器。

 

使用TF功能包,总体来说需要以下两个步骤:

侦听TF变换Listening for transforms-接收和缓冲系统中广播的所有坐标变换数据,并查询所需要的坐标系之间的特定变换。

广播TF转换Broadcasting transforms-将坐标系的相对姿态发送到系统的其余部分。 一个系统可以有许多不同部分的TF变换广播,每个广播都可以直接将坐标变换关系插入TF树中,不需要在进行同步。

 

TF工具

尽管tf主要是要在ROS节点中使用的代码库,但它带有大量的命令行工具,可帮助调试和创建tf坐标系。 这些工具包括:

view_frames:可视化坐标变换的完整树。

tf_monitor:监视坐标系之间的转换,打印TF树中所有坐标系的发布状态。

tf_echo:将指定的坐标转换关系输出到屏幕,例:

$ tf_echo < source_frame >

$ rosrun tf tf_echo /map /odom At time 1263248513.809 - Translation: [2.398, 6.783, 0.000] - Rotation: in Quaternion [0.000, 0.000, -0.707, 0.707] in RPY [0.000, -0.000, -1.570]

roswtf:使用tfwtf插件,可帮助您查找tf的问题。

static_transform_publisher是用于发送静态转换的命令行工具。

tf_remap节点,它是用于重新映射坐标变换的实用程序节点。

 

 

你可能感兴趣的:(ROS开发)