没有合适的资源?快使用搜索试试~ 我知道了~
ROS::TF_TePRA2013_Foote.pdf
需积分: 6 0 下载量 25 浏览量
2019-10-18
11:09:26
上传
评论
收藏 401KB PDF 举报
温馨提示
tf: The transform library tf is a package that lets the user keep track of multiple coordinate frames over time. tf maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.
资源推荐
资源详情
资源评论
tf: The Transform Library
Tully Foote
Open Source Robotics Foundation
Mountain View, CA 94043
Email: tfoote@osrfoundation.org
Abstract—The tf library was designed to provide a standard
way to keep track of coordinate frames and transform data
within an entire system such that individual component users
can be confident that the data is in the coordinate frame that
they want without requiring knowledge of all the coordinate
frames in the system. During early development of the Robot
Operating System (ROS), keeping track of coordinate frames
was identified as a common pain point for developers. The
complexity of this task made it a common place for bugs
when developers improperly applied transforms to data. The
problem is also a challenge due to the often distributed sources
of information about transformations between different sets of
coordinate frames. This paper will explain the complexity of the
problem and distill the requirements. Then it will discuss the
design of the tf library in relation to the requirements. A few use
cases will be presented to demonstrate successful deployment of
the library. And powerful extensions to the core capabilities such
as being able to transform data in time as well as in space.
I. INTRODUCTION
When doing tasks with a robot it is crucial that the robot be
aware of where it is itself as well as where the rest of the world
is in relation to itself. A simple example which demonstrates
this well is a mobile robot finding a red ball and touching
with it’s gripper. The challenge is simply to move the gripper
toward the ball. However, to do this simple task the relationship
between the ball and the gripper must be known. If there is a
sensor in the room which can find the ball in space the required
computation is to compute the transform from the sensor, to
the room, to the base of the robot to the torso, to the shoulder,
to the elbow, to the wrist, to the gripper. Then to compare
that to the position of the ball, as you can only compare the
position of the two objects in the same coordinate frame. If the
result of this is that the gripper must move 3 cm to the left in
the coordinate frame of the sensor. To compute what motion
the robot should make, the 3 cm to the left in the sensor frame
must be transformed into the coordinate frame of the torso, by
computing the transform from the sensor to the room, to the
base, to the torso. And from that it can be found that 3 cm left
in the sensor frame is actually 3cm down in the torso frame.
So the robot simply has to move the arm down 3cm.
This is a relatively simple robotic system, but to do this
calculation required knowledge of the entire system. Robotic
systems, including sensors, motors, computation, and commu-
nication, quickly grow complex even when designed to be
simple. As robotic systems grow in complexity the ability
of any subsystem to have complete knowledge about the rest
of the system diminishes, and the designer of a component
must consider exactly what information is necessary for their
module to complete its task. When in a single computer much
of this is a challenge of designing interfaces to provide all
the information between modules. As robotic systems become
more distributed across multiple computers there is a point
where not all information can be made available due to
limitations in bandwidth.
It would be very powerful if the programmer could simply
request from a library, what is the vector that I need to move
the gripper with respect to the torso such that it will touch
the ball. This is the actual question which is relevant to the
task, and the programmer does not need to know about the
configuration of any of the intermediate links. If this was a
more complicated system with a second robot observing the
ball from the other side of the table it would not make a
difference to the programmer, nor if the sensor was mounted
on the head of the robot. The request is the same in every
case, and the programmer only needs to know the coordinate
frames in which they want to operate and those relevant to the
task, as long as the system knows the intermediate frames and
can compute the resultant transforms.
The tf library was designed to provide a standard way to
keep track of coordinate frames and transform data within
the entire system such that individual component users can
be confident that the data is in the coordinate frame that
they want without requiring knowledge of all the coordinate
frames in the system. As robotic systems get more and more
complicated, being able to focus on precisely the task frame
and only the relevant coordinate frames becomes critical. Most
robotic systems are fusing data from many different sensors
with different coordinate frames.
The tf library was developed as ROS package to provide
this capability. [1] The tf library has two standard modules, a
Broadcaster and Listener. These two modules are designed to
integrate with and the ROS ecosystem but are generally useful
outside of ROS [2].
II. RELATED WORK
The tf library is most closely related to the concept of a
scene graph. A scene graph is a common type of data structure
used to represent a 3D scene for rendering.
Scene graphs are used heavily in visualizers for rendering
3D scenes as well as in robotic simulators for basically the
same purpose [3] [4] [5].
Scene graphs typically consist of a tree of objects to be
rendered. Every object is attached to a parent object with a
position and other information. Depending on the application
the other information can range from visualization meshes for
pure rendering to update rules and inertial properties for the
simulators.
资源评论
tianyingang
- 粉丝: 129
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- `window.history`对象在JavaScript中提供了哪些方法
- 基于Springboot+Vue的民宿在线预定平台的设计与实现
- 基于Springboot+Vue的智慧社区系统的设计与实现
- Java中的`java.util.stream.Collectors.averagingLong()`方法有什么作用
- 基于Springboot+Vue的电影评论网站系统的设计与实现
- Q绑查手机查地区.zip
- 基于Springboot+Vue的智能物流管理系统的设计与实现
- 数字图像处理大作业-matlab实现的蓝绿黄白四色车牌识别源码(高分项目)
- 基于Springboot+Vue的车辆管理系统的设计与实现
- Java面试题目以及答案3.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功