31 from __future__
import absolute_import
35 from tf2_msgs.msg
import TFMessage
36 from geometry_msgs.msg
import TransformStamped
38 from rc_reason_msgs.srv
import HandEyeCalibration, HandEyeCalibrationRequest
39 from rc_reason_msgs.srv
import HandEyeCalibrationTrigger
40 from rc_reason_msgs.srv
import SetHandEyeCalibration
41 from rc_reason_msgs.srv
import SetHandEyeCalibrationPose
43 from .rest_client
import RestClient
49 super(HandEyeCalibClient, self).
__init__(
'rc_hand_eye_calibration')
55 self.
pub_tf = rospy.Publisher(
'/tf_static', TFMessage, queue_size=1, latch=
True)
66 self.
pub_cb(
'get_calibration', HandEyeCalibration, HandEyeCalibrationRequest())
70 if not response.success:
71 rospy.logwarn(
"service %s: %s", srv_name, response.message)
74 def pub_cb(self, srv_name, srv_type, request):
75 """Handle service call and publish hand-eye-calib if successful"""
80 rospy.logwarn(
"service %s: %s", srv_name, response.message)
84 transform = TransformStamped()
85 transform.transform.translation.x = pose.position.x
86 transform.transform.translation.y = pose.position.y
87 transform.transform.translation.z = pose.position.z
88 transform.transform.rotation = pose.orientation
89 transform.header.stamp = rospy.Time.now()
95 rospy.loginfo(
"publishing hand-eye calibration from {} to {}".format(transform.header.frame_id, transform.child_frame_id))
96 self.
pub_tf.publish(TFMessage(transforms=[transform]))
104 except KeyboardInterrupt:
108 if __name__ ==
'__main__':