6#include <unordered_set>
8#include <frc/apriltag/AprilTagFieldLayout.h>
9#include <frc/estimator/PoseEstimator.h>
10#include <frc/estimator/SwerveDrivePoseEstimator.h>
11#include <frc/geometry/Pose3d.h>
12#include <frc/geometry/Rotation3d.h>
13#include <networktables/NetworkTableEntry.h>
14#include <networktables/NetworkTableInstance.h>
15#include <units/angle.h>
16#include <units/angular_velocity.h>
17#include <units/length.h>
18#include <units/time.h>
19#include <units/velocity.h>
22#include "frc/geometry/Twist3d.h"
23#include "valkyrie/sensors/VisionSensor.h"
40 INTERNAL_MT1_ASSIST = 3,
41 INTERNAL_EXTERNAL_ASSIST = 4,
51 units::meter_t fieldBorderMargin = 0.5
_m;
54 double translationalStdDevCoefficient = 0.01;
55 double rotationalStdDevCoefficient = 0.03;
56 double perTagFactor = 1;
59 units::second_t maxMeasurementAge = 2.0
_s;
60 double ambiguityThreshold = 0.4;
71 std::optional<Config> config = std::nullopt);
114 Eigen::Vector3<units::degree_t>
theta;
119 Eigen::Vector3<units::degrees_per_second_t>
omega;
144 void setupSim(std::function<frc::Pose2d()> robotPoseGetter, std::unordered_set<int> tagIDs, units::degree_t horizontalFOV,
145 units::degree_t verticalFOV, units::meter_t maxDistance = units::meter_t{std::numeric_limits<double>::infinity()},
146 units::degree_t viewableAngle = 70
_deg);
148 void setIMUMode(IMUMode);
149 void setSolver(Solver);
150 constexpr Solver getSolver()
const {
return solver; }
151 void setIMUDoubt(
double doubt);
155 constexpr Config getConfig()
const {
return config; }
156 constexpr void setConfig(Config
c) { config =
c; }
160 std::function<frc::Pose2d()> robotPoseGetter;
161 std::unordered_set<int> tagIDs;
162 units::degree_t horizontalFOV;
163 units::degree_t verticalFOV;
164 units::meter_t maxDistance;
165 units::degree_t viewableAngle;
168 void setGetter(std::function<frc::Pose3d()>
getter);
170 std::unique_ptr<SimState> simState;
173 void simulationLoop();
180 frc::Pose3d getGlobalPose()
override;
184 frc::Pose3d megaTag2Pose = frc::Pose3d();
185 units::meter_t distance{0
_m};
186 Solver solver = Solver::MT1;
187 frc::AprilTagFieldLayout fieldLayout;
T ReadLog(std::string_view field, const T &defaultValue={})
Read a value from NetworkTables for the given field.
Definition Loggable.h:343
Base class for vision sensors, such as Limelight.
Definition VisionSensor.h:26