25 #ifndef INCLUDED_UtilityFunctions_h_GUID_18928B12_FA9D_4285_102C_3106E5EEE14C 26 #define INCLUDED_UtilityFunctions_h_GUID_18928B12_FA9D_4285_102C_3106E5EEE14C 49 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
51 Eigen::Vector3d xlate;
53 LedMeasurementVec measurements;
56 using TimestampedMeasurementsPtr = std::unique_ptr<TimestampedMeasurements>;
57 using MeasurementsRows = std::vector<TimestampedMeasurementsPtr>;
67 inline double getReallyBigCost() {
return 1000000.; }
69 template <
typename VecType>
71 Eigen::Vector3d vec = v;
72 return util::quat_exp_map(vec).exp();
91 namespace reftracker {
92 using TransformParams =
Vec<12>;
99 2.382413079481474, -0.08838304984947577, -0.3418371322988537,
100 0.08973247977775475, 0.04221099149748584, -0.289480834047175,
101 -0.1169425186552738, -0.03623604095935174, -0.0460904237026321,
102 0.001219163540875095)
109 BaseRot = BaseXlate + 3,
110 InnerXlate = BaseRot + 3,
111 InnerRot = InnerXlate + 3
119 return rot_exp(vec.segment<3>(BaseRot));
122 return makeIsometry(getBaseTranslation(vec), getBaseRotation(vec));
129 return rot_exp(vec.segment<3>(InnerRot));
132 return makeIsometry(getInnerTranslation(vec),
133 getInnerRotation(vec));
139 auto distanceAway = -1.;
142 using Point = std::array<double, 3>;
143 auto corners = {Point{.2, -.2, distanceAway},
144 Point{-.2, -.2, distanceAway},
145 Point{0, .4, distanceAway}};
147 for (
auto &corner : corners) {
148 Eigen::Vector3d pt = Eigen::Vector3d::Map(corner.data());
149 accum += ((refPose * pt) - (expPose * pt)).norm();
155 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
159 using TrackedDataPtr = std::unique_ptr<TrackedData>;
160 using TrackedSamples = std::vector<TrackedDataPtr>;
165 std::cout <<
"HDK to VideoBase: " 166 << (sample.videoPose).translation().transpose() << std::endl;
167 std::cout <<
"Ref to VideoBase: " 168 << (baseXform * sample.refPose * innerXform)
172 std::cout <<
"Vive to VideoBase: " 173 << (baseXform * sample.refPose).translation().transpose()
175 std::cout <<
"---------" << std::endl;
180 #endif // INCLUDED_UtilityFunctions_h_GUID_18928B12_FA9D_4285_102C_3106E5EEE14C Definition: UtilityFunctions.h:48
Eigen::IOFormat const & getFullFormat()
Use for output of parameters.
Definition: UtilityFunctions.h:61
The main namespace for all C++ elements of the framework, internal and external.
Definition: namespace_osvr.dox:3
Header wrapping include of <Eigen/Core> and <Eigen/Geometry> for warning quieting.
TransformParams const & getRefTrackerTransformParams()
where we can store results from a run of computeRefTrackerTransform() for use later/elsewhere.
Definition: UtilityFunctions.h:96
::OSVR_TimeValue TimeValue
C++-friendly typedef for the OSVR_TimeValue structure.
Definition: TimeValue.h:48
Definition: ForwardDeclarations.h:236
Definition: UtilityFunctions.h:154
A matrix or vector expression mapping an existing expressions.
Definition: Ref.h:17
Header providing a C++ wrapper around TimeValueC.h.
Definition: Quaternion.h:47
double costMeasurement(Eigen::Isometry3d const &refPose, Eigen::Isometry3d const &expPose)
Definition: UtilityFunctions.h:137
The matrix class, also used for vectors and row-vectors.
Definition: Matrix.h:127