42template <
typename WheelSpeeds,
typename WheelPositions>
74 void SetVisionMeasurementStdDevs(
87 void ResetPosition(
const Rotation2d& gyroAngle,
95 Pose2d GetEstimatedPosition()
const;
104 std::optional<Pose2d> SampleAt(units::second_t timestamp)
const;
126 void AddVisionMeasurement(
const Pose2d& visionRobotPose,
127 units::second_t timestamp);
158 const Pose2d& visionRobotPose, units::second_t timestamp,
160 SetVisionMeasurementStdDevs(visionMeasurementStdDevs);
161 AddVisionMeasurement(visionRobotPose, timestamp);
186 Pose2d UpdateWithTime(units::second_t currentTime,
194 void CleanUpVisionUpdates();
196 struct VisionUpdate {
212 auto delta = pose - odometryPose;
213 return visionPose + delta;
217 static constexpr units::second_t kBufferDuration = 1.5_s;
219 Odometry<WheelSpeeds, WheelPositions>& m_odometry;
221 Eigen::Matrix3d m_visionK = Eigen::Matrix3d::Zero();
224 TimeInterpolatableBuffer<Pose2d> m_odometryPoseBuffer{kBufferDuration};
228 std::map<units::second_t, VisionUpdate> m_visionUpdates;
#define WPILIB_DLLEXPORT
Definition: SymbolExports.h:36
Helper class that converts a chassis velocity (dx, dy, and dtheta components) into individual wheel s...
Definition: Kinematics.h:24
Class for odometry.
Definition: Odometry.h:28
Represents a 2D pose containing translational and rotational elements.
Definition: Pose2d.h:23
This class wraps odometry to fuse latency-compensated vision measurements with encoder measurements.
Definition: PoseEstimator.h:43
void AddVisionMeasurement(const Pose2d &visionRobotPose, units::second_t timestamp, const wpi::array< double, 3 > &visionMeasurementStdDevs)
Adds a vision measurement to the Kalman Filter.
Definition: PoseEstimator.h:157
A rotation in a 2D coordinate frame represented by a point on the unit circle (cosine and sine).
Definition: Rotation2d.h:23
Definition: WheelPositions.h:11
Definition: AprilTagDetector_cv.h:11
class WPILIB_DLLEXPORT Pose2d
Definition: Transform2d.h:13
constexpr empty_array_t empty_array
Definition: array.h:16