[ROS] 小乌龟跟随--学习笔记

  首先是使用到的依赖项:rospy、tf,可以手动在package.xml里添加,如果使用vscode创建功能包,则在填写依赖项时会帮我们补充完整

接下来是创建第一只小乌龟的并广播坐标系的py文件代码:

命名为demo01_turtle1

#! /usr/bin/env python
# coding: utf-8

import rospy
from turtlesim.msg import Pose
from tf.broadcaster import TransformBroadcaster
from tf.transformations import quaternion_from_euler


def pose_callback(msg):
    if not isinstance(msg, Pose):
        return

    x = msg.x
    y = msg.y
    theta = msg.theta

    translation = (x, y, 0)
    rotation = quaternion_from_euler(0, 0, theta)

    broadcaster.sendTransform(translation, rotation, rospy.Time().now(), "turtle1", "world")


if __name__ == '__main__':
    node_name = "demo01_turtle1"
    rospy.init_node(node_name)
    broadcaster = TransformBroadcaster()

    pose_topic_name = "/turtle1/pose"
    rospy.Subscriber(pose_topic_name, Pose, pose_callback)
    rospy.spin()

下面详细地解释每一行代码的作用:

import rospy                                               # 导入ROS库
from turtlesim.msg import Pose                             # 从msg文件里导入乌龟Pose消息
from tf.broadcaster import TransformBroadcaster            # 通过 TransformBroadcaster 类来发布变换关系的接口
from tf.transformations import quaternion_from_euler       # 导入欧拉角转化成四元数的函数

def pose_callback(msg):
    if not isinstance(msg, Pose):                              # 判断数据类型,数据不符合就退出函数
        return
    x = msg.x                                                  # 赋值,用于计算四元数和广播坐标系
    
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值