def __init__(self,
                 vel_scaling=0.1,
                 planner_id="RRTConnectkConfigDefault",
                 drake_sample_rate=4.0,
                 drake_orientation_type=2,
                 drake_link_axis=[0, 0, 1]):
        '''Constructor'''
        super(PlanAffordanceState, self).__init__(
            outcomes=['done', 'incomplete', 'failed'],
            input_keys=['affordance', 'hand', 'reference_point'],
            output_keys=['joint_trajectory', 'plan_fraction'])

        self._client = ProxyMoveitClient()

        try:
            self.set_up_affordance_service()  # topics and clients are set here
        except Exception as e:
            Logger.logerr(
                'Failed to set up GetAffordanceInWristFrame service: \n%s' %
                str(e))
            return

        self._vel_scaling = vel_scaling
        self._planner_id = planner_id

        self._drake_sample_rate = drake_sample_rate
        self._drake_orientation_type = drake_orientation_type
        self._drake_link_axis = Point(x=drake_link_axis[0],
                                      y=drake_link_axis[1],
                                      z=drake_link_axis[2])

        self._failed = False
        self._done = False
        self._incomplete = False
    def __init__(self,
                 ignore_collisions=False,
                 include_torso=False,
                 keep_endeffector_orientation=False,
                 allow_incomplete_plans=False,
                 vel_scaling=0.1,
                 planner_id="RRTConnectkConfigDefault"):
        '''Constructor'''

        super(PlanEndeffectorCartesianWaypointsState,
              self).__init__(outcomes=['planned', 'incomplete', 'failed'],
                             input_keys=['waypoints', 'hand', 'frame_id'],
                             output_keys=['joint_trajectory', 'plan_fraction'])

        self._client = ProxyMoveitClient()

        self._ignore_collisions = ignore_collisions
        self._include_torso = include_torso
        self._keep_endeffector_orientation = keep_endeffector_orientation
        self._allow_incomplete_plans = allow_incomplete_plans
        self._vel_scaling = vel_scaling
        self._planner_id = planner_id

        self._failed = False
        self._done = False
        self._incomplete = False
    def __init__(self, planning_group):
        """Constructor"""
        super(MoveitMoveGroupState,
              self).__init__(outcomes=['reached', 'failed'],
                             input_keys=['target_joint_config'])

        self._client = ProxyMoveitClient()

        self._failed = False
        self._planning_group = planning_group
