blob: 49d8bb6a0c581e0300d82cdbdbb3ee05a603e416 [file] [log] [blame]
Henry Speiser354d2782022-07-22 13:56:48 -07001#include "y2022_bot3/constants.h"
2
3#include <cinttypes>
4#include <map>
5
6#if __has_feature(address_sanitizer)
7#include "sanitizer/lsan_interface.h"
8#endif
9
10#include "absl/base/call_once.h"
Austin Schuh99f7c6a2024-06-25 22:07:44 -070011#include "absl/log/check.h"
12#include "absl/log/log.h"
Philipp Schrader790cb542023-07-05 21:06:52 -070013
Henry Speiser354d2782022-07-22 13:56:48 -070014#include "aos/mutex/mutex.h"
15#include "aos/network/team_number.h"
James Kuszmaulec635d22023-08-12 18:39:24 -070016#include "frc971/zeroing/pot_and_absolute_encoder.h"
Thiago Monteiroa47ae662022-08-27 16:05:54 -070017#include "y2022_bot3/control_loops/superstructure/climber/integral_climber_plant.h"
18#include "y2022_bot3/control_loops/superstructure/intake/integral_intake_plant.h"
Henry Speiser354d2782022-07-22 13:56:48 -070019
Stephan Pleinesf63bde82024-01-13 15:59:33 -080020namespace y2022_bot3::constants {
Henry Speiser354d2782022-07-22 13:56:48 -070021
22const int Values::kZeroingSampleSize;
23
24namespace {
25
26const uint16_t kCompTeamNumber = 971;
27const uint16_t kPracticeTeamNumber = 9971;
28const uint16_t kCodingRobotTeamNumber = 7971;
29
30} // namespace
31
32Values MakeValues(uint16_t team) {
33 LOG(INFO) << "creating a Constants for team: " << team;
34
35 Values r;
36
Thiago Monteiroa47ae662022-08-27 16:05:54 -070037 auto *const intake = &r.intake;
38 auto *const climber_left = &r.climber_left;
39 auto *const climber_right = &r.climber_right;
40
41 ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
42 ::frc971::zeroing::PotAndAbsoluteEncoderZeroingEstimator>
43 intake_params;
44
45 intake_params.zeroing_voltage = 3.0;
46 intake_params.operating_voltage = 12.0;
James Kuszmaul31c45352024-01-14 18:07:42 -080047 intake_params.zeroing_profile_params = {{}, 0.5, 3.0};
48 intake_params.default_profile_params = {{}, 6.0, 30.0};
Thiago Monteiroa47ae662022-08-27 16:05:54 -070049 intake_params.range = Values::kIntakeRange();
50 intake_params.make_integral_loop =
51 control_loops::superstructure::intake::MakeIntegralIntakeLoop;
52 intake_params.zeroing_constants.average_filter_size =
53 Values::kZeroingSampleSize;
54 intake_params.zeroing_constants.one_revolution_distance =
55 M_PI * 2.0 * constants::Values::kIntakeEncoderRatio();
56 intake_params.zeroing_constants.zeroing_threshold = 0.0005;
57 intake_params.zeroing_constants.moving_buffer_size = 20;
58 intake_params.zeroing_constants.allowable_encoder_error = 0.9;
59 intake_params.zeroing_constants.measured_absolute_position = 0.0;
60
61 intake->subsystem_params = intake_params;
62
63 ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
64 ::frc971::zeroing::PotAndAbsoluteEncoderZeroingEstimator>
65 climber_params;
66
67 climber_params.zeroing_voltage = 3.0;
68 climber_params.operating_voltage = 12.0;
James Kuszmaul31c45352024-01-14 18:07:42 -080069 climber_params.zeroing_profile_params = {{}, 0.5, 0.1};
70 climber_params.default_profile_params = {{}, 5.0, 1.0};
Thiago Monteiroa47ae662022-08-27 16:05:54 -070071 climber_params.range = Values::kClimberRange();
72 climber_params.make_integral_loop =
73 control_loops::superstructure::climber::MakeIntegralClimberLoop;
74 climber_params.zeroing_constants.average_filter_size =
75 Values::kZeroingSampleSize;
76 climber_params.zeroing_constants.one_revolution_distance =
77 constants::Values::kClimberEncoderRatio() *
78 constants::Values::kClimberEncoderMetersPerRevolution();
79 climber_params.zeroing_constants.zeroing_threshold = 0.0005;
80 climber_params.zeroing_constants.moving_buffer_size = 20;
81 climber_params.zeroing_constants.allowable_encoder_error = 0.9;
82 climber_params.zeroing_constants.measured_absolute_position = 0.0;
83
84 climber_left->subsystem_params = climber_params;
85 climber_right->subsystem_params = climber_params;
86
Henry Speiser354d2782022-07-22 13:56:48 -070087 switch (team) {
88 // A set of constants for tests.
89 case 1:
Thiago Monteiroa47ae662022-08-27 16:05:54 -070090 intake->potentiometer_offset = 0.0;
91 intake->subsystem_params.zeroing_constants.measured_absolute_position =
92 0.0;
93 climber_left->potentiometer_offset = 0.0;
94 climber_left->subsystem_params.zeroing_constants
95 .measured_absolute_position = 0.0;
96 climber_right->potentiometer_offset = 0.0;
97 climber_right->subsystem_params.zeroing_constants
98 .measured_absolute_position = 0.0;
Henry Speiser354d2782022-07-22 13:56:48 -070099 break;
100
101 case kCompTeamNumber:
Thiago Monteiroa47ae662022-08-27 16:05:54 -0700102 intake->potentiometer_offset = 0.0;
103 intake->subsystem_params.zeroing_constants.measured_absolute_position =
104 0.0;
105 climber_left->potentiometer_offset = 0.0;
106 climber_left->subsystem_params.zeroing_constants
107 .measured_absolute_position = 0.0;
108 climber_right->potentiometer_offset = 0.0;
109 climber_right->subsystem_params.zeroing_constants
110 .measured_absolute_position = 0.0;
Henry Speiser354d2782022-07-22 13:56:48 -0700111 break;
112
113 case kPracticeTeamNumber:
Thiago Monteiroa47ae662022-08-27 16:05:54 -0700114 intake->potentiometer_offset = 0.0;
115 intake->subsystem_params.zeroing_constants.measured_absolute_position =
116 0.0;
117 climber_left->potentiometer_offset = 0.0;
118 climber_left->subsystem_params.zeroing_constants
119 .measured_absolute_position = 0.0;
120 climber_right->potentiometer_offset = 0.0;
121 climber_right->subsystem_params.zeroing_constants
122 .measured_absolute_position = 0.0;
Henry Speiser354d2782022-07-22 13:56:48 -0700123 break;
124
125 case kCodingRobotTeamNumber:
Thiago Monteiroa47ae662022-08-27 16:05:54 -0700126 intake->potentiometer_offset = 0.0;
127 intake->subsystem_params.zeroing_constants.measured_absolute_position =
128 0.0;
129 climber_left->potentiometer_offset = 0.0;
130 climber_left->subsystem_params.zeroing_constants
131 .measured_absolute_position = 0.0;
132 climber_right->potentiometer_offset = 0.0;
133 climber_right->subsystem_params.zeroing_constants
134 .measured_absolute_position = 0.0;
Henry Speiser354d2782022-07-22 13:56:48 -0700135 break;
136
137 default:
138 LOG(FATAL) << "unknown team: " << team;
139 }
140
141 return r;
142}
143
144Values MakeValues() { return MakeValues(aos::network::GetTeamNumber()); }
145
Stephan Pleinesf63bde82024-01-13 15:59:33 -0800146} // namespace y2022_bot3::constants