Tekkotsu Homepage | Demos | Overview | Downloads | Dev. Resources | Reference | Credits |
fmat Namespace Referencefixed-size matrix routines for high performance with small allocations More...
Detailed Descriptionfixed-size matrix routines for high performance with small allocations Typedef Documentation
Definition at line 23 of file fmatCore.h.
Definition at line 399 of file fmatSpatial.h.
Definition at line 608 of file fmatSpatial.h. Function Documentation
template<template< size_t H, size_t W, typename R > class T, size_t H, size_t W, typename R >
Definition at line 1198 of file fmatCore.h.
template<template< size_t N, typename R > class T, size_t N, typename R >
Definition at line 1187 of file fmatCore.h. Referenced by abs(), Grasper::MoveArm::advTime(), HingePositionInterface::applyResponse(), Kinematics::baseToLocal(), HeadPointerMC::clipAngularRange(), ArmMC::clipAngularRange(), CylindricalObstacle::collides(), BoxObstacle::collides(), LinkComponent::computeBB2D(), XWalkMC::computeCurrentBodyOffset(), XWalkMC::computeCurrentPosition(), IKThreeLink::computeFirstLinkRevolute(), WaypointEngine::computeIdeal(), LinkComponent::computeOwnAABB(), IKThreeLink::computeSecondLinkRevolute(), IKThreeLink::computeThirdLinkPrismatic(), IKThreeLink::computeThirdLinkRevolute(), RecordMotionNode::doEvent(), DualCoding::Pilot::PushObjectMachine::ChoosePathObjToDest::doStart(), DualCoding::Pilot::PushObjectMachine::ChoosePathInitToObj::doStart(), ArmController::doStart(), DRanNormalZig32(), DRanNormalZig32Vec(), Graphics::drawLine(), Graphics::drawQuarterEllipse(), AprilTags::Edge::edgeCost(), DualCoding::MapBuilder::filterGroundShapes(), fmat::QuaternionT< R >::fromAxisAngle(), plist::Angle::get(), KDTree::getBestNKeypointMatch(), DualCoding::MapBuilder::getCamCrosses(), XWalkParameters::getMaxAVel(), LinkComponent::getObstacle(), hashHoughKey(), GridWorld::heuristic(), invert(), XWalkMC::isDirty(), MotionSequenceEngine::makeSafe(), AprilTags::MathUtil::mod2pi(), BallDetectionGenerator::pct_from_mean(), TorqueCalibrate::TakeMeasurementControl::processEvent(), Kinematics::projectToPlane(), EllipticalObstacle::reset(), XWalkMC::resetPeriod(), HeadController::runCommand(), RRTNodeXYTheta::safeTurn(), plist::Angle::saveXML(), XWalkMC::setTargetDisplacement(), XWalkMC::setTargetVelocity(), IKThreeLink::solve(), IKGradientSolver::solve(), IKCalliope::solve(), IKGradientSolver::step(), and XWalkMC::updateOutputsWalking().
template<typename R >
Definition at line 1212 of file fmatCore.h.
template<typename R >
Definition at line 1211 of file fmatCore.h.
template<typename R >
Definition at line 1210 of file fmatCore.h. Referenced by EllipticalObstacle::getBoundingBox(), IKCalliope::IKCalliope(), IKCalliope::pointToward(), IKCalliope::solve(), and IKCalliope::twoLinkIK().
template<class Ra , class Rb >
returns the rotation needed to transform p into q (this is the core of a 'slerp' implementation) Definition at line 404 of file fmatSpatial.h.
template<class Ta , class Tb >
Definition at line 1237 of file fmatCore.h. Referenced by IKSolver::Parallel::computeErrorGradient(), IKSolver::Rotation::computeErrorGradient(), GaitedFootsteps::expand(), KinematicJoint::getJointJacobian(), AprilTags::TagDetection::getRotMatrix(), ConvexPolyObstacle::hull(), GJK::processTetrahedron(), GJK::processTriangle(), and IKGradientSolver::step().
template<template< size_t H, size_t W, typename R > class T, typename R >
returns the determinant for 3x3 matrices Definition at line 1324 of file fmatCore.h.
template<template< size_t H, size_t W, typename R > class T, typename R >
returns the determinant for 2x2 matrices Definition at line 1318 of file fmatCore.h. Referenced by RawImage::imageScore(), AprilTags::GLine2D::intersectionWith(), and OpticalFlow::iterativeLucasKanade().
template<template< size_t H, size_t W, typename R > class M, typename R >
Definition at line 1253 of file fmatCore.h.
template<template< size_t H, size_t W, typename R > class M, typename R >
Definition at line 1247 of file fmatCore.h.
template<template< size_t N, typename R > class V1, template< size_t N, typename R > class V2, typename R1 , typename R2 >
Definition at line 1339 of file fmatCore.h.
template<template< size_t N, typename R > class V1, template< size_t N, typename R > class V2, typename R1 , typename R2 >
Definition at line 1337 of file fmatCore.h.
template<template< size_t N, typename R > class V1, template< size_t N, typename R > class V2, typename R1 , typename R2 >
Definition at line 1335 of file fmatCore.h.
template<class Ta , class Tb >
Definition at line 1226 of file fmatCore.h.
template<template< size_t N, typename R > class T1, template< size_t N, typename R > class T2, size_t N, typename R1 , typename R2 >
Definition at line 1216 of file fmatCore.h. Referenced by GaitedFootsteps::addCandidate(), GaitedFootstepMC::advanceStep(), Kinematics::calcLegHeights(), Kinematics::calculateGroundPlane(), BoxObstacle::collides(), ConvexPolyObstacle::collides(), GJK::collides(), IKThreeLink::computeSecondLinkPrismatic(), IKThreeLink::computeThirdLinkPrismatic(), Grasper::DoBodyApproach2::doStart(), KinematicJoint::getParentPosition(), ConvexPolyObstacle::getSupport(), BoxObstacle::gradient(), ConvexPolyObstacle::gradient(), invertTransform(), GJK::processLine(), GJK::processTetrahedron(), GJK::processTriangle(), XWalkParameters::projectToGround(), Kinematics::projectToPlane(), XWalkMC::setTargetVelocity(), PostureEngine::solveLinkVector(), IKGradientSolver::step(), and GJK::tripleProduct().
template<typename R >
Definition at line 49 of file fmatCore.h. Referenced by fmat::Row< N, R >::fmt(), fmat::Column< 2, float >::fmt(), fmat::Matrix< 4, 2 >::fmt(), fmat::SubMatrix< H, W, R >::fmt(), and fmat::SubVector< H, R >::fmt().
template<typename R >
Definition at line 639 of file fmatSpatial.h.
template<typename R >
Definition at line 407 of file fmatSpatial.h.
template<typename M >
Computes and returns the inverse of a square matrix using Gauss-Jordan elimination. The computation is done with column-wise operations for computational efficiency. You can think of this as doing the inverse in transposed space: (mᵀ)⁻¹ == (m⁻¹)ᵀ Definition at line 1263 of file fmatCore.h. Referenced by Kinematics::calculateGroundPlane(), AprilTags::GrayModel::compute(), Config::vision_config::computePixelCorrected(), Homography::getMatrix(), fmat::TransformT< R >::inverse(), OpticalFlow::iterativeLucasKanade(), and segmentIntersection().
template<typename R >
invert the matrix, taking advantage of known structure: Definition at line 612 of file fmatSpatial.h.
template<typename R >
Returns the point of intersection of d1 through p1 and d2 through p2. May return point at infinity if d1 and d2 are parallel (including collinear), such a point will be in the correct quadrant. Definition at line 721 of file fmatSpatial.h.
template<template< size_t, typename R > class V, typename R >
Returns the orthogonal left vector (rotate by 90°). Definition at line 728 of file fmatSpatial.h. Referenced by LinkComponent::computeBB2D().
template<template< size_t, typename R > class V, typename R >
Returns the orthogonal right vector (rotate by -90°). Definition at line 733 of file fmatSpatial.h. Referenced by LinkComponent::computeBB2D().
template<template< size_t W, typename R > class T1, template< size_t H, size_t W, typename R > class T2, size_t N, size_t W, typename R1 , typename R2 >
Definition at line 1181 of file fmatCore.h.
template<template< size_t H, size_t W, typename R > class T1, template< size_t N, typename R > class T2, size_t H, size_t N, typename R1 , typename R2 >
Definition at line 1175 of file fmatCore.h.
template<template< size_t H, size_t W, typename R > class T1, template< size_t H, size_t W, typename R > class T2, size_t H, size_t N, size_t W, typename R1 , typename R2 >
Definition at line 1149 of file fmatCore.h.
template<template< size_t H, size_t W, typename R > class T2, size_t D, typename R1 , typename R2 >
Definition at line 1168 of file fmatCore.h.
template<template< size_t H, size_t W, typename R > class T1, template< size_t H, size_t W, typename R > class T2, size_t D, typename R1 , typename R2 >
Definition at line 1161 of file fmatCore.h.
template<size_t N, typename R >
Definition at line 1142 of file fmatCore.h.
template<size_t N, typename R >
Definition at line 1139 of file fmatCore.h.
template<size_t H, size_t W, typename R >
Definition at line 1136 of file fmatCore.h.
template<size_t H, size_t W, typename R >
Definition at line 1133 of file fmatCore.h.
template<size_t N, typename R >
Definition at line 1130 of file fmatCore.h.
template<size_t N1, size_t N2, typename R >
Definition at line 1125 of file fmatCore.h.
template<size_t N, typename R1 , typename R2 >
Definition at line 1121 of file fmatCore.h.
template<size_t N, typename R1 , typename R2 >
Definition at line 1117 of file fmatCore.h.
template<size_t N1, size_t N2, typename R >
Definition at line 1111 of file fmatCore.h.
template<size_t N, typename R1 , typename R2 >
Definition at line 1107 of file fmatCore.h.
template<size_t N, typename R1 , typename R2 >
Definition at line 1103 of file fmatCore.h.
template<template< size_t N, typename R > class T1, template< size_t N, typename R > class T2, size_t N1, size_t N2, typename R1 , typename R2 >
Definition at line 1097 of file fmatCore.h.
template<template< size_t N, typename R > class T, size_t N, typename R1 , typename R2 >
Definition at line 1092 of file fmatCore.h.
template<template< size_t N, typename R > class T, size_t N, typename R1 , typename R2 >
packing columns: appending an element or concatenating two columns Definition at line 1087 of file fmatCore.h. Definition at line 1072 of file fmatCore.h. Definition at line 1071 of file fmatCore.h. generic packing of N values into a Column<N> (note assumes fmatReal, see packT() Definition at line 1070 of file fmatCore.h. Referenced by GaitedFootsteps::addCandidate(), ShapeSpaceCollisionCheckerBase< 2 >::addDisplayRobotObstacles(), ConvexPolyObstacle::addPoint(), GaitedFootsteps::addRotation(), CBracketGrasperPredicate< N >::admissible(), Kinematics::calculateGroundPlane(), ConvexPolyObstacle::close(), RRTNodeXYTheta::CollisionChecker::colliders(), RRTNodeXYTheta::CollisionChecker::collides(), RectangularObstacle::collides(), RRTNode3DR< N >::CollisionChecker::CollisionChecker(), LinkComponent::computeBB2D(), KoduInterpreter::MotionActionRunner::ExecuteMotionAction::ExecuteGoToShapeRequest::doStart(), Grasper::ArmRaise::doStart(), Grasper::ArmNudge::doStart(), Grasper::DoBodyApproach2::doStart(), Grasper::PlanBodyApproach::doStart(), GaitedFootsteps::expand(), DualCoding::MapBuilder::filterGroundShapes(), EllipsoidObstacle::get2Support(), EllipticalObstacle::getBoundingBox(), DualCoding::MapBuilder::getCamCrosses(), DualCoding::MapBuilder::getCamDominoes(), BoxObstacle::getCorner(), RectangularObstacle::getCorner(), PhysicsBody::getInertia(), LinkComponent::getMassVector(), XWalkParameters::getMaxAVel(), KinematicJoint::getParentPosition(), EllipticalObstacle::getPointOnEdge(), AprilTags::TagDetection::getRotMatrix(), EllipsoidObstacle::getSupport(), CylindricalObstacle::getSupport(), ConvexPolyObstacle::getSupport(), EllipticalObstacle::getSupport(), RawImage::gradient(), SphericalObstacle::gradient(), EllipticalObstacle::gradient(), CircularObstacle::gradient(), ConvexPolyObstacle::hull(), ShapeSpacePlannerXYTheta::initialize(), OpticalFlow::initializePositions(), DualCoding::MapBuilder::isLineVisible(), DualCoding::MapBuilder::isPointVisible(), OpticalFlow::iterativeLucasKanade(), BoxObstacle::loadXML(), RectangularObstacle::loadXML(), ArmMC::moveToPoint(), normalLeft(), normalRight(), ShapeSpacePlanner3DR< N >::plotPath(), ShapeSpacePlanner2DR< N >::plotPath(), Kinematics::projectToPlane(), AprilTags::Quad::Quad(), BoxObstacle::reset(), EllipticalObstacle::reset(), RectangularObstacle::reset(), XWalkMC::resetPeriod(), Draw::setOrigin(), XWalkMC::setTargetDisplacement(), XWalkMC::setTargetVelocity(), IKCalliope::solve(), PostureEngine::solveLinkPosition(), and ShapeSpacePlannerXYTheta::tangentHeading().
template<typename R >
Definition at line 1082 of file fmatCore.h.
template<typename R >
Definition at line 1081 of file fmatCore.h.
template<typename R >
templated version to pack non fmatReal type, using a different name 'packT' so it needs to be explicitly called, e.g. pack(0,0,1) is generally intended as fmatReal, not int Definition at line 1080 of file fmatCore.h.
template<typename R >
Returns the scaling factor of d1 from p1 to reach intersection of d2 through p2. May return infinity if d1 and d2 are parallel (including collinear). Definition at line 712 of file fmatSpatial.h. Referenced by lineIntersection(). returns 2x2 rotation matrix for angle rad (in radians) about Z axis Definition at line 21 of file fmatSpatial.h. Referenced by GaitedFootsteps::addRotation(), IKCalliope::closestThreeLinkIK(), RRTNodeXYTheta::CollisionChecker::colliders(), RRTNodeXYTheta::CollisionChecker::collides(), XWalkMC::computeCurrentPosition(), RectangularObstacle::reset(), XWalkMC::updateOutputsInitial(), and XWalkMC::updateOutputsWalking().
template<typename R >
returns 2x2 rotation matrix (i.e. implied rotation about Z), for angle rad in radians Definition at line 15 of file fmatSpatial.h. returns 3x3 rotation matrix for angle rad (in radians) about X axis Definition at line 33 of file fmatSpatial.h. Referenced by Grasper::computeGoalStates().
template<size_t N, typename R >
returns NxN rotation matrix for angle rad (in radians) about X axis (only uses upper 3x3) Definition at line 25 of file fmatSpatial.h. returns 3x3 rotation matrix for angle rad (in radians) about Z axis Definition at line 45 of file fmatSpatial.h. Referenced by Grasper::computeGoalStates().
template<size_t N, typename R >
returns NxN rotation matrix for angle rad (in radians) about Y axis (only uses upper 3x3) Definition at line 37 of file fmatSpatial.h. returns 3x3 rotation matrix for angle rad (in radians) about Z axis Definition at line 63 of file fmatSpatial.h. Referenced by ShapeSpaceCollisionCheckerBase< 2 >::addDisplayRobotObstacles(), Grasper::computeGoalStates(), Grasper::PathPlanToRest::doStart(), Grasper::PathPlanConstrained::doStart(), Grasper::PlanArmApproach::doStart(), Grasper::PlanBodyApproach::doStart(), DualCoding::MapBuilder::getCamDominoes(), ShapeSpacePlannerXYTheta::initialize(), ShapeSpacePlanner3DR< N >::plotPath(), and ShapeSpacePlanner2DR< N >::plotPath().
template<size_t N, typename R >
returns NxN rotation matrix for angle rad (in radians) about Z axis (only uses upper 2x2) Definition at line 49 of file fmatSpatial.h.
template<typename R >
Returns the scaling factors for d1 and d2 through p1 and p2 respectively to reach common intersection. May return infinity if d1 and d2 are parallel (including collinear). Definition at line 694 of file fmatSpatial.h. Referenced by rayIntersection().
template<template< size_t, size_t, typename R > class M, typename R >
Returns yaw-pitch-roll aka heading-elevation-bank conversion, where roll-pitch-yaw correspond to compounding rotations about the global x, y, and z axis respectively (in that order). From the "driver's seat" positive heading is turning to the left (z is up, using right hand rule, not compass heading), positive pitch is looking down, and positive roll is spinning clockwise. Within this frame-oriented view, we apply rotation axes in the 'reverse' order: first z, then y, then x. You can reconstruct a rotation from these values by: q · v = rotationZ(yaw) * rotationY(pitch) * rotationX(roll) · v Note we right-multiply v to apply the rotation, so x is applied to an incoming vector first, then y, then z. Definition at line 675 of file fmatSpatial.h.
template<typename R >
Returns yaw-pitch-roll aka heading-elevation-bank conversion, where roll-pitch-yaw correspond to compounding rotations about the global x, y, and z axis respectively (in that order). From the "driver's seat" positive heading is turning to the left (z is up, using right hand rule, not compass heading), positive pitch is looking down, and positive roll is spinning clockwise. Within this frame-oriented view, we apply rotation axes in the 'reverse' order: first z, then y, then x. You can reconstruct a rotation from these values by: q · v = rotationZ(yaw) * rotationY(pitch) * rotationX(roll) · v Note we right-multiply v to apply the rotation, so x is applied to an incoming vector first, then y, then z. Definition at line 664 of file fmatSpatial.h.
template<typename R >
Returns yaw-pitch-roll aka heading-elevation-bank conversion, where roll-pitch-yaw correspond to compounding rotations about the global x, y, and z axis respectively (in that order). From the "driver's seat" positive heading is turning to the left (z is up, using right hand rule, not compass heading), positive pitch is looking down, and positive roll is spinning clockwise. Within this frame-oriented view, we apply rotation axes in the 'reverse' order: first z, then y, then x. You can reconstruct a Quaternion from these values by: q · v = aboutZ(yaw) * aboutY(pitch) * aboutX(roll) · v Note we right-multiply v to apply the rotation, so x is applied to an incoming vector first, then y, then z. With thanks to http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/ (note that page uses different axis mapping however!) Definition at line 653 of file fmatSpatial.h. Referenced by MoCapLogger::dump(), and MoCapLogger::gotMoCapGUI().
Variable Documentation
a length 2 column with '1' in the first dimension
a length 2 column with '1' in the second dimension
a length 3 column with '1' in the first dimension
a length 3 column with '1' in the second dimension
a length 3 column with '1' in the third dimension Referenced by GaitedFootsteps::expand().
a length 2 column vector with all zeros (could also just use Column<2>(), but this is more semantic) Definition at line 10 of file fmat.cc. Referenced by HierarchicalObstacle::collides(), HierarchicalObstacle::expandBoundingBox(), and IKCalliope::solve().
a length 3 column vector with all zeros (could also just use Column<3>(), but this is more semantic) Definition at line 11 of file fmat.cc. Referenced by Grasper::PathPlanConstrained::doStart(), Grasper::PlanArmDeliver::doStart(), Grasper::PlanBodyTransport::doStart(), Grasper::ArmRaise::doStart(), Grasper::ArmNudge::doStart(), Grasper::PlanArmApproach::doStart(), and ArmController::pointPicked().
a length 4 column vector representing zero in homogenous coordinates (0,0,0,1) |
Tekkotsu v5.1CVS |
Generated Mon May 9 04:59:22 2016 by Doxygen 1.6.3 |