2#include "pros/colors.h"
4#include "velocityController.h"
10 pros::vision_signature_s_t SIG_1 = pros::Vision::signature_from_utility(1, 2283, 6317, 4300, -5329, -4553, -4941, 5.3, 0);
17 pros::Task::current().remove();
28 5.8432642308, 0.213526937516, 1.14429410811, 0.906356177095,
29 0.347072436421, 11.4953431776, 54.5797495382, 0.05,
TRACK_WIDTH_M
33 const float VISION_kP = 0.012f;
34 const float MAX_W = 3.0f;
35 const int CENTER_X = 158;
36 const int ERROR_THRESHOLD = 5;
37 const int FRAMES_TO_SETTLE = 12;
39 int aligned_counter = 0;
40 int lost_frame_counter = 0;
41 float time_elapsed = 0;
42 bool is_aligned =
false;
46 while (time_elapsed < 3000 && !
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_A)) {
48 pros::vision_object_s_t goal =
vision_sensor.get_by_sig(0, SIG_NUM);
54 if (goal.width > 15) {
55 lost_frame_counter = 0;
57 int error = -CENTER_X + goal.x_middle_coord;
59 if (std::abs(error) <= ERROR_THRESHOLD) {
64 if (aligned_counter > FRAMES_TO_SETTLE) {
71 targetW = error * VISION_kP;
72 targetW = std::clamp((
float)targetW, -MAX_W, MAX_W);
76 if (lost_frame_counter > 3) {
83 DrivetrainVoltages volts =
driveController.update(0.0, targetW, mLeft, mRight);
pros::Vision vision_sensor(18)
lemlib::Drivetrain drivebase & leftMotors
pros::Controller controller(pros::E_CONTROLLER_MASTER)
pros::MotorGroup rightMotors({17, 19, -18}, pros::MotorGears::blue)
static constexpr float TRACK_WIDTH_M
static constexpr float INCH_TO_METER
VoltageController driveController(5.8432642308, 0.213526937516, 1.14429410811, 0.906356177095, 0.347072436421, 11.4953431776, 54.5797495382, 0.05, TRACK_WIDTH_M)
static constexpr float wheel_circumference
static constexpr float gear_ratio
bool alignToGoal(int SIG_NUM)
static constexpr float rpm_to_mps_factor