在ROS中,如何将姿势从kinect框架转换为PR2的base_link框架?

时间:2019-05-09 07:34:37

标签: python ros coordinate-transformation

我对tf感到困惑。我正在做一个抓人的项目。我的视觉伙伴正在给我一个姿势,在相机框架中,或者在运行机器人时,是机器人的Kinect框架(PR2机器人)。现在,为了抓住那个对象,我需要在机器人的base_link框架中获取姿势,因为moveit界面使用了该框架。

最初,我的想法是可以使用tf的查找转换方法来完成此操作,但是现在我知道这仅在不同帧之间进行转换。为了得到我需要的东西,它是对象在base_link帧中的位置,我应该使用transformListener方法。我仍然对两者之间的差异感到困惑。我正在使用python。如果有人可以给我提供示例工作的transformListener代码,那也会有所帮助。

1 个答案:

答案 0 :(得分:0)

我得到了答案,所以是这样的:

import tf2_ros
import tf2_geometry_msgs #import the packages first

tf_buffer = tf2_ros.Buffer(rospy.Duration(1200.0)) #tf buffer length
tf_listener = tf2_ros.TransformListener(tf_buffer)
transform = tf_buffer.lookup_transform("base_link",
                                   poseStampedToTransform.header.frame_id, #source frame
                                   rospy.Time(0), #get the tf at first available time
                                   rospy.Duration(1.0))
pose_transformed = tf2_geometry_msgs.do_transform_pose(poseStampedToTransform, transform)
print("pose_transformed",pose_transformed.pose)