public void setHome(Vector3f newhome) { HOME_X = newhome.x; HOME_Y = newhome.y; HOME_Z = newhome.z; motion_future.rotateBase(0f, 0f); motion_future.moveBase(new Vector3f(0, 0, 0)); moveIfAble(); }
public RotaryStewartPlatform2() { super(); setDisplayName("Rotary Stewart Platform 2"); /* // set up bounding volumes for(int i=0;i<volumes.length;++i) { volumes[i] = new Cylinder(); } volumes[0].radius=3.2f; volumes[1].radius=3.0f*0.575f; volumes[2].radius=2.2f; volumes[3].radius=1.15f; volumes[4].radius=1.2f; volumes[5].radius=1.0f*0.575f;*/ motion_now.rotateBase(0, 0); motion_now.updateIKEndEffector(); motion_now.rebuildShoulders(); motion_now.updateIKWrists(); motion_future.set(motion_now); setupModels(); // find the starting height of the end effector at home position // @TODO: project wrist-on-bicep to get more accurate distance float aa = (motion_now.arms[0].elbow.y - motion_now.arms[0].wrist.y); float cc = FOREARM_LENGTH; float bb = (float) Math.sqrt((cc * cc) - (aa * aa)); aa = motion_now.arms[0].elbow.x - motion_now.arms[0].wrist.x; cc = bb; bb = (float) Math.sqrt((cc * cc) - (aa * aa)); motion_now.finger_tip.set(0, 0, bb + BASE_TO_SHOULDER_Z - WRIST_TO_FINGER_Z); motion_future.finger_tip.set(motion_now.finger_tip); moveIfAble(); }