graph.setConstraints (edge='move-gripper-away', numConstraints = ['placement/complement']) graph.setConstraints (edge='grasp-ball', numConstraints = ['Box']) graph.setConstraints (edge='move-gripper-up', numConstraints = ['placement/complement']) graph.setConstraints (edge='transfer', numConstraints = []) graph.setConstraints (edge='approach-ground', numConstraints = []) graph.setConstraints (edge='take-ball-away', numConstraints = []) graph.setConstraints (edge='take-ball-up', numConstraints = ['Box', 'grasp']) graph.setConstraints (edge='put-ball-down', numConstraints = ['Box','grasp']) #Define Nodes constraints graph.setConstraints (node='placement', numConstraints = ['placement']) graph.setConstraints (node='grasp', numConstraints = ['grasp']) graph.setConstraints (node='ball-above-ground', numConstraints = ['ball-above-ground', 'grasp']) graph.setConstraints (node='grasp-placement', numConstraints = ['grasp', 'placement']) graph.setConstraints (node='gripper-above-ball', numConstraints = ['gripper-above-ball', 'placement']) res, q_init, error = graph.applyNodeConstraints ('placement', q1) q2 = q1 [::] q2 [7] = .2 res, q_goal, error = graph.applyNodeConstraints ('placement', q2) ps.setInitialConfig (q_init) ps.addGoalConfig (q_goal) ps.selectPathValidation ("Discretized", 0.01) ps.selectPathProjector ("Progressive", 0.1) pp = PathPlayer (ps.client.basic, r)
numConstraints = ['placement', 'placement/complement']) graph.setConstraints (edge='release-ball', numConstraints = ['placement', 'placement/complement']) ## Project initial configuration on state 'placement' res, q_init, error = ps.client.manipulation.problem.applyConstraints \ (graph.nodes ['placement'], q1) q2 = q1 [::] q2 [7] = .2 ## Project goal configuration on state 'placement' res, q_goal, error = ps.client.manipulation.problem.applyConstraints \ (graph.nodes ['placement'], q2) ## Define manipulation planning problem ps.setInitialConfig (q_init) ps.addGoalConfig (q_goal) ps.selectPathValidation ("Dichotomy", 0) pp = PathPlayer (ps.client.basic, r) ## Build relative position of the ball with respect to the gripper for i in range (100): q = robot.shootRandomConfig () res,q3,err = graph.generateTargetConfig ('grasp-ball', q_init, q) if res and robot.isConfigValid (q3): break; if res: robot.setCurrentConfig (q3) gripperPose = Transform (robot.getLinkPosition (gripperName)) ballPose = Transform (robot.getLinkPosition (ballName))