ROS探索总结(十八)——重读tf
2015-12-02 23:11
281 查看
在之前的博客中,有讲解tf的相关内容,本篇博客重新整理了tf的介绍和学习内容,对tf的认识会更加系统。
五秒钟之前,机器人头参考系相对于全局参考系的关系是什么样的?
机器人夹取的物体相对于机器人中心参考系的位置在哪里?
机器人中心参考系相对于全局参考系的位置在哪里?
tf可以在分布式系统中进行操作,也就是说一个机器人系统中所有的参考系变换关系,对于所有节点组件,都是可用的,所有订阅tf消息的节点都会缓冲一份所有参考系的变换关系数据,所以这种结构不需要中心服务器来存储任何数据。
(1) 监听tf变换
接收并缓存系统中发布的所有参考系变换,并从中查询所需要的参考系变换。
(2) 广播tf变换
向系统中广播参考系之间的坐标变换关系。系统中更可能会存在多个不同部分的tf变换广播,每个广播都可以直接将参考系变换关系直接插入tf树中,不需要再进行同步。
变换与参考系
发布tf变换广播
接收并使用tf广播
异常
命令格式如下:
tf_monitor
tf_monitor <source_frame> <target_target>
示例结果如下图所示:
命令的格式如下:
tf_echo <source_frame> <target_frame>
示例效果如下图所示:
命令的格式如下:
static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
以上两种命令格式,需要设置坐标的偏移和旋转参数,偏移参数都使用相对于xyz三轴的坐标位移,而旋转参数第一种命令格式使用以弧度为单位的 yaw/pitch/roll三个角度(yaw是围绕x轴旋转的偏航角,pitch是围绕y轴旋转的俯仰角,roll是围绕z轴旋转的翻滚角),而第二种命令格式使用四元数表达旋转角度。发布频率以ms为单位,一般100ms比较合适。
该命令不仅可以在终端中使用,还可以在launch文件中使用,使用方式如下:
命令行的执行方式如下:
命令的使用方式如下:
tf设计:http://wiki.ros.org/tf/Design
tf教程:http://wiki.ros.org/tf/Tutorials
tf: The transform library:http://wiki.ros.org/Papers/TePRA2013_Foote
----------------------------------------------------------------欢迎大家转载我的文章。转载请注明:转自古-月http://blog.csdn.net/hcx25909欢迎继续关注我的博客
1 tf简介
1.1 什么是tf
tf是一个让用户随时间跟踪多个参考系的功能包,它使用一种树型数据结构,根据时间缓冲并维护多个参考系之间的坐标变换关系,可以帮助用户在任意时间,将点、向量等数据的坐标,在两个参考系中完成坐标变换。 tf的相关设计思想,可以参见:tf设计1.2 tf可以做什么
一个机器人系统通常有很多三维的参考系,而且会随着时间的推移发生变化,例如全局参考系(world frame),机器人中心参考系(base frame),机械夹参考系(gripper frame),机器人头参考系(head frame)等等。tf可以以时间为轴,跟踪这些参考系(默认是10秒之内的),并且允许用户提出如下的申请:五秒钟之前,机器人头参考系相对于全局参考系的关系是什么样的?
机器人夹取的物体相对于机器人中心参考系的位置在哪里?
机器人中心参考系相对于全局参考系的位置在哪里?
tf可以在分布式系统中进行操作,也就是说一个机器人系统中所有的参考系变换关系,对于所有节点组件,都是可用的,所有订阅tf消息的节点都会缓冲一份所有参考系的变换关系数据,所以这种结构不需要中心服务器来存储任何数据。
1.3 tf的使用流程
想要使用tf功能包,总体来讲可以分为以下两个步骤:(1) 监听tf变换
接收并缓存系统中发布的所有参考系变换,并从中查询所需要的参考系变换。
(2) 广播tf变换
向系统中广播参考系之间的坐标变换关系。系统中更可能会存在多个不同部分的tf变换广播,每个广播都可以直接将参考系变换关系直接插入tf树中,不需要再进行同步。
2 tf实例理解
参见:ROS探索总结(十二)——坐标系统3 tf基础教程
参见:ROS探索总结(十二)——坐标系统4 tf功能包的API说明
数据类型变换与参考系
发布tf变换广播
接收并使用tf广播
异常
5 命令行工具
虽然tf是ROS中的一个代码链接库,但是仍然提供了丰富的命令行工具来帮助用户调试和创建tf变换。5.1 tf_monitor
tf_monitor工具的功能是打印tf树中的所有参考系信息,通过输入参数来查看指定参考系之间的信息。命令格式如下:
tf_monitor
tf_monitor <source_frame> <target_target>
示例结果如下图所示:
5.2 tf_echo
tf_echo工具的功能是查看指定参考系之间的变换关系。命令的格式如下:
tf_echo <source_frame> <target_frame>
示例效果如下图所示:
5.3 static_transform_publisher
static_transform_publisher工具的功能是发布两个参考系之间的静态坐标变换,两个参考系一般不发生相对位置变化。命令的格式如下:
static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
以上两种命令格式,需要设置坐标的偏移和旋转参数,偏移参数都使用相对于xyz三轴的坐标位移,而旋转参数第一种命令格式使用以弧度为单位的 yaw/pitch/roll三个角度(yaw是围绕x轴旋转的偏航角,pitch是围绕y轴旋转的俯仰角,roll是围绕z轴旋转的翻滚角),而第二种命令格式使用四元数表达旋转角度。发布频率以ms为单位,一般100ms比较合适。
该命令不仅可以在终端中使用,还可以在launch文件中使用,使用方式如下:
<launch> <node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 1 link1_parent link1 100" /> </launch>
5.4 view_frames
view_frames 是可视化的调试工具,可以生成pdf文件,来显示整棵tf树的信息。命令行的执行方式如下:
$ rosrun tf view_frames $ evince frames.pdf
5.5 roswtf plugin
roswtf是ROS中自查的工具,也可以作为组件使用。针对tf,roswtf可以检查tf的配置并发现常见问题。命令的使用方式如下:
$ roswtf
6 如何调试tf
参见:调试tf问题参考链接
tf : http://wiki.ros.org/tftf设计:http://wiki.ros.org/tf/Design
tf教程:http://wiki.ros.org/tf/Tutorials
tf: The transform library:http://wiki.ros.org/Papers/TePRA2013_Foote
----------------------------------------------------------------欢迎大家转载我的文章。转载请注明:转自古-月http://blog.csdn.net/hcx25909欢迎继续关注我的博客
相关文章推荐
- 收集的ROS防火墙脚本
- ROS限速脚本 动态限速 固定限速
- ROS超智能的脚本
- ROS 采用NAT方式提高双线转发效率的方法
- ROS最正确的限速--------小包优先+带宽均分+简单队列限制上传速度
- ROS用流量监控动态控制限速点(新方法)----预留带宽
- ROS與二層交換機3COM(4200)做24個多出口ADSL(固定IP)拔號
- ROS莫明掉线断流的解决方法
- 如何使用ROS 限制BT下载
- ros防火墙脚本(经典推荐)
- ROS加强精通过程--禁止 未授权用户上网
- ROS最正确的限速--------小包优先+带宽均分+简单队列限制上传速度
- Ros强开指定首页,类似电信的ADSL强开指定首页,即push功能
- ROS做PCQ集体限速图
- ROS软路由 IPSec配置
- 关于类似于电信弹出广告(push业务),使用ROS与简单web服务器实现
- 在routeros中只允许用户dhcp上网
- Ros固定IP共享上网设置
- ROS 封QQ脚本
- learn ros] 环境搭建及源码下载