示例#4
0
    def __init__(self, planning_group, vel_scaling=0.1):
        """Constructor"""
        super(MoveitPlanningState,
              self).__init__(outcomes=['planned', 'failed'],
                             input_keys=['joint_values'],
                             output_keys=['joint_trajectory'])

        self._client = ProxyMoveitClient()

        self._planning_group = planning_group
        self._vel_scaling = vel_scaling
        self._failed = False
	def __init__(self, ignore_collisions = False, include_torso = False, keep_endeffector_orientation = False, planner_id = "RRTConnectkConfigDefault"):
		'''
		Constructor
		'''
		super(PlanEndeffectorCircularMotionState, self).__init__(outcomes=['planned', 'failed'],
												   input_keys=['hand', 'rotation_axis', 'rotation_angle'],
												   output_keys=['joint_trajectory', 'plan_fraction'])
		
		self._client = ProxyMoveitClient()
		
		self._ignore_collisions = ignore_collisions
		self._include_torso = include_torso
		self._keep_endeffector_orientation = keep_endeffector_orientation
		self._failed = False
		self._planner_id = planner_id
    def __init__(self,
                 target_pose,
                 vel_scaling=0.1,
                 ignore_collisions=False,
                 link_paddings={},
                 is_cartesian=False):
        """Constructor"""
        super(MoveitPredefinedPoseState,
              self).__init__(outcomes=['done', 'failed'], input_keys=['side'])

        if not rospy.has_param("behavior/robot_namespace"):
            Logger.logerr(
                "Need to specify parameter behavior/robot_namespace at the parameter server"
            )
            return

        self._robot = rospy.get_param("behavior/robot_namespace")

        self._poses = dict()
        self._poses['flor'] = dict()
        # Position mode widget: src/vigir_ocs_eui/vigir_rqt/vigir_rqt_position_mode/launch
        self._poses['flor']['left'] = {
            # Joint names: l_arm_shz, l_arm_shx, l_arm_ely, l_arm_elx, l_arm_wry, l_arm_wrx, l_arm_wry2
            1: {
                'group': 'l_arm_group',
                'joints': [-0.25, -1.34, 1.88, 0.49, 0.0, 0.0, 0.0]
            },
            3: {
                'group': 'l_arm_group',
                'joints': [+0.72, -0.95, 2.7, 0.95, 0.0, -0.4, -0.50]
            },
            10: {
                'group': 'l_arm_group',
                'joints': [-1.0, 0.28, 1.2, 1.6, 0.3, 0.5, 0.0]
            },
            21: {
                'group': 'torso_group',
                'joints': [+0.20, 0.00, 0.00]
            },
            22: {
                'group': 'torso_group',
                'joints': [+0.40, 0.00, 0.00]
            },
            23: {
                'group': 'torso_group',
                'joints': [+0.55, 0.00, 0.00]
            },
            112: {
                'group': 'l_leg_group',
                'joints': [+0.00, +0.00, -1.60, +1.40, -0.50, 0.00]
            },  # Safety pose
            114: {
                'group': 'l_arm_group',
                'joints': [+0.76, -0.94, 0.80, 2.00, +1.00, -0.20, -1.35]
            },  # pre_drive
            115: {
                'group': 'l_arm_group',
                'joints': [+0.11, -0.16, 1.75, 1.60, +1.00, -0.90, -1.00]
            },  # drive
            116: {
                'group': 'l_arm_group',
                'joints': []
            },  # We use the right hand for the camera!
            131: {
                'group': 'l_arm_group',
                'joints': [-0.29, -0.22, 1.87, 2.17, -0.17, 0.81, 0.12]
            },
            132: {
                'group': 'l_arm_group',
                'joints': [-0.70, -0.09, 1.93, 0.66, -0.15, 1.52, 0.12]
            },
            133: {
                'group': 'l_arm_group',
                'joints': [-1.38, -0.16, 1.82, 0.57, -0.19, 1.52, 0.12]
            },
            134: {
                'group': 'l_arm_group',
                'joints': []
            },  # Most probably will never be used
            151: {
                'group': 'l_arm_group',
                'joints': [-1.01, -0.43, +1.32, +1.67, -0.91, +1.46, +0.98]
            },
            155: {
                'group': 'l_arm_group',
                'joints': [0.0, -0.37, 2.65, 1.4, -0.2, 0.9, -1.54]
            },
            156: {
                'group': 'l_arm_group',
                'joints': [-0.32, -0.9, 2.2, 1.3, 0.5, 1.0, -1.8]
            },
            157: {
                'group': 'l_arm_group',
                'joints': [-0.45, -1.0, 2.1, 1.3, 0.5, 0.8, -0.8]
            }
        }
        self._poses['flor']['same'] =  {
         0:   {'group': 'both_arms_group', 'joints': [-0.25, -1.34, +1.88, +0.49, +0.00, +0.00, +0.00, \
                     +0.25, +1.34, +1.88, -0.49, +0.00, +0.00, +0.00]},
         2:   {'group': 'both_arms_group', 'joints': [+0.72, -0.95,  2.7,   0.95,  0.0,   -0.4  ,  -0.5, \
                     -0.72,  0.95,  2.7,  -0.95,  0.0,    0.4  ,  -0.5]},
         19:  {'group': 'both_arms_group', 'joints': [-1.5,  -1.5,  +0.30, +0.50,  +0.0,  +0.8,  +0.00, \
                     +1.5,  +1.5,  +0.30, -0.50,  +0.0,  -0.8,  +0.00]},
         20:  {'group': 'torso_group',    'joints': [+0.00, 0.00, 0.00]},
         111: {'group': 'both_arms_group', 'joints': [+0.20, -1.50, +0.00, +1.72, 0.00, +0.00, 0.0, \
                     +0.00, +1.50, +0.00, -1.72, 0.00, +0.00, 0.0]},
         113: {'group': 'both_arms_group', 'joints': [+0.20, -1.50, +0.00, +1.72, 0.00, -1.57, 0.0, \
                     +0.00, +1.50, +0.00, -1.72, 0.00, +1.57, 0.0]},
         181: {'group': 'both_arms_group', 'joints': [-1.53, -0.69, +0.12, +1.47, 0.00, +0.88, 0.00, \
                     +1.53, +0.69, +0.12, -1.47, 0.00, -0.88, 0.00]}
        }
        self._poses['flor']['right'] = {
            # Joint names: r_arm_shz, r_arm_shx, r_arm_ely, r_arm_elx, r_arm_wry, r_arm_wrx, r_arm_wry2
            1: {
                'group': 'r_arm_group',
                'joints': [+0.25, 1.34, 1.88, -0.49, 0.0, 0.0, 0.0]
            },
            3: {
                'group': 'r_arm_group',
                'joints': [-0.72, 0.95, 2.7, -0.95, 0.0, 0.4, -0.50]
            },
            10: {
                'group': 'r_arm_group',
                'joints': [+1.0, -0.28, 1.2, -1.6, 0.3, -0.5, 0.0]
            },
            21: {
                'group': 'torso_group',
                'joints': [-0.20, 0.00, 0.00]
            },
            22: {
                'group': 'torso_group',
                'joints': [-0.40, 0.00, 0.00]
            },
            23: {
                'group': 'torso_group',
                'joints': [-0.55, 0.00, 0.00]
            },
            112: {
                'group': 'r_leg_group',
                'joints': [+0.00, +0.00, -1.34, +1.23, 0.00, 0.00]
            },
            115: {
                'group': 'r_arm_group',
                'joints': []
            },  # Driving is done with the left arm!
            116: {
                'group': 'r_arm_group',
                'joints': [+0.90, 0.17, 0.50, -1.58, -0.70, +1.50, -0.34]
            },  # CarCamera
            131: {
                'group': 'r_arm_group',
                'joints': [+0.29, 0.22, 1.87, -2.17, -0.17, -0.81, 0.12]
            },
            132: {
                'group': 'r_arm_group',
                'joints': [+0.70, 0.09, 1.93, -0.66, -0.15, -1.52, 0.12]
            },
            133: {
                'group': 'r_arm_group',
                'joints': [+1.38, 0.16, 1.82, -0.57, -0.19, -1.52, 0.12]
            },
            134: {
                'group': 'r_arm_group',
                'joints': [+0.00, +0.54, +0.94, -1.04, 0.80, 0.5, 0.7]
            },
            151: {
                'group': 'r_arm_group',
                'joints': [+1.01, +0.43, +1.32, -1.67, -0.91, -1.46, +0.98]
            },
            155: {
                'group': 'r_arm_group',
                'joints': [+0.00, +0.37, +2.65, -1.40, -0.20, -0.90, -1.54]
            },
            156: {
                'group': 'r_arm_group',
                'joints': [+0.32, +0.90, +2.20, -1.30, +0.50, -1.00, -1.80]
            },
            157: {
                'group': 'r_arm_group',
                'joints': [0.45, 1.0, 2.1, -1.3, 0.5, -0.8, -0.8]
            }
        }

        self._poses['thor_mang'] = dict()
        self._poses['thor_mang']['left'] = {
            1: {
                'group':
                'l_arm_group',
                'joints': [
                    0.785385646194622, -0.281153767716932,
                    0.000600782658167331, -1.57080884130538, -0.25205140042963,
                    0.01563815008, 0
                ]
            },
            3: {
                'group': 'l_arm_group',
                'joints': [0.77, -0.27, 0.02, -1.21, -0.25, 0.02, 0]
            },
            4: {
                'group':
                'l_arm_group',
                'joints': [
                    0.785385646194622, -0.281153767716932,
                    0.000600782658167331, -1.97080884130538, -0.25205140042963,
                    0.01563815008, 0
                ]
            },
            21: {
                'group': 'torso_group',
                'joints': [+0.30, 0.03]
            },
            22: {
                'group': 'torso_group',
                'joints': [+0.60, 0.03]
            },
            23: {
                'group': 'torso_group',
                'joints': [+1.02, 0.03]
            },
            31: {
                'group': 'head_group',
                'joints': [1.57, 0.00]
            },
            131: {
                'group': 'l_arm_group',
                'joints': [-1.73, -0.69, 1.75, -1.86, 0.04, -0.72, 1.63]
            },
            132: {
                'group': 'l_arm_group',
                'joints': [-1.76, -1.13, 1.68, -0.55, 0.02, -1.81, 1.63]
            },
            133: {
                'group': 'l_arm_group',
                'joints': [-1.70, -0.06, 1.86, -0.45, 0.08, -0.90, 1.65]
            },
            134: {
                'group': 'l_arm_group',
                'joints': [-1.70, -0.06, 1.86, -0.45, 0.08, -0.90, 1.65]
            },  # placeholder
            136: {
                'group': 'l_arm_group',
                'joints': [-2.31, -2.2, 1.83, -1.22, 4.1, 0.14, -2.08]
            },
            138: {
                'group': 'torso_group',
                'joints': [0.92, 0]
            },
            139: {
                'group': 'torso_group',
                'joints': [1.3, 0]
            },
            151: {
                'group': 'l_arm_group',
                'joints': [-1.45, -1.26, 1.10, -2.02, -0.19, 0.04, -2.86]
            },
            155: {
                'group': 'l_arm_group',
                'joints': [-0.25, -0.75, 0.02, -1.21, -0.38, -1.36, -0.9]
            },
            156: {
                'group': 'l_arm_group',
                'joints': [-0.25, -0.25, 0.02, -1.21, -0.38, -1.36, -0.9]
            },
            157: {
                'group': 'l_arm_group',
                'joints': [-0.25, -0.13, 0.02, -1.21, -0.13, -1.55, 0.41]
            }
        }
        self._poses['thor_mang']['same'] = {
            0: {
                'group':
                'both_arms_group',
                'joints': [
                    0.79, -0.27, 0, -1.57, 1.55, 0, 0, -0.79, 0.27, 0, 1.57,
                    -1.55, 0, 0
                ]
            },
            2: {
                'group':
                'both_arms_group',
                'joints':
                [-0.37, 0.0, 1.57, 0, 0, 0, 0, 0.37, 0.0, 1.57, 0, 0, 0, 0]
            },
            20: {
                'group': 'torso_group',
                'joints': [0.00, 0.03]
            },
            30: {
                'group': 'head_group',
                'joints': [0.00, 0.00]
            },
            181: {
                'group':
                'both_arms_group',
                'joints': [
                    0.785385646194622, -0.281153767716932,
                    0.000600782658167331, -1.57080884130538, -0.25205140042963,
                    0.01563815008, 0, -0.785385646194622, 0.281153767716932,
                    -0.000600782658167331, 1.57080884130538, 0.25205140042963,
                    -0.01563815008, 0
                ]
            }
        }
        self._poses['thor_mang']['right'] = {
            1: {
                'group':
                'r_arm_group',
                'joints': [
                    -0.785385646194622, 0.281153767716932,
                    -0.000600782658167331, 1.57080884130538, 0.25205140042963,
                    -0.01563815008, 0
                ]
            },
            3: {
                'group': 'r_arm_group',
                'joints': [-0.77, 0.27, -0.02, 1.21, 0.25, -0.02, 0]
            },
            4: {
                'group':
                'r_arm_group',
                'joints': [
                    -0.785385646194622, 0.281153767716932,
                    -0.000600782658167331, 1.97080884130538, 0.25205140042963,
                    -0.01563815008, 0
                ]
            },
            21: {
                'group': 'torso_group',
                'joints': [-0.30, 0.03]
            },
            22: {
                'group': 'torso_group',
                'joints': [-0.60, 0.03]
            },
            23: {
                'group': 'torso_group',
                'joints': [-1.02, 0.03]
            },
            31: {
                'group': 'head_group',
                'joints': [-1.57, 0.00]
            },
            131: {
                'group': 'r_arm_group',
                'joints': [1.73, 0.69, -1.75, 1.86, -0.04, 0.72, -1.63]
            },
            132: {
                'group': 'r_arm_group',
                'joints': [1.76, 1.13, -1.68, 0.55, -0.02, 1.81, -1.63]
            },
            133: {
                'group': 'r_arm_group',
                'joints': [1.70, 0.06, -1.86, 0.45, -0.08, 0.90, -1.65]
            },
            134: {
                'group': 'r_arm_group',
                'joints': [1.70, 0.06, -1.86, 0.45, -0.08, 0.90, -1.65]
            },  # placeholder
            136: {
                'group': 'r_arm_group',
                'joints': [2.31, 2.2, -1.83, 1.22, -4.1, -0.14, 2.08]
            },
            138: {
                'group': 'torso_group',
                'joints': [-0.92, 0]
            },
            139: {
                'group': 'torso_group',
                'joints': [-1.3, 0]
            },
            151: {
                'group': 'r_arm_group',
                'joints': [1.45, 1.26, -1.10, 2.02, 0.19, -0.04, 2.86]
            },
            155: {
                'group': 'r_arm_group',
                'joints': [0.25, 0.75, -0.02, 1.21, 0.38, 1.36, 0.9]
            },
            156: {
                'group': 'r_arm_group',
                'joints': [0.25, 0.25, -0.02, 1.21, 0.38, 1.36, 0.9]
            },
            157: {
                'group': 'r_arm_group',
                'joints': [0.25, 0.13, -0.02, 1.21, 0.13, 1.55, -0.41]
            }
        }

        self._target_pose = target_pose
        self._vel_scaling = vel_scaling
        self._ignore_collisions = ignore_collisions
        self._link_paddings = link_paddings
        self._is_cartesian = is_cartesian

        self._client = ProxyMoveitClient()

        self._failed = False