使用环境ROS MELODIC, Python 2.7
在ROS中使用tf监听两个frame的变换关系时,出现以下报错

Traceback (most recent call last):
  File "controller.py", line 241, in <module>
    print(tf_listener.lookupTransform("base_link", "base", rospy.Time().now()))
  File "/opt/ros/melodic/lib/python2.7/dist-packages/tf/listener.py", line 104, in lookupTransform
    msg = self._buffer.lookup_transform(strip_leading_slash(target_frame), strip_leading_slash(source_frame), time)
  File "/opt/ros/melodic/lib/python2.7/dist-packages/tf2_ros/buffer.py", line 87, in lookup_transform
    return self.lookup_transform_core(target_frame, source_frame, time)
tf2.LookupException: "base_link" passed to lookupTransform argument target_frame does not exist.

本人代码如下

import tf
tf_listener = tf.TransformListener()
(trans,rot) = tf_listener.lookupTransform('base', 'base_link', rospy.Time(0))

发现print(tf_listener.canTransform("base", "base_link", rospy.Time().now()))时,输入的第一个是0,之后都是1
在代码中加入判断后,运行正常

import tf
tf_listener = tf.TransformListener()
if tf_listener.canTransform("base", "base_link", rospy.Time().now()):
	(trans,rot) = tf_listener.lookupTransform('base', 'base_link', rospy.Time(0))
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