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

标签 python ros coordinate-transformation

我对 tf.我正在做一个抓取项目。我的视觉伙伴给我一个相机框架中的物体的姿势,或者在运行机器人时,机器人的 Kinect 框架(PR2 机器人)。现在,为了捕获该对象,我需要获取机器人的 base_link 框架中的姿势,因为该框架由 moveit 接口(interface)使用。

最初,我的想法是我可以使用 tf 的查找变换方法来做到这一点,但现在我开始知道这只能提供不同帧之间的变换。为了获得我需要的东西,即对象在 base_link 框架中的位置,我应该使用 TransformListener 方法。我仍然对两者之间的区别感到困惑。我正在使用 python。如果有人能给我一个示例工作 TransformListener 代码,那也会很有帮助。

最佳答案

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

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)

关于python - 在ROS中,如何将姿势从kinect框架转换为PR2的base_link框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56054356/

相关文章:

c++ - 编译cmake代码时获取 "ld: symbol(s) not found for architecture x86_64"

arrays - 如何计算 3D 坐标的线性索引,反之亦然?

java - 将 OSGB36 转换为 WGS84

python - 名称错误 : global name is not defined

python - 使用 beautifulsoup 以正确的顺序解析项目符号列表

python - 为什么我无法在 Google Colab 中导入 python-rosbag?

python-3.x - 无法将 cv_bridge 与 ROS Kinetic 和 Python3 一起使用

python - 如何在pygame和pyopengl中独立旋转2个对象

python - 如何不把自己。初始化 Python 类中的每个属性时?

php - Delphi 开发人员的最佳 Web 应用程序语言