Valkyrie 2026
Loading...
Searching...
No Matches
GamePieceSensor.h
1#pragma once
2
3#include <frc/estimator/SwerveDrivePoseEstimator.h>
4#include <frc/geometry/Pose3d.h>
5#include <units/length.h>
6#include <valkyrie/cameras/Limelight.h>
7#include <valkyrie/sensors/BaseSensor.h>
8#include <wpi/sendable/SendableBuilder.h>
9
10namespace valor {
11namespace sensors {
12
13class GamePieceSensor : public BaseSensor<std::optional<frc::Pose3d>> {
14 public:
15 explicit GamePieceSensor(std::shared_ptr<cameras::Limelight> camera);
16
17 void UpdateRelativeToCenter();
18
19 private:
20 struct RelativePose2d {
21 units::meter_t x{0_m};
22 units::meter_t y{0_m};
23 };
24
25 std::shared_ptr<cameras::Limelight> cam;
26
27 std::optional<frc::Pose3d> GetGlobalPose();
28
29 RelativePose2d relativePoseFromCenter;
30 RelativePose2d relativePoseFromCamera;
31};
32
33} // namespace sensors
34} // namespace valor
Abstract class that all Valor sensors should implement.
Definition BaseSensor.h:50