【ROS2】中级:tf2- 使用时间 (C++)

目标:学习如何在特定时间获取变换,并使用 lookupTransform() 函数等待 tf2 树上的变换可用。

教程级别:中级

 时间:10 分钟

 目录

  •  背景

  •  任务

    • 1 更新侦听器节点

    • 2. 修复监听器节点

    • 3 检查结果

  •  摘要

 背景

在之前的教程中,我们通过编写 tf2 广播器和 tf2 监听器重新创建了 turtle 演示。我们还学习了如何向变换树添加新帧,并了解了 tf2 如何跟踪坐标帧的树。这个树会随着时间变化,tf2 会为每个变换存储一个时间快照(默认情况下最多 10 秒)。到目前为止,我们使用 lookupTransform() 函数来获取 tf2 树中最新的可用变换,而不知道该变换是在什么时间记录的。本教程将教您如何在特定时间获取变换

 任务

1 更新监听器节点

让我们回到添加框架教程结束的地方。转到 learning_tf2_cpp 包。打开 turtle_tf2_listener.cpp 并查看 lookupTransform() 调用:

try {
    t = tf_buffer_->lookupTransform(
       toFrameRel,
       fromFrameRel,
       tf2::TimePointZero);
} catch (const tf2::TransformException & ex) {
   

您可以看到我们通过调用 tf2::TimePointZero 指定了一个等于 0 的时间。

 便条

tf2 包有自己的时间类型 tf2::TimePoint ,它不同于 rclcpp::Time 。包中的许多 API tf2_ros 会在 rclcpp::Time 和 tf2::TimePoint 之间自动转换。

rclcpp::Time(0, 0, this->get_clock()->get_clock_type()) 本可以在这里使用,但无论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值