LightLib
PROS library for VEX V5: EKF/MCL localization, RAMSETE path following, high-level chassis API
Loading...
Searching...
No Matches
rotational_snap.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4
5#include "pros/abstract_motor.hpp"
6#include "pros/motor_group.hpp"
7#include "pros/motors.hpp"
8#include "pros/rotation.hpp"
9
20namespace light {
21
34 public:
51 RotationalSnap(pros::AbstractMotor& motor,
52 pros::Rotation& sensor,
53 std::vector<double> snap_angles_deg,
54 double kP = 1.5,
55 double tolerance_deg = 1.0,
56 int max_snap_speed = 80,
57 int input_deadband = 5);
58
74 void update(int manual_input);
75
82 void set_snap_angles(std::vector<double> angles_deg);
83
90 void set_enabled(bool on);
91
93 double get_position_deg() const;
94
96 double get_target_deg() const;
97
99 bool is_snapping() const { return has_target_; }
100
101 private:
102 double nearest_snap_(double pos_deg) const;
103
104 pros::AbstractMotor& motor_;
105 pros::Rotation& sensor_;
106 std::vector<double> snaps_;
107
108 double kP_;
109 double tol_;
110 double target_ = 0.0;
111 int max_speed_;
112 int deadband_;
113 bool enabled_ = true;
114 bool was_active_ = false;
115 bool has_target_ = false;
116};
117
118} // namespace light
Manual-then-snap controller for a motor + rotation-sensor pair.
double get_position_deg() const
void set_enabled(bool on)
Enable or disable snap behavior.
void set_snap_angles(std::vector< double > angles_deg)
Replace the snap angle list at runtime.
double get_target_deg() const
RotationalSnap(pros::AbstractMotor &motor, pros::Rotation &sensor, std::vector< double > snap_angles_deg, double kP=1.5, double tolerance_deg=1.0, int max_snap_speed=80, int input_deadband=5)
void update(int manual_input)
Advance one tick.
Public LightLib odometry / pose-estimation API.
Definition pid.hpp:22