def _initialize(self):
        '''Connect up all services and action clients.
        '''
        self._world_interface = WorldInterface()
        self._controller_manager = ControllerManagerClient()
        if self._arm_name in ['right_arm', 'left_arm']:
            self._group_name = self._arm_name
            self._planner = ArmPlanner(self._arm_name)
            self._hand_description = HandDescription(self._arm_name)

            arm_abbr = self._arm_name[0]
            self._joint_controller = '%s_arm_controller' % arm_abbr
            self._cartesian_controller = '%s_cart' % arm_abbr

            self._move_arm_client = actionlib.SimpleActionClient(
                'move_%s' % self._arm_name,
                arm_navigation_msgs.msg.MoveArmAction)
            self._wait_for_action_server(self._move_arm_client)

            #jt_action_name = '/%s_arm_controller/joint_trajectory_action' % arm_abbr
            #self._joint_trajectory_client = actionlib.SimpleActionClient(jt_action_name, JointTrajectoryAction)
            #self._wait_for_action_server(self._joint_trajectory_client)

            jt_action_name = '/%s_arm_controller/follow_joint_trajectory' % arm_abbr
            self._joint_trajectory_client = actionlib.SimpleActionClient(
                jt_action_name, FollowJointTrajectoryAction)
            self._wait_for_action_server(self._joint_trajectory_client)

            self._cart_interface = CartesianControllerInterface(self._arm_name)
        elif self._arm_name == 'both':
            self._joint_controller = 'two_arm_controller'
            #jt_two_arm_action_name = '/two_arm_controller/joint_trajectory_action'
            #self._joint_trajectory_client = actionlib.SimpleActionClient(jt_two_arm_action_name, JointTrajectoryAction)
            jt_two_arm_action_name = '/two_arm_controller/follow_joint_trajectory'
            self._joint_trajectory_client = actionlib.SimpleActionClient(
                jt_two_arm_action_name, FollowJointTrajectoryAction)
            self._wait_for_action_server(self._joint_trajectory_client)
        else:
            raise ValueError('Invalid arm name for worker: %s' %
                             self._arm_name)
Beispiel #2
0
#sleep(.04)
#except Exception:
#cmclient.switch_controllers(["l_arm_controller"], ["l_cart"])
#cmclient.switch_controllers(["r_arm_controller"], ["r_cart"])
#traceback.print_exc()
#exit(0)

# TODO: set saturation arguments for velocity and torque
# also reduce max effort arguments

rospy.init_node("knot_tying", disable_signals=True)
comm.initComm()
rope_getter = comm.LatestFileGetter("rope_model", "txt", comm.ArrayMessage)
library = rope_library.RopeTrajectoryLibrary(args.dbname, "write")
brett = pr2.PR2()
cmclient = ControllerManagerClient()

while True:
    rope_k3 = rope_getter.recv_latest().data
    draw_curve(rope_k3)

    _, rars = library.get_closest_and_warp(rope_k3)

    left_used = (rars["grab_l"] > -1).any()
    right_used = (rars["grab_r"] > -1).any()

    l_quat = rars["quat_l"]
    l_pos = rars["xyz_l"]
    r_quat = rars["quat_r"]
    r_pos = rars["xyz_r"]