加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

机器人操作操作系统ROS:Tf/教程/ tf介绍

(2014-09-11 21:31:04)
标签:

机器人操作系统ros

tf

转换矩阵

分类: ROS机器人操作系统知识1

· Tf/教程/ tf介绍

 

Note: This tutorial assumes you have working knowledge of compiling programs in ROS. Check out the ROS tutorials to learn how to do this. 

 

 It is appreciated that problems/questions regarding this tutorial are asked on answers.ros.orgDon't forget to include in your question the link to this page, versions of your OS ROS, and also add appropriate tags.

1. tf介绍

  描述:本教程将主要描述tf的功能。它显示了使用tf驱动turtlesim多机器人的例子。还介绍了使用tf_echoview_frames,和rviz

  关键词:变换,坐标系


  等级:新手教程

  下个教程:写一个tf广播 (Python) (C++)

目录:

1. tf介绍

2. 编译演示

3. 运行演示

4. 发生了什么事

5. tf工具

· 使用view_frames

· 使用tf_echo

6. rviztf

选择你想要的教程版本:indigo

选择你的使用的编译系统:catkin

 

2. 编译演示

我们以获得依赖和编译演示包开始:

rosdep install turtle_tf rviz

3. 运行Demo

现在,我们编译the turtle_tf tutorial包,运行demo. 

roslaunch turtle_tf turtle_tf_demo.launch

你能看见turtlesim以两个小乌龟开始: 

http://s12/bmiddle/003nvWQTgy6LXR7kY1tbb&690tf介绍" /> 

为了防止程序卡死workaround is available.) 

turtlesim开始后,你可以使用键盘箭头控制小乌龟在turtlesim周围移动,选择roslaunch终端窗口以便捕捉您的键盘信息去驱动乌龟。

http://s12/bmiddle/003nvWQTgy6LXR5EWXV1b&690tf介绍" /> 

正如你看到的,一个乌龟会不断跟随你驱动的小乌龟移动。

4. 发生了什么

本演示使用TF库创建三个坐标系:世界坐标系, turtle1坐标系和turtle2坐标系。本教程采用一个tf广播公布的乌龟坐标系和一个tf监听器来计算小乌龟坐标系之间的差距,并且驱动一个小乌龟跟上另外一个。

5.  tf工具 

现在我们看看tf如何创建这个演示demo。同时,我们使用tf工具去观察屏幕下tf是怎样工作的。

5.1 使用可视化框架(view_frames

view_frames 创建一个ROS中发布tf的框图

可以看到

 Transform Listener initing

 Listening to /tf for 5.000000 seconds

 Done Listening 

 dot Graphviz version 2.16 (Fri Feb  12:52:03 UTC 2008)

 

 Detected dot version 2.16

 frames.pdf generated

 

这是一个tf监听者去接收ROS中发布放坐标系,把坐标系之间的联系画成树状,想看树时

evince frames.pdf

http://s14/bmiddle/003nvWQTgy6LXR4rKC9fd&690tf介绍" /> 

 

从这里,我们可以看出tf发布的坐标系有三个the world, turtle1, and turtle2. 同样,我们看到 worldturtle1turtle2是 frames. 为了调试方便, view_frames 报告了一些关于接收到的旧坐标与最新坐标的转换以及发布tf坐标系的快慢的诊断信息

5.2 使用tf_echo

tf_echo打印显示了ROS中两个坐标系发布的transform信息。 

使用方法

$ rosrun tf tf_echo [reference_frame] [target_frame]

让我们看看 turtle2关于turtle1坐标系的transform frame,等价于http://s15/small/003nvWQTgy6LXR2hbvE0e&690tf介绍" /> 

rosrun tf tf_echo turtle1 turtle2

你能看到 ROStf_echo监听器接收到的坐标系,显示如下:

INFO] 1253585683.529245000: Started node [/tf_echo_1253585683508144000], pid [24418], bound on [aqy], xmlrpc port [41125], tcpros port [57369], logging to [~/ros/ros/log/tf_echo_1253585683508144000_24418.log], using [real] time

Exception thrown:Frame id /turtle1 does not exist! When trying to transform between /turtle2 and /turtle1.

The current list of frames is:

 

Success at 1253585684.557003974

[0.000000 0.000000 0.140754 0.990045] Euler(0.282446 -0.000000 0.000000)

Translation: [-0.000036 -0.000010 0.000000]

Success at 1253585685.544698953

[0.000000 0.000000 0.140754 0.990045] Euler(0.282446 -0.000000 0.000000)

Translation: [-0.000036 -0.000010 0.000000]

Success at 1253585686.557049989

[0.000000 0.000000 0.140754 0.990045] Euler(0.282446 -0.000000 0.000000)

Translation: [-0.000036 -0.000010 0.000000]

Success at 1253585687.552628993

[0.000000 0.000000 0.140754 0.990045] Euler(0.282446 -0.000000 0.000000)

Translation: [-0.000036 -0.000010 0.000000]

Success at 1253585688.553683042

[0.000000 0.000000 0.140754 0.990045] Euler(0.282446 -0.000000 0.000000)

Translation: [-0.000036 -0.000010 0.000000]

Success at 1253585688.910640001

[0.000000 0.000000 0.140754 0.990045] Euler(0.282446 -0.000000 0.000000)

Translation: [-0.000036 -0.000010 0.000000]

当你驱动小乌龟在附近运动时,你能看见两小乌龟位置相对变化时的坐标变化信息。 

6. rviztf

检查tf变换时,rviz 是一个实用的可视化工具。下面,我们使用turtle_tf配置文件(rviz-d选项)启动rviz,来看我们的小乌龟坐标系: http://s11/mw690/003nvWQTgy6LXR0mFg67a&690tf介绍" TITLE="机器人操作操作系统ROS:Tf/教程/ tf介绍" />

在一边的信息栏里,能看见通过tf发布的坐标系。当你驱动小乌龟运动时,你能从rviz中看到坐标系的移动。

现在我们已经验证了turtle_tf_demo,下面我们来看看怎么编写这个演示的发布程序(Python) (C++) 

 

 

 

原文链接:tf/教程

翻译:Ms. Wang

转载请注明。

尊重他人劳动成果。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有