us.ihmc.euclid.tuple4D.Quaternion类的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(7.9k)|赞(0)|评价(0)|浏览(105)

本文整理了Java中us.ihmc.euclid.tuple4D.Quaternion类的一些代码示例,展示了Quaternion类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Quaternion类的具体详情如下:
包路径:us.ihmc.euclid.tuple4D.Quaternion
类名称:Quaternion

Quaternion介绍

暂无

代码示例

代码示例来源:origin: us.ihmc/ihmc-robotics-toolkit

public static Quaternion nextQuaternion(Random random, double minMaxAngleRange)
{
 AxisAngle orientation = nextAxisAngle(random, minMaxAngleRange);
 Quaternion quat = new Quaternion();
 quat.set(orientation);
 return quat;
}

代码示例来源:origin: us.ihmc/ihmc-mocap

public MocapRigidBody(int id, Vector3D position, Quaternion orientation, ArrayList<MocapMarker> listOfAssociatedMarkers, boolean isTracked)
{
 this.id = id;
 this.xPosition = (float) position.getX();
 this.yPosition = (float) position.getY();
 this.zPosition = (float) position.getZ();
 this.qw = (float) orientation.getS();
 this.qx = (float) orientation.getX();
 this.qy = (float) orientation.getY();
 this.qz = (float) orientation.getZ();
 this.listOfAssociatedMarkers = listOfAssociatedMarkers;
 this.dataValid = isTracked;
}

代码示例来源:origin: us.ihmc/ihmc-avatar-interfaces

private void setYawPitchRoll()
{
 Quaternion q = new Quaternion();
 //This code has a singularity when yaw and roll line up (e.g. pitch is 90, can't rotate in one direction any more).
 q.setYawPitchRoll(q_yaw.getDoubleValue(), q_pitch.getDoubleValue(), q_roll.getDoubleValue());
 //This code compounds the rotations so that on subsequent frames the ability to rotate in lost rotation directions is regained
 //This affectively uses global yaw pitch and roll each time.
 q.multiply(qprev);
 q_qs.set(q.getS());
 q_qx.set(q.getX());
 q_qy.set(q.getY());
 q_qz.set(q.getZ());
}

代码示例来源:origin: us.ihmc/ros2-common-interfaces

@Override
protected void setW(Quaternion data, double w)
{
 data.setUnsafe(data.getX(), data.getY(), data.getZ(), w);
}

代码示例来源:origin: us.ihmc/ros2-common-interfaces

@Override
protected void setX(Quaternion data, double x)
{
 data.setUnsafe(x, data.getY(), data.getZ(), data.getS());
}

代码示例来源:origin: us.ihmc/ros2-common-interfaces

@Override
protected void setZ(Quaternion data, double z)
{
 data.setUnsafe(data.getX(), data.getY(), z, data.getS());
}

代码示例来源:origin: us.ihmc/ihmc-humanoid-robotics

private void corruptOrientation(Quaternion orientation)
{
 Vector3D axis = RandomGeometry.nextVector3D(random);
 double angle = RandomNumbers.nextDouble(random, -maxRotationCorruption, maxRotationCorruption);
 
 AxisAngle axisAngle4d = new AxisAngle();
 axisAngle4d.set(axis, angle);
 
 Quaternion corruption = new Quaternion();
 corruption.set(axisAngle4d);
    
 orientation.multiply(corruption);
}

代码示例来源:origin: us.ihmc/ihmc-avatar-interfaces-test

private RigidBodyTransform[] createYawOnlyCorrectionTargets(Random random, int numTargets)
{
 RigidBodyTransform[] targets = new RigidBodyTransform[numTargets];
 Quaternion rot = new Quaternion();
 for (int i = 0; i < 10; i++)
 {
   targets[i] = new RigidBodyTransform();
   rot.setYawPitchRoll((random.nextDouble() * Math.PI * 2) - Math.PI, 0, 0);
   targets[i].setRotation(rot);
 }
 return targets;
}

代码示例来源:origin: us.ihmc/ihmc-robotics-toolkit

@Override
 public Quaternion initialValue()
 {
   return new Quaternion();
 }
};

代码示例来源:origin: us.ihmc/ros2-common-interfaces

@Override
protected void copy(Quaternion src, Quaternion dest)
{
 dest.set(src);
}

代码示例来源:origin: us.ihmc/ihmc-robotics-toolkit-test

@ContinuousIntegrationTest(estimatedDuration = 0.1)
@Test(timeout = 30000)
public void testSetQuaternionBasedOnMatrix3d()
{
 Random random = new Random(1776L);
 Quaternion unitQuaternion = new Quaternion(0.0, 0.0, 0.0, 1.0);
 int numberOfTests = 100000;
 for (int i = 0; i < numberOfTests; i++)
 {
   Quaternion randomQuaternion = RandomGeometry.nextQuaternion(random);
   RotationMatrix rotationMatrix = new RotationMatrix();
   rotationMatrix.set(randomQuaternion);
   Quaternion quaternionToPack = new Quaternion(rotationMatrix);
   quaternionToPack.multiplyConjugateOther(randomQuaternion);
   if (quaternionToPack.getS() < 0.0)
    quaternionToPack.negate();
   boolean quaternionsAreEpsilonEquals = unitQuaternion.epsilonEquals(quaternionToPack, 1e-7);
   assertTrue(quaternionsAreEpsilonEquals);
 }
}

代码示例来源:origin: us.ihmc/ihmc-humanoid-robotics

