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,
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);
VoltageController driveController(5.8432642308, 0.213526937516, 1.14429410811, 0.906356177095, 0.347072436421, 11.4953431776, 54.5797495382, 0.05, TRACK_WIDTH_M)