us.ihmc.euclid.referenceFrame.ReferenceFrame.getTransformToRoot()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(7.0k)|赞(0)|评价(0)|浏览(78)

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

ReferenceFrame.getTransformToRoot介绍

[英]Returns the internal reference to this frame's transform to the root frame.

The transform can be used to transform a geometry object defined in this frame to obtain its equivalent expressed in the root frame.
[中]将此帧的变换的内部引用返回到根帧。
该变换可用于变换在此帧中定义的几何体对象,以获得其在根帧中表示的等效对象。

代码示例

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

@Override
protected void updateTransformToParent(RigidBodyTransform transformToParent)
{
 transformToParent.set(originalFrame.getTransformToRoot());
}

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

public boolean intersects(Point3D start, Point3D end)
  {
   Point3D inFrameStart = new Point3D(start);
   frame.getTransformToRoot().inverseTransform(inFrameStart);
   Point3D inFrameEnd = new Point3D(end);
   frame.getTransformToRoot().inverseTransform(inFrameEnd);

   return box.doesIntersectWithLineSegment3D(start, end);
  }
}

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

public boolean contains(Point3D p)
{
 Point3D local = new Point3D(p);
 frame.getTransformToRoot().inverseTransform(local);
 return box.isInsideInclusive(local);
}

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

if (frame.getTransformToRoot() != null)
 if (!frameInTree.getTransformToRoot().epsilonEquals(computedTransformToRoot, 1e-5))
   System.err.println("frame.transformToRoot = " + frameInTree.getTransformToRoot() + ", computedTransformToRoot = " + computedTransformToRoot);
   System.err.println("this = " + this + " frame = " + frameInTree);

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

/**
 * Second pass that can be done iteratively and each iteration is independent.
 * <p>
 * This pass is only needed when the {@code jacobianFrame} is at the center of mass and that this
 * calculator has to update. It recomputes the intermediate variable {@link #centerOfMassTimesMass}
 * at the center of mass frame so it can be used in the next and last pass.
 * </p>
 */
public void passTwo()
{
  centerOfMassTimesMass.setIncludingFrame(centerOfMass);
  centerOfMassTimesMass.sub(jacobianFrame.getTransformToRoot().getTranslationVector());
  centerOfMassTimesMass.setReferenceFrame(jacobianFrame);
  centerOfMassTimesMass.scale(subTreeMass);
}

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

@Override
public final void changeFrame(ReferenceFrame referenceFrame)
{
 putYoValuesIntoFrameWaypoint();
 // this is in the correct frame already
 if (referenceFrame == getReferenceFrame())
 {
   return;
 }
 getReferenceFrame().verifySameRoots(referenceFrame);
 RigidBodyTransform referenceTf, desiredTf;
 if ((referenceTf = getReferenceFrame().getTransformToRoot()) != null)
 {
   frameWaypoint.applyTransform(referenceTf);
 }
 if ((desiredTf = referenceFrame.getTransformToRoot()) != null)
 {
   frameWaypoint.applyInverseTransform(desiredTf);
 }
 getYoValuesFromFrameWaypoint();
 multipleFramesHelper.switchCurrentReferenceFrame(referenceFrame);
}

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

@ContinuousIntegrationTest(estimatedDuration = 0.3)
@Test(timeout = 30000)
public void testConstructFrameFromPointAndAxis()
{
 Random random = new Random(1776L);
 ReferenceFrame worldFrame = ReferenceFrame.getWorldFrame();
 FramePoint3D randomPoint = new FramePoint3D(worldFrame);
 FrameVector3D randomVector = new FrameVector3D(worldFrame);
 int numberOfTests = 100000;
 for (int i = 0; i < numberOfTests; i++)
 {
   randomPoint.setIncludingFrame(EuclidFrameRandomTools.nextFramePoint3D(random, worldFrame, 10.0, 10.0, 10.0));
   randomVector.setIncludingFrame(EuclidFrameRandomTools.nextFrameVector3D(random, worldFrame, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0));
   ReferenceFrame frameA = GeometryTools.constructReferenceFrameFromPointAndZAxis("frameA", randomPoint, randomVector);
   ReferenceFrame frameB = GeometryTools.constructReferenceFrameFromPointAndAxis("frameB", randomPoint, Axis.Z, randomVector);
   EuclidCoreTestTools.assertRigidBodyTransformEquals(frameA.getTransformToRoot(), frameB.getTransformToRoot(), 1.0e-2);
 }
}

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

