译者注

第一次翻译技术类文章,难免有许多疏漏,还望见谅。
所使用的ros版本是kinetic
原文地址
以下是译文


tf包的简介

tf是一个允许用户时刻跟踪多个坐标框架的包,它及时地维持树结构中的坐标帧之间的关系,并允许用户在任何时间点变换任何两个坐标帧之间的点、向量等。
变化:自ROS Hydro以来,tf已被“弃用”,转而支持tf2。 tf2是对tf的新版,在更加有效地提供原有功能的基础上,添加了一些新功能。在tf2中,tf中原有的API保持其原来的形式。 由于tf2有tf特征的超集及其依赖关系的子集,因此,tf实现所实现的功能在底层上已经由调用tf2中的函数所代替。 这意味着所有用户都将与tf2兼容。 建议新工作直接使用tf2,因为它有更加简洁好用的借口。 但是J Turtle将继续支持tf。

  • 维护者状态:维护
  • 维护者:Tully Foote
  • 作者:Tully Foote,Eitan Marder-Eppstein,Wim Meeussen
  • 许可证:BSD
  • 来源:git https://github.com/ros/geometry.git(分支:indigo-devel)

目录

  1. tf能干什么?我们为什么要用tf?
  2. 相关论文
  3. 教程
  4. tf的API一览
  5. 常见问题
  6. 命令行工具
    • tf_monitor
    • tf_echo
    • static_transform_publisher
    • view_frames]
    • roswtf plugin
  7. 节点

1. tf能干什么?我们为什么要用tf?

如果你想知道具体地知道tf什么可以做而不只是通读它,查看tf介绍演示。
机器人系统通常具有许多随时间变化的3D坐标架,例如世界坐标架、基础坐标架、机械臂坐标架,头部坐标架等。tf时刻保持记录所有这些坐标架,并能回答您提出的类似如下的问题:

tf可以在分布式系统中运行,这意味着有关机器人坐标系的所有信息可供系统中任何计算机上的所有ROS组件使用,而不需要转换信息的中央服务器。

有关设计的更多信息,请参见/设计

2. 相关论文

Papers/TePRA2013_Foote

3. 教程

我们创建了一组教程,逐步引导您使用tf。您可以从* tf简介 * 开始。 tf及tf相关教程的完整列表,请查看教程页面。

用户使用tf基本上只有两种目的——监听坐标变化 和广播坐标变化

任何使用tf的人都需要监听变换:

为了拓展机器人的功能,你需要广播变化:

完成基本教程后,您可以继续学习tf and time,tf and time教程(Python)(C ++)讲授了tf and time的基本用法。 关于tf and time(Python)(C ++)的高级教程讲授了如何使用tf进行时间旅行。

4. tf的API一览

5. 常见问题

6. 命令行工具

虽然tf主要是一个在ROS节点中使用的代码库,但它附带了大量的命令行工具,可以帮助调试和创建tf坐标框架。 这些工具包括:

您可能还希望使用tf_remap节点,该节点是用于重新映射坐标变换的实用程序节点。

6.1 tf_monitor

  1. tf_monitor:
    将有关当前坐标转换树的信息打印到控制台。例如:
$ rosrun tf tf_monitor
RESULTS: for all FramesFrames:
Frame: /base_footprint published by /robot_pose_ekf Average Delay: 0.0469324 Max Delay: 0.0501503
Frame: /base_laser_link published by /robot_state_publisher Average Delay: 0.00891066 Max Delay: 0.009591
Frame: /base_link published by /robot_state_publisher Average Delay: 0.00891147 Max Delay: 0.009592
0.00891431 Max Delay: 0.009595... editing for the sake of brevity ...Broadcasters:
Node: /realtime_loop 94.7371 Hz, Average Delay: 0.000599916 Max Delay: 0.001337
Node: /robot_pose_ekf 30.8259 Hz, Average Delay: 0.0469324 Max Delay: 0.0501503
Node: /robot_state_publisher 25.8099 Hz, Average Delay: 0.0089224 Max Delay: 0.00960276
  1. tf_monitor <source_frame> <target_target>
    监控特定的转换。 例如,要监视从/ base_footprint到/ odom的转换:
