pr2_tactile_sleeve_pps_driver_node.py
Go to the documentation of this file.
00001 #!/usr/bin/python
00002 
00003 import sys
00004 import math, numpy as np
00005 import copy
00006 
00007 import roslib; roslib.load_manifest('hrl_fabric_based_tactile_sensor')
00008 import rospy
00009 
00010 import hrl_lib.util as ut
00011 import hrl_lib.transforms as tr
00012 
00013 from m3skin_ros.msg import RawTaxelArray
00014 from geometry_msgs.msg import Transform
00015 
00016 from m3skin_ros.srv import None_TransformArray, None_TransformArrayResponse
00017 from m3skin_ros.srv import None_String
00018 
00019 from pr2_tactile_sleeve_driver_node import Tactile_Sleeve
00020 
00021 roslib.load_manifest('pr2_msgs')
00022 from pr2_msgs.msg import PressureState
00023 
00024 def pps_cb(msg):
00025     global l_fingertip, r_fingertip
00026     l_fingertip = copy.copy(msg.l_finger_tip)
00027     r_fingertip = copy.copy(msg.r_finger_tip)
00028 
00029 
00030 if __name__ == '__main__':
00031     import optparse
00032     p = optparse.OptionParser()
00033 
00034     p.add_option('--arm_to_use', action='store',
00035                  dest='arm', type='string',
00036                  help='l or r')
00037 
00038     opt, args = p.parse_args()
00039 
00040     if opt.arm != 'r' and opt.arm != 'l':
00041         rospy.logerr('Unsupported arm_to_use')
00042         raise RuntimeError('Unsupported arm_to_use')
00043 
00044     ts = Tactile_Sleeve(opt.arm)
00045 
00046     raw_data_left_pps_pub = rospy.Publisher('pr2_pps_left_sensor/taxels/raw_data',
00047                                            RawTaxelArray)
00048 
00049     raw_data_right_pps_pub = rospy.Publisher('pr2_pps_right_sensor/taxels/raw_data',
00050                                            RawTaxelArray)
00051 
00052     rospy.Service('pr2_pps_left_sensor/taxels/srv/local_coord_frames',
00053                   None_TransformArray, ts.local_coord_frames_pps_left_cb)
00054     rospy.Service('pr2_pps_left_sensor/taxels/srv/link_name', None_String,
00055                   ts.link_name_pps_left_cb)
00056 
00057     rospy.Service('pr2_pps_right_sensor/taxels/srv/local_coord_frames',
00058                   None_TransformArray, ts.local_coord_frames_pps_right_cb)
00059     rospy.Service('pr2_pps_right_sensor/taxels/srv/link_name', None_String,
00060                   ts.link_name_pps_right_cb)
00061 
00062     global l_fingertip, r_fingertip
00063     l_fingertip = None
00064     r_fingertip = None
00065 
00066     if opt.arm == 'l':
00067       input_topic = '/pressure/l_gripper_motor'
00068     if opt.arm == 'r':
00069       input_topic = '/pressure/r_gripper_motor'
00070 
00071     rospy.Subscriber(input_topic, PressureState, pps_cb)
00072 
00073     rospy.init_node('pps_driver_node')
00074 
00075     rospy.loginfo('waiting for fingertip data')
00076     while r_fingertip == None:
00077         rospy.sleep(0.1)
00078     
00079     rospy.loginfo('Started publishing data')
00080 
00081     rta_left = RawTaxelArray()
00082     rta_right = RawTaxelArray()
00083 
00084     import time
00085     start = time.time()
00086     while not rospy.is_shutdown():
00087         l = l_fingertip
00088         r = r_fingertip
00089 
00090         #front, bottom, top is order of taxels
00091         data_left = [l[3]+l[4], l[5]+l[6], l[1]+l[2]]
00092         rta_left.val_z = data_left
00093 
00094         #front, bottom, top is order of taxels
00095         data_right = [r[3]+r[4], r[1]+r[2], r[5]+r[6]]
00096         rta_right.val_z = data_right
00097 
00098         raw_data_left_pps_pub.publish(rta_left)
00099         raw_data_right_pps_pub.publish(rta_right)
00100 
00101         rospy.sleep(0.02)
00102 
00103 
00104 
00105 


hrl_fabric_based_tactile_sensor
Author(s): Advait Jain, Advisor: Prof. Charles C. Kemp. Healthcare Robotics Lab, Georgia Tech
autogenerated on Wed Nov 27 2013 12:02:33