@Test
public void testGetTransformBetweenFrames()
{
 Random random = new Random(1776L);
 for (int i = 0; i < ITERATIONS; i++)
 {
   ReferenceFrame[] treeFrame = EuclidFrameRandomTools.nextReferenceFrameTree(random);
   ReferenceFrame frame1 = treeFrame[random.nextInt(treeFrame.length)];
   ReferenceFrame frame2 = treeFrame[random.nextInt(treeFrame.length)];
   RigidBodyTransform transformOne = frame1.getTransformToDesiredFrame(frame2);
   RigidBodyTransform transformTwo = frame2.getTransformToDesiredFrame(frame1);
   transformTwo.invert();
   EuclidCoreTestTools.assertRigidBodyTransformEquals(transformOne, transformTwo, EPSILON);
   RigidBodyTransform transformThree = new RigidBodyTransform();
   if (frame2.getTransformToRoot() != null)
    transformThree.setAndInvert(frame2.getTransformToRoot());
   if (frame1.getTransformToRoot() != null)
    transformThree.multiply(frame1.getTransformToRoot());
   EuclidCoreTestTools.assertRigidBodyTransformEquals(transformOne, transformThree, EPSILON);
   RigidBodyTransform transformFour = new RigidBodyTransform();
   transformFour.set(worldFrame.getTransformToDesiredFrame(frame2));
   transformFour.multiply(frame1.getTransformToDesiredFrame(worldFrame));
   EuclidCoreTestTools.assertRigidBodyTransformEquals(transformOne, transformFour, EPSILON);
   ReferenceFrame frame3 = treeFrame[random.nextInt(treeFrame.length)];
   RigidBodyTransform transformFive = new RigidBodyTransform();
   transformFive.set(frame3.getTransformToDesiredFrame(frame2));
   transformFive.multiply(frame1.getTransformToDesiredFrame(frame3));
   EuclidCoreTestTools.assertRigidBodyTransformEquals(transformOne, transformFive, EPSILON);
 }
}

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

objectToTransform.applyInverseTransform(desiredFrame.getTransformToRoot());
objectToTransform.applyTransform(getTransformToRoot());
objectToTransform.applyTransform(getTransformToRoot());
objectToTransform.applyInverseTransform(desiredFrame.getTransformToRoot());

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

transformToPack.setAndInvert(desiredFrame.getTransformToRoot());
transformToPack.set(getTransformToRoot());
transformToPack.setAndInvert(desiredFrame.getTransformToRoot());
transformToPack.multiply(getTransformToRoot());

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

lidarSensorFrame.getTransformToRoot().getTranslation(lidarPosition);

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

@Override
  protected void updateTwistRelativeToParent(Twist twistRelativeToParentToPack)
  {
   RigidBodyTransform transformToRoot = originalFrame.getTransformToRoot();

   if (previousRotation.containsNaN() || previousTranslation.containsNaN())
   {
     transformToRoot.get(previousRotation, previousTranslation);

     angularVelocity.setToZero();
     linearVelocity.setToZero();
   }
   else
   {
     transformToRoot.get(rotation, translation);
     rotation.multiplyConjugateOther(previousRotation);
     rotation.getRotationVector(angularVelocity);
     angularVelocity.scale(1.0 / updateDT);
     linearVelocity.sub(translation, previousTranslation);
     linearVelocity.scale(1.0 / updateDT);

     transformToRoot.get(previousRotation, previousTranslation);

     transformToRoot.inverseTransform(angularVelocity);
     transformToRoot.inverseTransform(linearVelocity);
   }

   twistRelativeToParentToPack.setIncludingFrame(this, getParent(), this, angularVelocity, linearVelocity);
  }
}

相关文章