public FootstepPlanState(double x, double y, double theta, RobotSide side)
{
 footstepData.getLocation().set(new Point3D(x, y, 0));
 
 Quaternion orientation = new Quaternion();
 orientation.setToYawQuaternion(theta);
 footstepData.getOrientation().set(orientation);
 footstepData.setRobotSide(side.toByte());
 this.theta = theta;
}

代码示例来源:origin: us.ihmc/ros2-common-interfaces

@Override
protected void setY(Quaternion data, double y)
{
 data.setUnsafe(data.getX(), y, data.getZ(), data.getS());
}

代码示例来源:origin: us.ihmc/ihmc-robotics-toolkit-test

private Quaternion computeQuat1Quat2Quat1Conjugate(Quaternion quaternion1, Quaternion quaternion2)
{
 Quaternion quaternion1Inverse = new Quaternion(quaternion1);
 quaternion1Inverse.inverse();
 
 Quaternion quaternion1TimesQuaternion2 = new Quaternion();
 quaternion1TimesQuaternion2.multiply(quaternion1, quaternion2); 
 
 Quaternion quaternion1TimesQuaternion2TimesQuaternion1Inverse = new Quaternion();
 quaternion1TimesQuaternion2TimesQuaternion1Inverse.multiply(quaternion1TimesQuaternion2, quaternion1Inverse);
 return quaternion1TimesQuaternion2TimesQuaternion1Inverse;
}

代码示例来源:origin: us.ihmc/euclid-test

@Test
  public void testSingularitiesYawPitchRoll() throws Exception
  {
   Quaternion quaternion = new Quaternion();
   quaternion.setYawPitchRoll(0.5 * Math.PI, 0.0, 1e-9 - 0.5 * Math.PI);
   double[] yawPitchRoll = new double[3];
   quaternion.getYawPitchRoll(yawPitchRoll);
  }
}

代码示例来源:origin: us.ihmc/ihmc-robotics-toolkit

private void computeAngularVelocity(Vector3D angularVelocityToPack, Quaternion startRotationQuaternion, Quaternion endRotationQuaternion, double alphaDot)
  {
   if (startRotationQuaternion.dot(endRotationQuaternion) < 0.0)
     endRotationQuaternion.negate();

   // compute relative orientation: orientation of interpolated frame w.r.t. start frame
   relativeRotationQuaternion.set(startRotationQuaternion); // R_W_S: orientation of start w.r.t. world
   relativeRotationQuaternion.conjugate(); // R_S_W: orientation of world w.r.t. start
   relativeRotationQuaternion.multiply(endRotationQuaternion); // R_S_I = R_S_W * R_W_I: orientation of interpolated w.r.t. start

   quaternionCalculus.log(relativeRotationQuaternion, angularVelocityToPack);
   angularVelocityToPack.scale(alphaDot);
   endRotationQuaternion.transform(angularVelocityToPack);
  }
}

代码示例来源:origin: us.ihmc/ihmc-kalman-project

public void initialize(DenseMatrix64F accel, DenseMatrix64F pqr, double heading)
  {
   setMatrix(bias, pqr);

//    euler = accel2euler(accel, heading);
   accel2euler(accel, heading);
   Quaternion quaternion = new Quaternion();
   quaternion.setYawPitchRoll(eulerAngles);
   quaternion.get(q);
  }

代码示例来源:origin: us.ihmc/ihmc-robotics-toolkit-test

@ContinuousIntegrationTest(estimatedDuration = 0.0)
@Test(timeout = 30000)
public void testComputeAngularVelocityInWorldFrameFromYawPitchRollAnglesRate() throws Exception
{
 for (int i = 0; i < 1000; i++)
 {
   double yaw = RandomNumbers.nextDouble(random, Math.PI);
   double pitch = RandomNumbers.nextDouble(random, Math.PI / 2.0);
   double roll = RandomNumbers.nextDouble(random, Math.PI);
   double yawRate = RandomNumbers.nextDouble(random, 1.0);
   double pitchRate = RandomNumbers.nextDouble(random, 1.0);
   double rollRate = RandomNumbers.nextDouble(random, 1.0);
   Quaternion rotation = new Quaternion();
   rotation.setYawPitchRoll(yaw, pitch, roll);
   Vector3D expectedAngularVelocity = new Vector3D();
   RotationTools.computeAngularVelocityInBodyFrameFromYawPitchRollAnglesRate(yaw, pitch, roll, yawRate, pitchRate, rollRate, expectedAngularVelocity);
   rotation.transform(expectedAngularVelocity);
   Vector3D actualAngularVelocity = new Vector3D();
   RotationTools.computeAngularVelocityInWorldFrameFromYawPitchRollAnglesRate(yaw, pitch, roll, yawRate, pitchRate, rollRate, actualAngularVelocity);
   EuclidCoreTestTools.assertTuple3DEquals(expectedAngularVelocity, actualAngularVelocity, EPSILON);
 }
}

代码示例来源:origin: us.ihmc/euclid-test

@Override
public FrameQuaternion createFrameTuple(ReferenceFrame referenceFrame, double x, double y, double z, double s)
{
 Quaternion quaternion = new Quaternion();
 quaternion.setUnsafe(x, y, z, s);
 return new FrameQuaternion(referenceFrame, quaternion);
}

代码示例来源:origin: us.ihmc/ihmc-robotics-toolkit-test

private static double getAngleDifference(Quaternion q1, Quaternion q2)
  {
   Quaternion qDifference = new Quaternion(q1);
   qDifference.multiplyConjugateOther(q2);
   AxisAngle axisAngle = new AxisAngle();
   axisAngle.set(qDifference);
   return axisAngle.getAngle();
  }
}

相关文章

微信公众号

最新文章

更多