В ROS, как преобразовать позу из кадра kinect в кадр base_link PR2? - PullRequest
1 голос
/ 09 мая 2019

У меня путаница с тф. Я работаю над захватывающим проектом. Мой партнер по зрению дает мне позу объекта в кадре камеры или при запуске робота, кадр робота Kinect (робот PR2). Теперь, чтобы понять этот объект, мне нужно получить позу в кадре base_link робота, так как этот кадр используется интерфейсом moveit.

Изначально я думал, что я могу сделать это, используя метод преобразования поиска tf, но теперь я понял, что это дает только преобразование между различными кадрами. Чтобы получить то, что мне нужно, это местоположение объекта в кадре base_link, я должен использовать метод transformListener. Я все еще смущен разницей между ними. Я работаю с питоном. Если бы кто-нибудь мог дать мне пример рабочего кода transformListener, это также было бы полезно.

1 Ответ

0 голосов
/ 12 мая 2019

Я получил ответ, так что это так:

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)
...