python版tf2_ros做transform

本文介绍了如何使用Python的tf2_ros库进行坐标变换,重点解决了数据类型匹配的问题。通过使用tf2_geometry_msgs模块,避免了手动注册数据类型的困扰,简化了坐标变换的过程。文章提供了一个具体的tf2坐标变换实例。

之前曾想着使用tf2做机器人的'wrist' 到 'world'的tf变换,然而一直没有成功,提示数据的输入形式一直不对,因为在tf2中的输入数据类型必须是一个已经注册的数据,一直卡在这里,最终被迫使用tf进行坐标变换。

最近重新探索了一下tf2做transform的过程,发现只需要改一下数据类型就可以,而我们常用的数据类型其实tf2库已经帮我们注册好啦,使用起来非常方便。下面给出实现过程。

import rospy
import tf2_ros
from tf2_geometry_msgs import PoseStamped,PointStamped

if __name__ == "__main__":
    
    rospy.init_node('tf2_test')
    
    #设置tf2_listener
    tf_buffer=tf2_ros.Buffer()
    tf_listener=tf2_ros.TransformListener(tf_buffer)
    
    #定义要转换的输入
    p=PoseStamped()
    p.header.stamp=rospy.Time()
    p.header.frame_id='rh_wrist'
    p.pose.position.x=1
    p.pose.position.y=1
    p.pose.position.z=2
    p.pose.orientation.x=0
    p.pose.orientation.y=0
    p.pose.orientation.z=0
    p.pose.orientation.w=0

    #trans 是两个帧之间的转换关系,此处不用,直接屏蔽就行  
    #trans=tf_buffer.lookup_transform('world','rh_wrist',time=rospy.Time(0),timeout=rospy.Duration(5))
   

    res=tf_buffer.transform(p,'world',timeout=rospy.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值