$ rosrun tf tf_monitor /base_footprint /odom
RESULTS: for /base_footprint to /odom
Chain currently is: /base_footprint -> /odom
Net delay     avg = 0.00371811: max = 0.012472Frames:
Frame: /base_footprint published by /robot_pose_ekf Average Delay: 0.0465218 Max Delay: 0.051754
Frame: /odom published by /realtime_loop Average Delay: 0.00062444 Max Delay: 0.001553Broadcasters:
Node: /realtime_loop 95.3222 Hz, Average Delay: 0.00062444 Max Delay: 0.001553
Node: /robot_pose_ekf 30.9654 Hz, Average Delay: 0.0465218 Max Delay: 0.051754
Node: /robot_state_publisher 25.9839 Hz, Average Delay: 0.00903061 Max Delay: 0.00939562

6.2 tf_echo

  1. tf_echo <source_frame> <target_frame>
    打印source_frame和target_frame之间特定转换的信息。 例如,要回显/ map和/ odom之间的转换:
$ 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]

6.3 static_transform_publisher

static_transform_publisher</a>static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
使用以米为单位的x / y / z偏移和以弧度为单位的偏航/俯仰/滚动将静态坐标变换发布到tf。 (偏转是绕Z旋转,俯仰是绕Y旋转,而滚动是绕X旋转)。 周期(以毫秒为单位)是发送转换的频率。 100毫秒(10赫兹)是一个很好的选择。
static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
使用以米和四元数表示的x / y / z偏移将静态坐标变换发布到tf。 周期(以毫秒为单位)是发送转换的频率。 100毫秒(10赫兹)是一个很好的选择。

static_transform_publisher既可以作为手动使用的命令行工具,也可以在roslaunch文件中用于设置静态转换。 例如:

   1 <launch>2 <node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 1 link1_parent link1 100" />3 </launch>

6.4 tf_echo

view_frames是一个图形化调试工具,可以创建当前变换树的PDF图形。
$ rosrun tf view_frames
您可能希望在完成后查看图表,在Ubuntu系统上典型实现方法是:

$ rosrun tf view_frames
$ evince frames.pdf

因此,你可以在.bashrc中添加一个有用的快捷方式:
alias tf='cd /var/tmp && rosrun tf view_frames && evince frames.pdf &'
注意:另请参阅rqt_tf_tree,它可以动态显示tf树。

6.5 roswtf 插件

roswtf tf附带了一个roswtf插件,运行roswtf时会自动加载,此插件将分析您当前的tf配置并尝试查找可能存在的常见问题。
要运行这个插件只需正常调用roswtf:
$ roswtf

7. 节点

7.1 tf_remap

tf_remap监听/ tf_old主题并在/ tf主题上重新发布转换。这主要用于需要更新坐标框架ID的过时bag file。 此节点的典型操作是使用/ tf:= / tf_old来播放bag file。 tf_remap节点使用~mappings参数运行时描述坐标架从旧到新的变换。

7.1.1 订阅的话题

/tf_old (tf/tfMessage)

旧的tf树。 这通常通过重新映射包文件(bag file)来发布。 您可能需要将use_sim_time设置为true才能接受包文件转换。

7.1.2 广播的话题

/tf (tf/tfMessage)

当前的tf树。这是一个广泛被使用的话题。

7.1.2 参数

~mappings ([ {str: str} ], default: [])

将旧tf帧ID映射到新帧ID的字典列表。 列表中的每个字典都必须具有“旧”和“新”键。

7.2 change_notifier

change_notifier监听/ tf并定期重新发布/ tf_changes主题上给出的所有已经发生改变了的变换。

7.2.1 订阅的话题

/tf (tf/tfMessage)

tf树

7.2.2 广播的话题

/tf_changes (tf/tfMessage)

用于表示变化的tf树

7.3.2 参数

~polling_frequency (float, default: 10.0)

检查(tf树发生的改变)的频率(hz)。

~translational_update_distance (float, default: 0.1)

将两坐标架视为发生相对位移的最小位移量。
译者注:就是说,如果设两个坐标架原点间间距为x,那么 δx&gt;cδx&gt;cδx>c(c为最小位移量)时判定为两个坐标架发生了相对位移

~angular_update_distance (float, default: 0.1)

将坐标架视为发生相对旋转的最小旋转角度。
译者注:就是说,如果设两个坐标架任意两轴的夹角为ζiζ_iζi​,那么 ζi&gt;cζ_i&gt;cζi​>c(c为最小旋转角度)时判定为两个坐标架发生了相对旋转

