pr2_tactile_sleeve_forearm_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 
00006 import roslib; roslib.load_manifest('hrl_fabric_based_tactile_sensor')
00007 import rospy
00008 from hrl_msgs.msg import FloatArray
00009 
00010 import hrl_lib.util as ut
00011 import hrl_lib.transforms as tr
00012 
00013 import hrl_fabric_based_tactile_sensor.adc_publisher_node as apn
00014 
00015 from m3skin_ros.msg import RawTaxelArray
00016 from geometry_msgs.msg import Transform
00017 
00018 from m3skin_ros.srv import None_TransformArray, None_TransformArrayResponse
00019 from m3skin_ros.srv import None_String
00020 from sensor_msgs.msg import JointState
00021 
00022 from pr2_tactile_sleeve_driver_node import Tactile_Sleeve
00023 
00024 def joint_states_cb(data):
00025     global ignore_forearm_taxel0
00026 
00027     idx = data.name.index('r_wrist_flex_joint')
00028     ang = data.position[idx]
00029 
00030     if abs(ang) >  math.radians(70.):
00031         ignore_forearm_taxel0 = True
00032     else:
00033         ignore_forearm_taxel0 = False
00034 
00035 
00036 
00037 if __name__ == '__main__':
00038     import optparse
00039     p = optparse.OptionParser()
00040 
00041     p.add_option('--arm_to_use', action='store',
00042                  dest='arm', type='string',
00043                  help='l or r')
00044 
00045     opt, args = p.parse_args()
00046 
00047     if opt.arm != 'r' and opt.arm != 'l':
00048         rospy.logerr('Invalid arm_to_use')
00049         raise RuntimeError('Invalid arm_to_use')
00050 
00051     ts = Tactile_Sleeve(opt.arm)
00052     raw_data_forearm_pub = rospy.Publisher('pr2_fabric_forearm_sensor/taxels/raw_data',
00053                                            RawTaxelArray)
00054     rospy.Service('pr2_fabric_forearm_sensor/taxels/srv/local_coord_frames',
00055                   None_TransformArray, ts.local_coord_frames_forearm_cb)
00056     rospy.Service('pr2_fabric_forearm_sensor/taxels/srv/link_name', None_String,
00057                   ts.link_name_forearm_cb)
00058 
00059 
00060     global ignore_forearm_taxel0
00061     ignore_forearm_taxel0 = False
00062     rospy.Subscriber('/joint_states', JointState, joint_states_cb)
00063 
00064     rospy.init_node('fabric_tactile_sleeve_driver_node')
00065 
00066     baudrate = 115200
00067     dev1_nm = '/dev/robot/arduino1'
00068     dev1 = apn.setup_serial(dev1_nm, baudrate)
00069 
00070     for i in range(10):
00071         dev1.readline()
00072     
00073     rospy.loginfo('Started publishing data')
00074 
00075 
00076     # hack, hack, hack!
00077     adc_data = apn.get_adc_data(dev1, 32)
00078 a   forearm_taxel0_dummy_val = adc_data[0] - 30
00079 
00080     rta2 = RawTaxelArray()
00081     while not rospy.is_shutdown():
00082         adc_data = apn.get_adc_data(dev1, 32)
00083         
00084         #forearm_vals = adc_data[0:12]
00085         forearm_vals = adc_data[0:13] + adc_data[14:15]
00086         if ignore_forearm_taxel0:
00087             forearm_vals[0] = forearm_taxel0_dummy_val # hack!
00088         rta2.val_z = forearm_vals
00089         raw_data_forearm_pub.publish(rta2)
00090 
00091     dev1.close()
00092 
00093 
00094 


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