Valkyrie 2026
Loading...
Searching...
No Matches
LidarSensor.h
1#pragma once
2
3#include <memory>
4#include <string>
5#include <vector>
6
7#include <frc/TimedRobot.h>
8#include <frc/filter/LinearFilter.h>
9#include <frc/geometry/Pose2d.h>
10#include <units/length.h>
11#include <valkyrie/sensors/BaseSensor.h>
12#include <valkyrie/sim/FieldFeature.h>
13
14namespace valor {
15namespace sensors {
16
25class LidarSensor : public BaseSensor<units::millimeter_t> {
26 public:
33
34 inline void SetMaxDistance(units::millimeter_t dist) { maxDistance = dist; }
35
36 inline units::millimeter_t GetMaxDistance() const { return maxDistance; }
37
38 inline void SetDefaultDistance(units::millimeter_t dist) { defaultDistance = dist; }
39
40 inline units::millimeter_t GetDefaultDistance() const { return defaultDistance; }
41
47 virtual bool IsHealthy() const { return true; }
48
49 void SetupSim(std::function<frc::Pose2d()> robotPoseGetter, frc::Transform2d sensorPosition, std::vector<sim::FieldFeature> features);
50
51 void SetGetter(std::function<units::millimeter_t()> getter);
52
53 void LoggablePeriodic() override;
54
55 protected:
56 struct SimState {
57 std::function<frc::Pose2d()> robotPoseGetter;
58 frc::Transform2d sensorPosition;
59 std::vector<sim::FieldFeature> fieldFeatures;
60 units::millimeter_t calculatedDistance;
61 };
62
63 std::unique_ptr<SimState> simState;
64
65 private:
66 void SimulationLoop();
67
73 units::millimeter_t maxDistance{std::numeric_limits<double>::infinity()};
74
76 units::millimeter_t defaultDistance = 0_mm;
77};
78
79} // namespace sensors
80} // namespace valor
Abstract class that all Valor sensors should implement.
Definition BaseSensor.h:50
LidarSensor()
Construct a new LidarSensor object.
void LoggablePeriodic() override
Periodic callback for logging updates.
virtual bool IsHealthy() const
Represents whether the sensor data is healthy.
Definition LidarSensor.h:47
Definition LidarSensor.h:56
units::millimeter_t calculatedDistance
Distance calculated in simulation.
Definition LidarSensor.h:60