private static Link nextLink(long seed) { Random random = new Random(seed); Link link = new Link("randomLink" + random.nextInt()); link.setMass(random.nextDouble()); link.setComOffset(RandomNumbers.nextDouble(random, 1.0), RandomNumbers.nextDouble(random, 1.0), RandomNumbers.nextDouble(random, 1.0)); link.setMomentOfInertia(RobotTest.getRotationalInertiaMatrixOfSolidEllipsoid(link.getMass(), random.nextDouble(), random.nextDouble(), random.nextDouble())); return link; }
private static Link randomBody(Random random) { Link ret = new Link("floatingBody"); ret.setMass(random.nextDouble()); ret.setComOffset(random.nextDouble(), random.nextDouble(), random.nextDouble()); ret.setMomentOfInertia(getRotationalInertiaMatrixOfSolidEllipsoid(ret.getMass(), random.nextDouble(), random.nextDouble(), random.nextDouble())); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCoordinateSystem(COORDINATE_SYSTEM_LENGTH); createInertiaEllipsoid(ret, linkGraphics, YoAppearance.Orange()); ret.setLinkGraphics(linkGraphics); return ret; }
private Link link1() { Link ret = new Link("link1"); ret.setMass(1.0); ret.setComOffset(2.0, 0.0, 0.0); ret.setMomentOfInertia(0.0, 3.0, 0.0); return ret; }
private Link link2() { Link ret = new Link("link2"); ret.setMass(2.0); ret.setComOffset(2.0, 0.0, 0.0); ret.setMomentOfInertia(0.0, 5.0, 0.0); return ret; }
private Link boxLink(Graphics3DObject linkGraphics, double length, double width, double height, double mass) { Link ret = new Link("box"); ret.setMass(mass); ret.setMomentOfInertia(RotationalInertiaCalculator.getRotationalInertiaMatrixOfSolidBox(length, width, height, mass)); ret.setComOffset(0.0, 0.0, 0.0); // linkGraphics.translate(0.0, 0.0, -height / 2.0); // linkGraphics.addCube(length, width, height, YoAppearance.EarthTexture(null)); ret.setLinkGraphics(linkGraphics); return ret; }
private static Link hip_differential() { Link ret = new Link("hip_differential"); ret.setMass(0.1); ret.setMomentOfInertia(0.005, 0.005, 0.005); ret.setComOffset(0.0, 0.0, 0.0); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCube(HIP_DIFFERENTIAL_WIDTH, HIP_DIFFERENTIAL_WIDTH, HIP_DIFFERENTIAL_HEIGHT); ret.setLinkGraphics(linkGraphics); return ret; }
private static Link ankle_differential() { Link ret = new Link("ankle_differential"); ret.setMass(0.1); ret.setMomentOfInertia(0.005, 0.005, 0.005); ret.setComOffset(0.0, 0.0, 0.0); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCube(ANKLE_DIFFERENTIAL_WIDTH, ANKLE_DIFFERENTIAL_WIDTH, ANKLE_DIFFERENTIAL_HEIGHT); ret.setLinkGraphics(linkGraphics); return ret; }
private static Link link11(Random random, double l1, double r1) { Link ret = new Link("link11"); ret.setMass(random.nextDouble()); ret.setComOffset(0.0, 0.0, -l1 / 2.0); ret.setMomentOfInertia(getRotationalInertiaMatrixOfSolidEllipsoid(ret.getMass(), r1, r1, l1 / 2.0)); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCoordinateSystem(COORDINATE_SYSTEM_LENGTH); createInertiaEllipsoid(ret, linkGraphics, YoAppearance.Red()); ret.setLinkGraphics(linkGraphics); return ret; }
private Link ball(double radius, double mass, AppearanceDefinition color) { Link ret = new Link("ball"); ret.setMass(mass); ret.setMomentOfInertia(RotationalInertiaCalculator.getRotationalInertiaMatrixOfSolidEllipsoid(mass, radius, radius, radius)); ret.setComOffset(0.0, 0.0, 0.0); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addSphere(radius, color); ret.setLinkGraphics(linkGraphics); return ret; }
private static Link thigh() { AppearanceDefinition thighApp = YoAppearance.Green(); Link ret = new Link("thigh"); ret.setMass(THIGH_MASS); // 2.35); ret.setMomentOfInertia(0.0437, 0.0437, 0.0054); ret.setComOffset(0.0, 0.0, -THIGH_LENGTH / 2.0); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCylinder(THIGH_LENGTH, THIGH_RAD, thighApp); ret.setLinkGraphics(linkGraphics); return ret; }
private static Link shin() { AppearanceDefinition shinApp = YoAppearance.Red(); Link ret = new Link("shin"); ret.setMass(SHIN_MASS); // 0.864); ret.setMomentOfInertia(0.00429, 0.00429, 0.00106); ret.setComOffset(0.0, 0.0, -SHIN_LENGTH / 2.0); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCylinder(SHIN_LENGTH, SHIN_RAD, shinApp); ret.setLinkGraphics(linkGraphics); return ret; }
private static Link link21(Random random, double l2, double r2) { Link ret = new Link("link2"); ret.setMass(random.nextDouble()); ret.setComOffset(0.0, 0.0, l2 / 2.0); // ret.setComOffset(0.0, 0.0, 0.0); ret.setMomentOfInertia(getRotationalInertiaMatrixOfSolidEllipsoid(ret.getMass(), r2, r2, l2 / 2.0)); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCoordinateSystem(COORDINATE_SYSTEM_LENGTH); createInertiaEllipsoid(ret, linkGraphics, YoAppearance.Orange()); ret.setLinkGraphics(linkGraphics); return ret; }
private PinJoint createPinJointWithHangingMass(String name, double mass, Axis axis, Robot robot) { PinJoint pinJoint = new PinJoint(name, new Vector3D(), robot, axis); Vector3D comOffset = new Vector3D(0.0, 0.0, -1.0); Link linkOne = new Link("link"); linkOne.setMass(mass); linkOne.setComOffset(comOffset); linkOne.setMassAndRadiiOfGyration(mass, 0.1, 0.1, 0.1); pinJoint.setLink(linkOne); return pinJoint; }
private Link upperArm() { Link link = new Link("upperArm"); Graphics3DObject linkGraphics = new Graphics3DObject(); link.setLinkGraphics(linkGraphics); link.setMass(upperArmMass); link.setComOffset(0.0, 0.0, -0.5*linkLength); link.setMomentOfInertia(upperArmMass * hopperBodyRadius * hopperBodyRadius, upperArmMass * hopperBodyRadius * hopperBodyRadius, upperArmMass * hopperBodyRadius * hopperBodyRadius); if (SHOW_COORDINATE_SYSTEM) linkGraphics.addCoordinateSystem(linkLength * 0.3); linkGraphics.addCube(0.1*linkLength, 0.1*linkLength, -linkLength, YoAppearance.Red()); return link; }
private static Link pelvis() { AppearanceDefinition pelvisAppearance = YoAppearance.Blue(); Link ret = new Link("pelvis"); ret.setMass(100.0); ret.setMomentOfInertia(1.0, 1.0, 1.0); ret.setComOffset(0.0, 0.0, 0.0); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCoordinateSystem(1.0); linkGraphics.addCylinder(PELVIS_HEIGHT, PELVIS_RAD, pelvisAppearance); ret.setLinkGraphics(linkGraphics); return ret; }
private Link lowerArm() { Link link = new Link("upperArm"); Graphics3DObject linkGraphics = new Graphics3DObject(); link.setLinkGraphics(linkGraphics); link.setMass(lowerArmMass); link.setComOffset(0.0, 0.0, -0.5*linkLength); link.setMomentOfInertia(lowerArmMass * hopperBodyRadius * hopperBodyRadius, lowerArmMass * hopperBodyRadius * hopperBodyRadius, lowerArmMass * hopperBodyRadius * hopperBodyRadius); if (SHOW_COORDINATE_SYSTEM) linkGraphics.addCoordinateSystem(linkLength * 0.3); linkGraphics.addCube(0.1*linkLength, 0.1*linkLength, -linkLength, YoAppearance.White()); return link; }
private Link MS3DMLink() { Link p = new Link("ms3DMLink"); p.setMass(MS3DM_MASS); p.setComOffset(0.0, 0.0, 0.0); p.setMomentOfInertia(0.1, 0.1, 0.1); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCoordinateSystem(0.1); linkGraphics.addCube(MS3DM_LENGTH, MS3DM_WIDTH, MS3DM_HEIGHT, YoAppearance.Purple()); p.setLinkGraphics(linkGraphics); return p; }
public UniversalJointRobot(String name, double initialQFirstJoint, double initialQdFirstJoint, double initialQSecondJoint, double initialQdSecondJoint) { super(name); universalJoint = new UniversalJoint(name + "Joint1", name + "Joint2", new Vector3D(), this, Axis.X, Axis.Y); Link link = new Link(name + "Link"); link.setMass(mass); link.setComOffset(0.0, 0.0, -length); universalJoint.setLink(link); universalJoint.getFirstJoint().setInitialState(initialQFirstJoint, initialQdFirstJoint); universalJoint.getSecondJoint().setInitialState(initialQSecondJoint, initialQdSecondJoint); addRootJoint(universalJoint); }
public SinglePendulumRobot(String name, double initialQ, double initialQd) { super(name); pinJoint = new PinJoint(name + "Joint", new Vector3D(), this, axis); Link link = new Link(name + "Link"); link.setMass(mass); link.setMomentOfInertia(Ixx, 0.0, 0.0); link.setComOffset(0.0, 0.0, -0.5 * length); pinJoint.setLink(link); pinJoint.setDamping(damping); addRootJoint(pinJoint); pinJoint.setQ(initialQ); pinJoint.setQd(initialQd); }
private static Link link22(Link link21) { Link ret = new Link("link22"); ret.setComOffset(link21.getComOffset()); ret.setMass(link21.getMass()); Matrix3D link2moi = new Matrix3D(); link21.getMomentOfInertia(link2moi); ret.setMomentOfInertia(link2moi); Graphics3DObject linkGraphics = new Graphics3DObject(); linkGraphics.addCoordinateSystem(COORDINATE_SYSTEM_LENGTH); createInertiaEllipsoid(ret, linkGraphics, YoAppearance.Aqua()); ret.setLinkGraphics(linkGraphics); return ret; }