25 #ifndef INCLUDED_OptimizationBase_h_GUID_C3489E14_63D4_4290_45C0_225AC84A8BF5 
   26 #define INCLUDED_OptimizationBase_h_GUID_C3489E14_63D4_4290_45C0_225AC84A8BF5 
   66             auto system = makeHDKTrackingSystem(params);
 
   67             auto &body = system->getBody(
BodyId(0));
 
   68             auto &target = *(body.getTarget(
TargetId(0)));
 
   69             return OptimData(std::move(system), body, target,
 
   70                              commonData.camParams);
 
   73             return OptimData::make(commonData.initialParams, commonData);
 
   85             : camParams_(camParams), system_(std::move(system)), body_(&body),
 
   89         std::unique_ptr<TrackingSystem> system_;
 
  103                 makeImageOutputDataFromRow(row, optim.getCamParams());
 
  119                 makeImageOutputDataFromRow(row, optim.getCamParams());
 
  121                 std::move(inputData));
 
  127         bool havePose()
 const { 
return gotPose; }
 
  128         Eigen::Isometry3d 
const &getPose()
 const { 
return pose; }
 
  129         std::size_t getNumResets(
OptimData const &optim) {
 
  134         bool gotPose = 
false;
 
  135         Eigen::Isometry3d pose;
 
  146             flippedPose_ = 
false;
 
  148             Eigen::Quaterniond quat;
 
  151                     optim.getCamParams(), pos, quat);
 
  155                 double yAxisYComponent = (quat * Eigen::Vector3d::UnitY()).y();
 
  156                 if (yAxisYComponent < 0) {
 
  168                 ransacPoseFilter.
filter(dt, pos, quat);
 
  171                 pose = ransacPoseFilter.getIsometry();
 
  174         bool flippedPose()
 const { 
return flippedPose_; }
 
  175         std::size_t getNumFlips()
 const { 
return numFlips_; }
 
  176         bool havePose()
 const { 
return gotPose; }
 
  177         Eigen::Isometry3d 
const &getPose()
 const { 
return pose; }
 
  180         util::filters::PoseOneEuroFilterd ransacPoseFilter;
 
  183         bool gotPose = 
false;
 
  184         bool flippedPose_ = 
false;
 
  185         std::size_t numFlips_ = 0;
 
  186         Eigen::Isometry3d pose;
 
  200             : base_(reftracker::getBaseTransform(
 
  201                   reftracker::getRefTrackerTransformParams())),
 
  202               inner_(reftracker::getInnerTransform(
 
  203                   reftracker::getRefTrackerTransformParams())) {}
 
  207             pose_ = base_ * 
makeIsometry(row.xlate, row.rot) * inner_;
 
  209         bool havePose()
 const { 
return true; }
 
  210         Eigen::Isometry3d 
const &getPose()
 const { 
return pose_; }
 
  213         Eigen::Isometry3d base_;
 
  214         Eigen::Isometry3d inner_;
 
  215         Eigen::Isometry3d pose_;
 
  219 #endif // INCLUDED_OptimizationBase_h_GUID_C3489E14_63D4_4290_45C0_225AC84A8BF5 
OSVR_EXTERN_C_END double osvrTimeValueDurationSeconds(const OSVR_TimeValue *tvA, const OSVR_TimeValue *tvB)
Compute the difference between the two time values, returning the duration as a double-precision floa...
bool hasPoseEstimate() const 
Do we have a pose estimate for this body in general? 
bool uncalibratedRANSACPoseEstimateFromLeds(CameraParameters const &camParams, Eigen::Vector3d &xlate, Eigen::Quaterniond &quat, int skipBrightsCutoff=-1, std::size_t iterations=5)
Eigen::Isometry3d getIsometry() const 
Header wrapping include of  and  for warning quieting. 
::OSVR_TimeValue TimeValue
C++-friendly typedef for the OSVR_TimeValue structure. 
void operator()(OptimData &optim, TimestampedMeasurements const &row)
Header defining some filters for Eigen datatypes. 
LedUpdateCount const & updateLedsFromVideoData(ImageOutputDataPtr &&imageData)
General configuration parameters. 
BodyIndices const & updateBodiesFromVideoData(ImageOutputDataPtr &&imageData)
std::size_t numTrackingResets() const 
Isometry3< typename Derived1::Scalar > makeIsometry(Eigen::MatrixBase< Derived1 > const &translation, Eigen::RotationBase< Derived2, 3 > const &rotation)
A simpler, functional-style alternative to .fromPositionOrientationScale when no scaling is performed...
Input from main to the optimization routine (wrapper) 
void filter(scalar dt, Vec3 const &position, Quat const &orientation)