Go to the documentation of this file.00001
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
00021 from pr2_tactile_sleeve_driver_node import Tactile_Sleeve
00022
00023
00024 if __name__ == '__main__':
00025 import optparse
00026 p = optparse.OptionParser()
00027
00028 p.add_option('--arm_to_use', action='store',
00029 dest='arm', type='string',
00030 help='l or r')
00031
00032 opt, args = p.parse_args()
00033
00034 if opt.arm != 'r' and opt.arm != 'l':
00035 rospy.logerr('Invalid arm_to_use')
00036 raise RuntimeError('Invalid arm_to_use')
00037
00038 ts = Tactile_Sleeve(opt.arm)
00039
00040
00041
00042
00043
00044
00045
00046
00047 raw_data_gripper_right_link_pub = rospy.Publisher('pr2_fabric_gripper_right_link_sensor/taxels/raw_data',
00048 RawTaxelArray)
00049 rospy.Service('pr2_fabric_gripper_right_link_sensor/taxels/srv/local_coord_frames',
00050 None_TransformArray, ts.local_coord_frames_gripper_right_link_cb)
00051 rospy.Service('pr2_fabric_gripper_right_link_sensor/taxels/srv/link_name', None_String,
00052 ts.link_name_gripper_right_link_cb)
00053
00054 raw_data_gripper_left_link_pub = rospy.Publisher('pr2_fabric_gripper_left_link_sensor/taxels/raw_data',
00055 RawTaxelArray)
00056 rospy.Service('pr2_fabric_gripper_left_link_sensor/taxels/srv/local_coord_frames',
00057 None_TransformArray, ts.local_coord_frames_gripper_left_link_cb)
00058 rospy.Service('pr2_fabric_gripper_left_link_sensor/taxels/srv/link_name', None_String,
00059 ts.link_name_gripper_left_link_cb)
00060
00061 raw_data_gripper_palm_pub = rospy.Publisher('pr2_fabric_gripper_palm_sensor/taxels/raw_data',
00062 RawTaxelArray)
00063 rospy.Service('pr2_fabric_gripper_palm_sensor/taxels/srv/local_coord_frames',
00064 None_TransformArray, ts.local_coord_frames_gripper_palm_cb)
00065 rospy.Service('pr2_fabric_gripper_palm_sensor/taxels/srv/link_name', None_String,
00066 ts.link_name_gripper_palm_cb)
00067
00068 raw_data_forearm_pub = rospy.Publisher('pr2_fabric_forearm_sensor/taxels/raw_data',
00069 RawTaxelArray)
00070 rospy.Service('pr2_fabric_forearm_sensor/taxels/srv/local_coord_frames',
00071 None_TransformArray, ts.local_coord_frames_forearm_cb)
00072 rospy.Service('pr2_fabric_forearm_sensor/taxels/srv/link_name', None_String,
00073 ts.link_name_forearm_cb)
00074
00075 rospy.init_node('fabric_tactile_sleeve_driver_node')
00076
00077 baudrate = 115200
00078 dev2_nm = '/dev/robot/arduino3'
00079 dev2 = apn.setup_serial(dev2_nm, baudrate)
00080
00081 for i in range(10):
00082 dev2.readline()
00083
00084 rospy.loginfo('Started publishing gripper and forearm taxels')
00085
00086 rta1 = RawTaxelArray()
00087 rta2 = RawTaxelArray()
00088 rta3 = RawTaxelArray()
00089 rta4 = RawTaxelArray()
00090 while not rospy.is_shutdown():
00091 adc_data = apn.get_adc_data(dev2, 32)
00092
00093
00094
00095
00096
00097 forearm_vals = adc_data[0:5] + adc_data[6:16] + adc_data[17:24]
00098 rta1.val_z = forearm_vals
00099 raw_data_forearm_pub.publish(rta1)
00100
00101 rta2.val_z = adc_data[26:27] + adc_data[29:30] + adc_data[31:32] + adc_data[24:25]
00102 raw_data_gripper_left_link_pub.publish(rta2)
00103
00104 rta3.val_z = adc_data[28:29] + adc_data[30:31] + adc_data[27:28] + adc_data[25:26]
00105 raw_data_gripper_right_link_pub.publish(rta3)
00106
00107 rta4.val_z = adc_data[5:6] + adc_data[16:17];
00108 raw_data_gripper_palm_pub.publish(rta4)
00109
00110 dev2.close()
00111
00112
00113