ros之tf简介[tf-Package Summary]相关推荐

  1. TF学习——TF之Tensorboard:Tensorflow之Tensorboard可视化简介、入门、使用方法之详细攻略

    TF学习--TF之Tensorboard:Tensorflow之Tensorboard可视化简介.入门.使用方法之详细攻略 目录 Tensorboard简介 Tensorboard各个板块入门 Ten ...

  2. TF学习——TF之API:TensorFlow的高级机器学习API—tf.contrib.learn的简介、使用方法、案例应用之详细攻略

    TF学习--TF之API:TensorFlow的高级机器学习API-tf.contrib.learn的简介.使用方法.案例应用之详细攻略 目录 tf.contrib.learn的简介 tf.contr ...

  3. TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略

    TF之TF flags:TF flags(命令行解析)的简介.安装.使用方法之详细攻略 目录 TF flags的简介 TF flags的安装 TF flags的使用方法 TF flags的简介 1.f ...

  4. ROS tf::TransfromBroadcaster tf::TransformListener listener.lookupTransform listener.waitForTransfor

    1.How to broadcast coordinate frames of a robot to tf ? 使用tf::TransfromBroadcaster API,具体代码如下: #incl ...

  5. 【ROS学习】- tf学习 - tf中重要函数解析 (陆续更新....)

    文章目录 一.函数waitForTransform().lookupTransform() 具体解释 二.函数 tf::StampedTransform().sendTransform() 具体解释 ...

  6. ROS教程译文1———TF转换树的设置和使用

    本文属于ROS翻译文章,来自WIKI: http://wiki.ros.org/navigation/Tutorials/RobotSetup/TF (由于水平有限,翻译错误在所难免,发现错误欢迎评论 ...

  7. ROS代码经验系列-- tf进行位置查询变换

    include文件: #include "tf/transform_broadcaster.h" #include "tf/transform_listener.h&qu ...

  8. TF学习——TF之TFOD:基于TFOD AP训练ssd_mobilenet预模型+faster_rcnn_inception_resnet_v2_模型训练过程(TensorBoard监控)全记录

    TF学习--TF之TFOD:基于TFOD AP训练ssd_mobilenet预模型+faster_rcnn_inception_resnet_v2_模型训练过程(TensorBoard监控)全记录 目 ...

  9. tf::transformPose,tf::Transform,tf::Stamped,tf::Pose用法

    1.tf::transformPose tf::transformPose是一个用于对姿态进行坐标变换的函数.它允许将一个姿态从一个坐标系转换到另一个坐标系,并返回转换后的姿态. 以下是tf::tra ...

  10. tf.matmul / tf.multiply

    import tensorflow as tf import numpy as np 1.tf.placeholder placeholder()函数是在神经网络构建graph的时候在模型中的占位,此 ...

最新文章

  1. php vue jwt 实战,Vue路由之JWT身份认证的实现方法
  2. unity3d Vector3.Lerp解析
  3. Github GUI 托管代码教程
  4. 云栖发布|阿里云消息队列 RocketMQ 5.0:消息、事件、流融合处理平台
  5. java not found_java_home not found in your enviroment 问题解决方法
  6. leetcode406. 根据身高重建队列
  7. Win Linux 双系统安装指南
  8. DreamFactory入门指南 - 第2章安装和配置DreamFactory
  9. hdu1535 Invitation Cards 最短路
  10. 自己在inode客户端的大量问题(不断更新中)(2012-02-23 21:24 )
  11. 求刷百度相关词的方法
  12. ‘couldn‘t find a common superview for 问题记录
  13. 关于科傻软件的使用感受
  14. 360天擎无密码退出和卸载
  15. 商家如何在手淘里面做活动页面,引流到微信号上,如何做私域引流的活动页
  16. 支付宝当面付申请设置教程,支持个人用户
  17. dhrystone测试结果_处理器性能测试基准程序(CoreMark)简介
  18. 商汤SenseKeeper人脸识别机“打卡”海尔总部,刷脸通行再升级
  19. 程序员频繁跳槽的下场!
  20. 2022小程序,短视频无水印解析API接口分享-最新可用

热门文章

  1. 2021年超全微博营销全攻略抢先看!
  2. C语言 动态内存分配
  3. leetcode刷面试题(面试题08合集)
  4. hdu Intelligent IME
  5. K650D安装黑苹果
  6. 真机实战之VLAN隔离,助力网络安全
  7. 贵阳市交通大数据中心
  8. 水星路由器登录界面找不到服务器,新版水星(Mercurey)路由器后台登陆界面打不开解决方法...
  9. ENVI软件图像放缩出现重影的解决办法
  10. 关于VirtualBox运行出现“0x00000000指令引用的0x00000000内存。该内存不能为written”的解决方法