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
12#include "valkyrie/sensors/BaseSensor.h"
13#include "valkyrie/sim/FieldFeature.h"
14
15namespace valor {
16namespace sensors {
17
26class LidarSensor : public BaseSensor<units::millimeter_t> {
27 public:
34
35 inline void SetMaxDistance(units::millimeter_t dist) { maxDistance = dist; }
36
37 inline units::millimeter_t GetMaxDistance() const { return maxDistance; }
38
39 inline void SetDefaultDistance(units::millimeter_t dist) { defaultDistance = dist; }
40
41 inline units::millimeter_t GetDefaultDistance() const { return defaultDistance; }
42
48 virtual bool IsHealthy() const { return true; }
49
50 void SetupSim(std::function<frc::Pose2d()> robotPoseGetter, frc::Transform2d sensorPosition, std::vector<sim::FieldFeature> features);
51
52 void SetGetter(std::function<units::millimeter_t()> getter);
53
54 protected:
55 struct SimState {
56 std::function<frc::Pose2d()> robotPoseGetter;
57 frc::Transform2d sensorPosition;
58 std::vector<sim::FieldFeature> fieldFeatures;
59 units::millimeter_t calculatedDistance;
60 };
61
68 void Calculate() override;
69
70 std::unique_ptr<SimState> simState;
71
72 private:
73 void SimulationLoop();
74
80 units::millimeter_t maxDistance{std::numeric_limits<double>::infinity()};
81
83 units::millimeter_t defaultDistance = 0_mm;
84};
85
86} // namespace sensors
87} // namespace valor
Abstract class that all Valor sensors should implement.
Definition BaseSensor.h:52
LidarSensor()
Construct a new LidarSensor object.
void Calculate() override
Perform Lidar-specific calculations.
virtual bool IsHealthy() const
Represents whether the sensor data is healthy.
Definition LidarSensor.h:48
Definition LidarSensor.h:55
units::millimeter_t calculatedDistance
Distance calculated in simulation.
Definition LidarSensor.h:59