python - ROS frame transformation (camera to base) -
i working baxter robot , trying position of object using augmented reality markers , move hand position in order grasp it.
i using ar_tools
package position/orientation of object, respect head_camera
using. last couple of days i've been experimenting how change reference frame (head_camera
) base frame frame used moveit
make plans. have tried set frame_id
of header of message receive ar_tools
manually 'base'
:
pose_target.header.frame_id = 'base'
but position , orientation getting still wrt head_camera
. tried do:
self.tl.lookuptransform("/base", "/head_camera", self.t)
where self.t = self.tl.getlatestcommontime("/head_camera", "/base")
, getting extrapolation error.
the transformation requires extrapolate in past
(i can't remember , i'm not in lab.) thought might need run lookuptransform
head_cam
head
, head
torso
, torso
baxter's base
.
could guide me on how change frame of marker of ar_tools
head_camera
base
?
also, extrapolation error, there way in static way?
there more straightforwards way this, presuming you're reviving posestamped
message ar_tools
:
on_received_pose(pose): ''' handler poses ar_tools ''' if self.tl.waitfortransform(pose.header.frame_id, "/base", pose.header.stamp, rospy.duration(0.1)): # line prevents extrapolation error, waits 0.1 seconds transform become valid transd_pose = self.tl.transformpose("/base",pose) # whatever transformed pose here else: rospy.logwarn('couldn\'t transform "{}" "/base" before timeout. updating tf tree sufficiently?'.format(pose.header.frame_id))
you're getting extrapolation error because transform network wasn't formed @ time got first message; tf
refuses extrapolate, interpolate, if haven't received @ least 1 transform message every frame both before , after (or at) timestamp you're trying transform to, throw exception. added if
statement checks see if can perform transform before trying so. of course surround transformpose()
call in try/catch
block instead, feel tf
makes more explicit you're trying do.
in general, check out simple ros tf python tutorial more examples/modes of operation.
Comments
Post a Comment