LightLib
PROS library for VEX V5: EKF/MCL localization, RAMSETE path following, high-level chassis API
Loading...
Searching...
No Matches
extras.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "LightLib/lib.hpp"
5#include "pros/motor_group.hpp"
6
25void screen_print_tracker(light::tracking_wheel* tracker, std::string name, int line);
26
29
32
44void checkMotorTemp(pros::Controller& controller, pros::Motor& Top, pros::Motor& Bottom);
45
48
51
52namespace light {
68 pros::MotorGroup* leftMotors,
69 pros::MotorGroup* rightMotors);
70
82void getDriveMotorGroups(pros::MotorGroup** leftOut,
83 pros::MotorGroup** rightOut);
84
87} // namespace light
88
95struct LightPID {
96 float kP, kI, kD;
97 float prevError = 0;
98 float integral = 0;
99 float integralCap = 1000.0f;
100
102 LightPID(float kP, float kI, float kD) : kP(kP), kI(kI), kD(kD) {}
103
111 float update(float error) {
112 integral += error;
113 if (integralCap > 0.0f) {
116 }
117 float derivative = error - prevError;
118 prevError = error;
119 return kP * error + kI * integral + kD * derivative;
120 }
121
123 void reset() {
124 prevError = 0;
125 integral = 0;
126 }
127};
128
143void moveToPoint(float x, float y, int timeout,
144 float maxSpeed = 127.0f, bool reversed = false);
Pose, sensor specs, and the global odometry / pose-estimation API.
Tank-drive chassis class.
Definition drive.hpp:72
Single tracking wheel for odometry.
void screen_print_tracker(light::tracking_wheel *tracker, std::string name, int line)
Render one tracking-wheel's live position to a brain-screen line.
void screen_task()
Background task that paints status text to the brain screen.
void lib_extras()
Boots all the LightLib helper tasks (screen, temp watch, etc.).
void default_positions()
Set initial piston / mechanism states.
void checkMotorTemp(pros::Controller &controller, pros::Motor &Top, pros::Motor &Bottom)
Buzz the controller when a key drive motor exceeds the configured heat threshold (HEAT_BUZZ_TEMP in m...
void track_basket()
Tracks a basket / scoring target (project-specific).
Umbrella header for LightLib's own classes.
Public LightLib odometry / pose-estimation API.
Definition pid.hpp:22
void extras_init(light::Drive *chassis, pros::MotorGroup *leftMotors, pros::MotorGroup *rightMotors)
Register the user's drivetrain objects with LightLib.
void getDriveMotorGroups(pros::MotorGroup **leftOut, pros::MotorGroup **rightOut)
Look up the registered drivetrain motor groups.
void moveToPoint(float targetX, float targetY, int timeout, float maxSpeed, bool reversed)
Drive the chassis to a field-relative point (legacy entry point).
light::Drive * getChassis()
Lightweight PID controller used by characterization helpers.
Definition extras.hpp:95
LightPID(float kP, float kI, float kD)
Construct with gains.
Definition extras.hpp:102
float prevError
Previous-cycle error.
Definition extras.hpp:97
float integralCap
Anti-windup clamp (set 0 to disable).
Definition extras.hpp:99
float kD
Gains.
Definition extras.hpp:96
float integral
Accumulated integral term.
Definition extras.hpp:98
float update(float error)
Advance one step.
Definition extras.hpp:111
void reset()
Zero out the integral and previous-error history.
Definition extras.hpp:123
float kP
Definition extras.hpp:96
float kI
Definition extras.hpp:96
Drive chassis
The drive chassis, configured in main.cpp and used everywhere else.
pros::Motor Bottom(17)
pros::Motor Top(7)