P186静态坐标变换 python 发布方(发布两个坐标系相对关系)

1.代码 

#! /usr/bin/env python

# 1.导包
import rospy
import tf.transformations
import tf2_ros
import tf
from geometry_msgs.msg import TransformStamped

""" 
    发布方:发布两个坐标系的相对关系(车辆底盘--base_link 和 雷达--laser
    流程:
        1.导包
        2.初始化节点
        3.创建发布者对象
        4.组织被发布的数据
        5.发布数据
        6.spin()
        #若不添加spin(),节点发布完,直接结束了。它的作用是启动一个 ROS 节点的事件处理循环,等待相应回调函数的触发
 """




if __name__ == "__main__":
    # 2.初始化 ROS 节点
    rospy.init_node("static_pub_p")
    # 3.创建发布对象  静态坐标广播器
    pub = tf2_ros.StaticTransformBroadcaster()#需要导包tf2_ros
    # 4.创建并组织被发布的消息
    #消息是geometry_msgs/TransformStamped,需要导包geometry_msgs.msg
    ts = TransformStamped()
    #消息格式见5.1.1
    # --- 头信息
    # header
    #tf.header.seq = 101#seq序列号可不用设置
    ts.header.stamp = rospy.Time.now()
    ts.header.frame_id = "base_link"#父坐标系
    
    # --- 子坐标系
    #child frame
    ts.child_frame_id = "laser"
    # --- 坐标系相对信息
    # ------ 偏移量(子坐标系相对父坐标系,在xyz轴上的偏移量)
    ts.transform.translation.x = 0.2
    ts.transform.translation.y = 0.0
    ts.transform.translation.z = 0.5
    # ------ 四元数
    #子坐标系相对父坐标线上,角度的偏移;翻滚x,俯仰y,偏航z
    #一般不直接设置四元数,先设置欧拉角(本次雷达相对小车均为0),再转换为四元数(此时xyz均为0,w=1)
    #需要导包tf
    qtn = tf.transformations.quaternion_from_euler(0,0,0)#从欧拉角获取四元数
    ts.transform.rotation.x = qtn[0]
    ts.transform.rotation.y = qtn[1]
    ts.transform.rotation.z = qtn[2]
    ts.transform.rotation.w = qtn[3]

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值