34 from threading
import Lock
38 from control_msgs.msg
import GripperCommandAction
39 from control_msgs.msg
import GripperCommandGoal
41 from sensor_msgs.msg
import JointState
45 tty.setraw(sys.stdin.fileno())
46 select.select([sys.stdin], [], [], 0)
47 key = sys.stdin.read(1)
48 termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
62 self.
_sub_pos = rospy.Subscriber(
'joint_states', JointState,
68 rospy.loginfo(
'Waiting for gripper_controller...')
69 self.
client.wait_for_server()
70 rospy.loginfo(
'...connected.')
73 l_gripper_position =
None 74 r_gripper_position =
None 75 for joint, pos
in zip(joint_state.name, joint_state.position):
76 if joint ==
'l_gripper_finger_joint':
77 l_gripper_finger_pos = pos
78 if joint ==
'r_gripper_finger_joint':
79 r_gripper_finger_pos = pos
81 self.
position = l_gripper_finger_pos + r_gripper_finger_pos
84 goal = GripperCommandGoal()
86 goal.command.position = position
88 self.
client.send_goal(goal)
89 self.
client.wait_for_result(rospy.Duration.from_sec(5.0))
90 res = self.
client.get_result()
101 if __name__ ==
'__main__':
102 settings = termios.tcgetattr(sys.stdin)
104 rospy.init_node(
'grippper_keyboard')
110 'c':
'Close gripper',
111 'E':
'Increase max_effort',
112 'e':
'Decrease max_effort',
117 usage +=
''.join(
'\n {}: {}'.format(k, v)
118 for k, v
in gripper_bindings.items())
119 usage +=
'\n Ctrl-C to quit' 125 if c.lower()
in gripper_bindings:
127 gripper_keyboard.open()
128 rospy.loginfo(
'Opened gripper')
129 elif c.lower() ==
'c':
130 gripper_keyboard.close()
131 rospy.loginfo(
'Closed gripper')
132 elif c.lower() ==
's':
133 rospy.loginfo(
'''State: 135 max_effort: {}'''.format(gripper_keyboard.position,
136 gripper_keyboard.max_effort))
138 gripper_keyboard.max_effort -= 1
139 rospy.loginfo(
'Decrease max_effort to: {}' 140 .format(gripper_keyboard.max_effort))
142 gripper_keyboard.max_effort += 1
143 rospy.loginfo(
'Increase max_effort to: {}' 144 .format(gripper_keyboard.max_effort))
151 termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
def _set_state(self, joint_state)
def set_position(self, position)