22 const auto pose = odom.
getPose();
23 return {
static_cast<double>(pose.position.x()),
24 static_cast<double>(pose.position.y()),
25 static_cast<double>(pose.heading)};
30 [[nodiscard]] std::pair<double, double>
33 const auto pose = odom.
getPose();
34 const double dx =
static_cast<double>(pose.position.x()) -
x;
35 const double dy =
static_cast<double>(pose.position.y()) -
y;
36 const double cos_h = std::cos(
heading);
37 const double sin_h = std::sin(
heading);
38 const double forward = dx * cos_h + dy * sin_h;
39 const double lateral = -dx * sin_h + dy * cos_h;
40 return {forward, lateral};
47 return std::remainder(current -
heading, 2.0 * std::numbers::pi);
static OdometrySnapshot capture(const odometry::IOdometry &odom)
std::pair< double, double > projectBodyFrame(const odometry::IOdometry &odom) const
double headingDelta(const odometry::IOdometry &odom) const
Return signed heading delta wrapped to [-pi, pi].
virtual double getHeading() const =0
virtual foundation::Pose getPose() const =0