blob: 2ecae686937edbaa37b3aff1af75d9b81d64e0a1 [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"
11#include "aos/mutex/mutex.h"
12#include "aos/network/team_number.h"
13#include "glog/logging.h"
Thiago Monteiroa47ae662022-08-27 16:05:54 -070014#include "y2022_bot3/control_loops/superstructure/climber/integral_climber_plant.h"
15#include "y2022_bot3/control_loops/superstructure/intake/integral_intake_plant.h"
Henry Speiser354d2782022-07-22 13:56:48 -070016
17namespace y2022_bot3 {
18namespace constants {
19
20const int Values::kZeroingSampleSize;
21
22namespace {
23
24const uint16_t kCompTeamNumber = 971;
25const uint16_t kPracticeTeamNumber = 9971;
26const uint16_t kCodingRobotTeamNumber = 7971;
27
28} // namespace
29
30Values MakeValues(uint16_t team) {
31 LOG(INFO) << "creating a Constants for team: " << team;
32
33 Values r;
34
Thiago Monteiroa47ae662022-08-27 16:05:54 -070035 auto *const intake = &r.intake;
36 auto *const climber_left = &r.climber_left;
37 auto *const climber_right = &r.climber_right;
38
39 ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
40 ::frc971::zeroing::PotAndAbsoluteEncoderZeroingEstimator>
41 intake_params;
42
43 intake_params.zeroing_voltage = 3.0;
44 intake_params.operating_voltage = 12.0;
45 intake_params.zeroing_profile_params = {0.5, 3.0};
46 intake_params.default_profile_params = {6.0, 30.0};
47 intake_params.range = Values::kIntakeRange();
48 intake_params.make_integral_loop =
49 control_loops::superstructure::intake::MakeIntegralIntakeLoop;
50 intake_params.zeroing_constants.average_filter_size =
51 Values::kZeroingSampleSize;
52 intake_params.zeroing_constants.one_revolution_distance =
53 M_PI * 2.0 * constants::Values::kIntakeEncoderRatio();
54 intake_params.zeroing_constants.zeroing_threshold = 0.0005;
55 intake_params.zeroing_constants.moving_buffer_size = 20;
56 intake_params.zeroing_constants.allowable_encoder_error = 0.9;
57 intake_params.zeroing_constants.measured_absolute_position = 0.0;
58
59 intake->subsystem_params = intake_params;
60
61 ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
62 ::frc971::zeroing::PotAndAbsoluteEncoderZeroingEstimator>
63 climber_params;
64
65 climber_params.zeroing_voltage = 3.0;
66 climber_params.operating_voltage = 12.0;
67 climber_params.zeroing_profile_params = {0.5, 0.1};
68 climber_params.default_profile_params = {5.0, 1.0};
69 climber_params.range = Values::kClimberRange();
70 climber_params.make_integral_loop =
71 control_loops::superstructure::climber::MakeIntegralClimberLoop;
72 climber_params.zeroing_constants.average_filter_size =
73 Values::kZeroingSampleSize;
74 climber_params.zeroing_constants.one_revolution_distance =
75 constants::Values::kClimberEncoderRatio() *
76 constants::Values::kClimberEncoderMetersPerRevolution();
77 climber_params.zeroing_constants.zeroing_threshold = 0.0005;
78 climber_params.zeroing_constants.moving_buffer_size = 20;
79 climber_params.zeroing_constants.allowable_encoder_error = 0.9;
80 climber_params.zeroing_constants.measured_absolute_position = 0.0;
81
82 climber_left->subsystem_params = climber_params;
83 climber_right->subsystem_params = climber_params;
84
Henry Speiser354d2782022-07-22 13:56:48 -070085 switch (team) {
86 // A set of constants for tests.
87 case 1:
Thiago Monteiroa47ae662022-08-27 16:05:54 -070088 intake->potentiometer_offset = 0.0;
89 intake->subsystem_params.zeroing_constants.measured_absolute_position =
90 0.0;
91 climber_left->potentiometer_offset = 0.0;
92 climber_left->subsystem_params.zeroing_constants
93 .measured_absolute_position = 0.0;
94 climber_right->potentiometer_offset = 0.0;
95 climber_right->subsystem_params.zeroing_constants
96 .measured_absolute_position = 0.0;
Henry Speiser354d2782022-07-22 13:56:48 -070097 break;
98
99 case kCompTeamNumber:
Thiago Monteiroa47ae662022-08-27 16:05:54 -0700100 intake->potentiometer_offset = 0.0;
101 intake->subsystem_params.zeroing_constants.measured_absolute_position =
102 0.0;
103 climber_left->potentiometer_offset = 0.0;
104 climber_left->subsystem_params.zeroing_constants
105 .measured_absolute_position = 0.0;
106 climber_right->potentiometer_offset = 0.0;
107 climber_right->subsystem_params.zeroing_constants
108 .measured_absolute_position = 0.0;
Henry Speiser354d2782022-07-22 13:56:48 -0700109 break;
110
111 case kPracticeTeamNumber:
Thiago Monteiroa47ae662022-08-27 16:05:54 -0700112 intake->potentiometer_offset = 0.0;
113 intake->subsystem_params.zeroing_constants.measured_absolute_position =
114 0.0;
115 climber_left->potentiometer_offset = 0.0;
116 climber_left->subsystem_params.zeroing_constants
117 .measured_absolute_position = 0.0;
118 climber_right->potentiometer_offset = 0.0;
119 climber_right->subsystem_params.zeroing_constants
120 .measured_absolute_position = 0.0;
Henry Speiser354d2782022-07-22 13:56:48 -0700121 break;
122
123 case kCodingRobotTeamNumber:
Thiago Monteiroa47ae662022-08-27 16:05:54 -0700124 intake->potentiometer_offset = 0.0;
125 intake->subsystem_params.zeroing_constants.measured_absolute_position =
126 0.0;
127 climber_left->potentiometer_offset = 0.0;
128 climber_left->subsystem_params.zeroing_constants
129 .measured_absolute_position = 0.0;
130 climber_right->potentiometer_offset = 0.0;
131 climber_right->subsystem_params.zeroing_constants
132 .measured_absolute_position = 0.0;
Henry Speiser354d2782022-07-22 13:56:48 -0700133 break;
134
135 default:
136 LOG(FATAL) << "unknown team: " << team;
137 }
138
139 return r;
140}
141
142Values MakeValues() { return MakeValues(aos::network::GetTeamNumber()); }
143
144} // namespace constants
145} // namespace y2022_bot3