【ROS2】中级:tf2-编写监听器(Python)

目标:学习如何使用 tf2 获取帧变换。

教程级别:中级

 时间:10 分钟

 目录

  •  背景

  •  先决条件

  •  任务

    • 1. 编写监听节点

    • 2. 更新启动文件

    • 3. 构建

    • 4. 运行

  •  摘要

 背景

在之前的教程中,我们创建了一个 tf2 广播器来发布乌龟的姿态到 tf2

在本教程中,我们将创建一个 tf2 监听器以开始使用 tf2

 先决条件

本教程假设您已经完成了 tf2 静态广播器教程(Python)和 tf2 广播器教程(Python)。在上一个教程中,我们创建了一个 learning_tf2_py 包,我们将继续在此基础上进行工作。

 任务

1. 编写监听节点

让我们首先创建源文件。转到我们在上一个教程中创建的 learning_tf2_py 包。在 src/learning_tf2_py/learning_tf2_py 目录中,通过输入以下命令下载示例监听器代码:

wget https://raw.githubusercontent.com/ros/geometry_tutorials/ros2/turtle_tf2_py/turtle_tf2_py/turtle_tf2_listener.py

现在使用您喜欢的文本编辑器打开名为 turtle_tf2_listener.py 的文件。

# 版权 2021 开源机器人基金会,公司。
#
# 根据Apache许可证版本2.0(“许可证”)许可;
# 除非符合许可证,否则不得使用此文件。
# 您可以在以下位置获取许可证副本:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# 除非适用法律要求或书面同意,否则在许可证下分发的软件
# 将按“原样”基础分发,无任何形式的明示或暗示
# 保证或条件。有关在许可证下管理权限和
# 限制的语言,请参阅许可证。


import math  # 导入数学库


from geometry_msgs.msg import Twist  # 从geometry_msgs包导入Twist消息


import rclpy  # 导入ROS客户端库
from rclpy.node import Node  # 从rclpy.node导入Node类


from tf2_ros import TransformException  # 从tf2_ros导入TransformException异常
from tf2_ros.buffer import Buffer  # 从tf2_ros.buffer导入Buffer类
from tf2_ros.transform_listener import TransformListener  # 从tf2_ros.transform_listener导入TransformListener类


from turtlesim.srv import Spawn  # 从turtlesim.srv导入Spawn服务




class FrameListener(Node):  # 定义FrameListener类,继承自Node类


    def __init__(self):  # 定义初始化函数
        super().__init__('turtle_tf2_frame_listener')  # 调用父类初始化函数,设置节点名为'turtle_tf2_frame_listener'


        # 声明并获取`target_frame`参数
        self.target_frame = self.declare_parameter(
            'target_frame', 'turtle1').get_parameter_value().string_value  # 声明并获取'target_frame'参数,默认值为'turtle1'


        self.tf_buffer = Buffer()  # 创建tf缓冲区
        self.tf_listener = TransformListener(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值