主要内容

rostf

接收、发送和应用ROS转换

描述

调用rostf函数创建一个活性氧TransformationTree对象,它允许您访问tf ROS网络共享的坐标转换。您可以接收转换和将它们应用于不同的实体。你也可以发送转换和与其余的ROS分享网络。

ROS使用tf变换库跟踪多个坐标框架之间的关系。相对这些坐标之间的转换框架维护在一个树结构。查询这棵树让你变换姿势和实体点之间的任何两个坐标框架。访问可用的框架,使用的语法:

tfTree.AvailableFrames

使用ros.TransformationTree当连接到一个特定的语法ROS节点,否则使用rostf创建树的转换。

请注意

在未来的版本中,ROS工具箱将使用的消息结构,而不是对象ROS的消息。

现在使用的消息结构,设置“DataFormat”名称-值参数“结构”。有关更多信息,请参见ROS消息结构

创建

描述

例子

tfTree= rostf创建一个活性氧TransformationTree对象。

tfTree= rostf (“DataFormat”、“结构”)使用的消息结构,而不是对象。有关更多信息,请参见ROS消息结构

例子

trtree = ros.TransformationTree (节点)创建一个ROS转换树对象处理,转换树相连。的节点的节点连接到ROS网络发布转换。

tfTree= ros.TransformationTree (节点“DataFormat”,“结构”)使用的消息结构,而不是对象。有关更多信息,请参见ROS消息结构

属性

全部展开

这个属性是只读的。

所有可用的坐标框架列表,指定为一个单元阵列。这可用帧更新列表如果新的转换由转换树接收对象。

例子:{“camera_center”;“mounting_point”;“robot_base”}

数据类型:细胞

这个属性是只读的。

收到的最后一个变换,指定为一个ROS时间对象。

的时间长度转换缓冲,指定为一个标量在几秒钟内。如果你改变缓冲时间的当前值,转换树和所有转换都被重新初始化。你必须等待整个缓冲时间得到充分缓冲完成转换树。

消息格式,指定为“对象”“结构”。必须设置这个属性在创建使用名称-值输入。有关更多信息,请参见ROS消息结构

对象的功能

waitForTransform 等到一个转换是可用的
getTransform 检索两个坐标坐标系之间的转换
变换 消息实体转换成目标坐标系
sendTransform 发送转换ROS网络

例子

全部折叠

连接到一个ROS网络和创建一个转换树。

连接到一个ROS网络。创建一个节点。使用helper函数的示例发布转换数据。

rosinit
启动ROS核心……在0.58514秒内完成。初始化ROS主在http://172.29.207.162:58142上。初始化全局节点/ matlab_global_node_06464 NodeURI http://dcc434238glnxa64:36545和http://localhost MasterURI: 58142。
节点= ros.Node (' / testTf ');
使用主URI http://localhost: 58142全球节点连接到ROS的主人。
exampleHelperROSStartTfPublisher

创建一个转换树。使用结构作为ROS消息数据格式。使用AvailableFrames产权转换框架可用。这些转换之前是分开指定连接到网络。

树= rostf (“DataFormat”,“结构”);暂停(1);tree.AvailableFrames
ans =3 x1细胞{' camera_center} {‘mounting_point} {' robot_base '}

断开与ROS的网络。

rosshutdown
关闭全局节点/ matlab_global_node_06464 NodeURI http://dcc434238glnxa64:36545和http://localhost MasterURI: 58142。在http://172.29.207.162:58142上关闭ROS的主人。

创建一个ROS转换树。然后您可以查看或使用不同的坐标转换信息帧设置在ROS网络。

开始ROS网络和广播样本转换数据。

rosinit
启动ROS核心……在1.0229秒内完成。初始化ROS主在http://172.30.239.26:50443上。初始化全局节点/ matlab_global_node_46536 NodeURI http://dcc815108glnxa64:41793和http://localhost MasterURI: 50443。
节点= ros.Node (' / testTf ');
使用主URI http://localhost: 50443全球节点连接到ROS的主人。
exampleHelperROSStartTfPublisher

检索TransformationTree对象。停下来等待tftree更新。

tftree = ros.TransformationTree(节点,“DataFormat”,“结构”);暂停(1)

视图可用坐标框架和他们去年收到的时候。

帧= tftree.AvailableFrames
帧=3 x1细胞{' camera_center} {‘mounting_point} {' robot_base '}
updateTime = tftree.LastUpdateTime
updateTime =结构体字段:证券交易委员会:1645902688 Nsec: 894180814

等待两个坐标系之间的变换,“camera_center”“robot_base”。这将等到转换是有效的,阻止所有其他操作。5秒的时间。

waitForTransform (tftree“robot_base”,“camera_center”5)

定义一个点在摄像机坐标系

pt = rosmessage (“geometry_msgs / PointStamped”,“DataFormat”,“结构”);pt.Header。FrameId =“camera_center”;pt.Point。X = 3;pt.Point。Y = 1.5;pt.Point。Z = 0.2;

改变点到“base_link”框架。

tfpt =变换(tftree,“robot_base”pt)
tfpt =结构体字段:MessageType:“geometry_msgs / PointStamped”标题:[1 x1 struct]: [1 x1 struct]

显示转换后的点坐标。

tfpt.Point
ans =结构体字段:MessageType:“geometry_msgs /点”X 1.2000 Y: 1.5000 Z: -2.5000

清除ROS节点。关闭ROS的主人。

清楚(“节点”)rosshutdown
关闭全局节点/ matlab_global_node_46536 NodeURI http://dcc815108glnxa64:41793和http://localhost MasterURI: 50443。在http://172.30.239.26:50443上关闭ROS的主人。

限制

  • 在ROS智力的,多个坐标不能发表与冗余帧的时间戳。

扩展功能

版本历史

介绍了R2019b

全部展开

在未来的发布行为改变