|
| 1 | +import atexit |
| 2 | +from openravepy import * |
| 3 | +import orgpmp2.orgpmp2 |
| 4 | +import time |
| 5 | +import types |
| 6 | +import prpy.kin |
| 7 | +import prpy.rave |
| 8 | +import sys |
| 9 | +sys.path.append('data') |
| 10 | +import problemsets |
| 11 | + |
| 12 | +# Initialize openrave logging |
| 13 | +from openravepy.misc import InitOpenRAVELogging |
| 14 | +InitOpenRAVELogging() |
| 15 | + |
| 16 | +# Problemset |
| 17 | +problemset = 'industrial2' |
| 18 | + |
| 19 | +# Start and end joint angles |
| 20 | +n_states, states = problemsets.states(problemset) |
| 21 | +start_joints = numpy.array(states[3]) |
| 22 | +end_joints = numpy.array(states[1]) |
| 23 | + |
| 24 | +# Set up openrave and load env |
| 25 | +RaveInitialize(True, level=DebugLevel.Info) |
| 26 | +atexit.register(RaveDestroy) |
| 27 | +e = Environment() |
| 28 | +atexit.register(e.Destroy) |
| 29 | +e.Load(problemsets.env_file(problemset)) |
| 30 | +e.Load('data/robots/pr2_gpmp2spheres.robot.xml') |
| 31 | +e.SetViewer('qtcoin') |
| 32 | + |
| 33 | +# Set up robot |
| 34 | +r = e.GetRobots()[0] |
| 35 | +r.SetTransform(matrixFromPose(problemsets.default_base_pose(problemset))) |
| 36 | +rave_joint_names = [joint.GetName() for joint in r.GetJoints()] |
| 37 | +rave_inds, rave_values = [],[] |
| 38 | +for (name,val) in zip(problemsets.joint_names(problemset), problemsets.default_joint_values(problemset)): |
| 39 | + if name in rave_joint_names: |
| 40 | + i = rave_joint_names.index(name) |
| 41 | + rave_inds.append(i) |
| 42 | + rave_values.append(val) |
| 43 | +r.SetDOFValues(rave_values, rave_inds) |
| 44 | +active_joint_inds = [rave_joint_names.index(name) for name in problemsets.active_joints(problemset)] |
| 45 | +r.SetActiveDOFs(active_joint_inds, problemsets.active_affine(problemset)) |
| 46 | +r.SetActiveDOFValues(start_joints) |
| 47 | + |
| 48 | +# Calculate arm_pose |
| 49 | +l = r.GetLinks() |
| 50 | +for i in l: |
| 51 | + if (i.GetName() == "torso_lift_link"): |
| 52 | + lp1 = poseFromMatrix(i.GetTransform()) |
| 53 | + if (i.GetName() == "r_shoulder_pan_link"): |
| 54 | + lp2 = poseFromMatrix(i.GetTransform()) |
| 55 | +arm_pose = numpy.array([lp1[0], lp1[1], lp1[2], lp1[3], lp2[4], lp2[5], lp2[6]]) |
| 56 | +arm_origin = numpy.array([lp2[4], lp2[5], lp2[6]]) |
| 57 | + |
| 58 | +# Load gpmp2 |
| 59 | +m_gpmp2 = RaveCreateModule(e,'orgpmp2') |
| 60 | +orgpmp2.orgpmp2.bind(m_gpmp2) |
| 61 | + |
| 62 | +# SDF |
| 63 | +# remove right arm links to calculate sdf |
| 64 | +l = r.GetLinks() |
| 65 | +right_arm_links = ['r_shoulder_pan_link', 'r_shoulder_lift_link', |
| 66 | +'r_upper_arm_roll_link', 'r_upper_arm_link', 'r_elbow_flex_link', 'r_forearm_roll_link', |
| 67 | +'r_forearm_cam_frame', 'r_forearm_cam_optical_frame', 'r_forearm_link', 'r_wrist_flex_link', |
| 68 | +'r_wrist_roll_link', 'r_gripper_palm_link', 'r_gripper_l_finger_link', 'r_gripper_l_finger_tip_link', |
| 69 | +'r_gripper_motor_slider_link', 'r_gripper_motor_screw_link', 'r_gripper_led_frame', |
| 70 | +'r_gripper_motor_accelerometer_link', 'r_gripper_r_finger_link', 'r_gripper_r_finger_tip_link', |
| 71 | +'r_gripper_l_finger_tip_frame', 'r_gripper_tool_frame'] |
| 72 | +for i in l: |
| 73 | + if i.GetName() in right_arm_links: |
| 74 | + i.Enable(False) |
| 75 | +# Compute distance field for the env and remaining robot |
| 76 | +m_gpmp2.computedistancefield(cache_filename='sdf_env_'+problemset+'.dat', |
| 77 | + centroid=arm_origin,extents=numpy.array([1.2,1.2,1.2]),res=0.02,save_sdf=1) |
| 78 | + |
| 79 | +raw_input() |
| 80 | +sys.exit() |
0 commit comments