blob: 18d8de2ecaaa91683fc23fc0e24d3a954c50413d [file] [log] [blame]
Brian Silverman431500a2013-10-28 19:50:15 -07001#include "frc971/constants.h"
2
3#include <math.h>
4#include <stdint.h>
5#include <inttypes.h>
6
7#include "aos/common/logging/logging.h"
8#include "aos/common/once.h"
9#include "aos/common/network/team_number.h"
10
11#ifndef M_PI
12#define M_PI 3.14159265358979323846
13#endif
14
15namespace frc971 {
16namespace constants {
17namespace {
18
19// It has about 0.029043 of gearbox slop.
20// For purposes of moving the end up/down by a certain amount, the wrist is 18
21// inches long.
Brian Silverman1a6590d2013-11-04 14:46:46 -080022const double kCompWristHallEffectStartAngle = 1.27;
Brian Silvermanc0faf612013-11-03 15:53:22 -080023const double kPracticeWristHallEffectStartAngle = 1.182;
Brian Silverman431500a2013-10-28 19:50:15 -070024
25const double kWristHallEffectStopAngle = 100 * M_PI / 180.0;
26
27const double kPracticeWristUpperPhysicalLimit = 1.677562;
28const double kCompWristUpperPhysicalLimit = 1.677562;
29
30const double kPracticeWristLowerPhysicalLimit = -0.746128;
31const double kCompWristLowerPhysicalLimit = -0.746128;
32
33const double kPracticeWristUpperLimit = 1.615385;
34const double kCompWristUpperLimit = 1.615385;
35
36const double kPracticeWristLowerLimit = -0.746128;
37const double kCompWristLowerLimit = -0.746128;
38
39const double kWristZeroingSpeed = 0.125;
40const double kWristZeroingOffSpeed = 0.35;
41
42const int kAngleAdjustHallEffect = 2;
43
44// Angle measured from CAD with the top of the angle adjust at the top of the
45// wire guide is 0.773652098 radians.
46
47const double kCompAngleAdjustHallEffectStartAngle[2] = {0.301170496, 1.5};
48const double kPracticeAngleAdjustHallEffectStartAngle[2] = {0.305172594, 1.5};
49
50const double kAngleAdjustHallEffectStopAngle[2] = {0.1, 1.0};
51
52const double kPracticeAngleAdjustUpperPhysicalLimit = 0.904737;
53const double kCompAngleAdjustUpperPhysicalLimit = 0.904737;
54
55const double kPracticeAngleAdjustLowerPhysicalLimit = 0.270;
56const double kCompAngleAdjustLowerPhysicalLimit = 0.302;
57
58const double kPracticeAngleAdjustUpperLimit = 0.87;
59const double kCompAngleAdjustUpperLimit = 0.87;
60
61const double kPracticeAngleAdjustLowerLimit = 0.31;
62const double kCompAngleAdjustLowerLimit = 0.28;
63
64const double kAngleAdjustZeroingSpeed = -0.2;
65const double kAngleAdjustZeroingOffSpeed = -0.5;
66
67const double kPracticeAngleAdjustDeadband = 0.4;
68const double kCompAngleAdjustDeadband = 0.65;
69
70const int kCompCameraCenter = -2;
71const int kPracticeCameraCenter = -5;
72
Brian Silverman1a6590d2013-11-04 14:46:46 -080073const double kCompDrivetrainEncoderRatio =
74 (15.0 / 50.0) /*output reduction*/ * (36.0 / 24.0) /*encoder gears*/;
75const double kCompLowGearRatio = 14.0 / 60.0 * 15.0 / 50.0;
76const double kCompHighGearRatio = 30.0 / 44.0 * 15.0 / 50.0;
Brian Silverman431500a2013-10-28 19:50:15 -070077
Brian Silverman1a6590d2013-11-04 14:46:46 -080078const double kPracticeDrivetrainEncoderRatio =
79 (17.0 / 50.0) /*output reduction*/ * (64.0 / 24.0) /*encoder gears*/;
80const double kPracticeLowGearRatio = 16.0 / 60.0 * 19.0 / 50.0;
81const double kPracticeHighGearRatio = 28.0 / 48.0 * 19.0 / 50.0;
82
83const ShifterHallEffect kCompLeftDriveShifter{0.8 /*TODO*/, 2.14, 1.2, 1.0};
84const ShifterHallEffect kCompRightDriveShifter{0.865, 2.375, 1.2, 1.0};
Brian Silverman6eb51f12013-11-02 14:39:01 -070085
86const ShifterHallEffect kPracticeLeftDriveShifter{2.082283, 0.834433, 0.60,
87 0.47};
88const ShifterHallEffect kPracticeRightDriveShifter{2.070124, 0.838993, 0.62,
89 0.55};
90
Brian Silverman431500a2013-10-28 19:50:15 -070091const Values *DoGetValues() {
92 uint16_t team = ::aos::network::GetTeamNumber();
93 LOG(INFO, "creating a Constants for team %" PRIu16 "\n", team);
94 switch (team) {
95 case kCompTeamNumber:
96 return new Values{kCompWristHallEffectStartAngle,
97 kWristHallEffectStopAngle,
98 kCompWristUpperLimit,
99 kCompWristLowerLimit,
100 kCompWristUpperPhysicalLimit,
101 kCompWristLowerPhysicalLimit,
102 kWristZeroingSpeed,
103 kWristZeroingOffSpeed,
104 kCompAngleAdjustHallEffectStartAngle,
105 kAngleAdjustHallEffectStopAngle,
106 kCompAngleAdjustUpperLimit,
107 kCompAngleAdjustLowerLimit,
108 kCompAngleAdjustUpperPhysicalLimit,
109 kCompAngleAdjustLowerPhysicalLimit,
110 kAngleAdjustZeroingSpeed,
111 kAngleAdjustZeroingOffSpeed,
112 kCompAngleAdjustDeadband,
Brian Silverman1a6590d2013-11-04 14:46:46 -0800113 kCompDrivetrainEncoderRatio,
114 kCompLowGearRatio,
115 kCompHighGearRatio,
Brian Silverman6eb51f12013-11-02 14:39:01 -0700116 kCompLeftDriveShifter,
117 kCompRightDriveShifter,
Brian Silverman1a6590d2013-11-04 14:46:46 -0800118 true,
Brian Silverman431500a2013-10-28 19:50:15 -0700119 kCompCameraCenter};
120 break;
121 case kPracticeTeamNumber:
122 return new Values{kPracticeWristHallEffectStartAngle,
123 kWristHallEffectStopAngle,
124 kPracticeWristUpperLimit,
125 kPracticeWristLowerLimit,
126 kPracticeWristUpperPhysicalLimit,
127 kPracticeWristLowerPhysicalLimit,
128 kWristZeroingSpeed,
129 kWristZeroingOffSpeed,
130 kPracticeAngleAdjustHallEffectStartAngle,
131 kAngleAdjustHallEffectStopAngle,
132 kPracticeAngleAdjustUpperLimit,
133 kPracticeAngleAdjustLowerLimit,
134 kPracticeAngleAdjustUpperPhysicalLimit,
135 kPracticeAngleAdjustLowerPhysicalLimit,
136 kAngleAdjustZeroingSpeed,
137 kAngleAdjustZeroingOffSpeed,
138 kPracticeAngleAdjustDeadband,
Brian Silverman1a6590d2013-11-04 14:46:46 -0800139 kPracticeDrivetrainEncoderRatio,
140 kPracticeLowGearRatio,
141 kPracticeHighGearRatio,
Brian Silverman6eb51f12013-11-02 14:39:01 -0700142 kPracticeLeftDriveShifter,
143 kPracticeRightDriveShifter,
Brian Silverman1a6590d2013-11-04 14:46:46 -0800144 false,
Brian Silverman431500a2013-10-28 19:50:15 -0700145 kPracticeCameraCenter};
146 break;
147 default:
148 LOG(FATAL, "unknown team #%" PRIu16 "\n", team);
149 }
150}
151
152} // namespace
153
154const Values &GetValues() {
155 static ::aos::Once<const Values> once(DoGetValues);
156 return *once.Get();
157}
158
159} // namespace constants
160} // namespace frc971