blob: 97ff82b7e55c705468e1b989eb2d03dc0589a405 [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.
22const double kCompWristHallEffectStartAngle = 1.285;
23const double kPracticeWristHallEffectStartAngle = 1.175;
24
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
73const int kCompDrivetrainGearboxPinion = 19;
74const int kPracticeDrivetrainGearboxPinion = 17;
75
Brian Silverman6eb51f12013-11-02 14:39:01 -070076const ShifterHallEffect kCompLeftDriveShifter{1.5, 1, 1.2, 1.0};
77const ShifterHallEffect kCompRightDriveShifter{1.5, 1, 1.2, 1.0};
78
79const ShifterHallEffect kPracticeLeftDriveShifter{2.082283, 0.834433, 0.60,
80 0.47};
81const ShifterHallEffect kPracticeRightDriveShifter{2.070124, 0.838993, 0.62,
82 0.55};
83
Brian Silverman431500a2013-10-28 19:50:15 -070084const Values *DoGetValues() {
85 uint16_t team = ::aos::network::GetTeamNumber();
86 LOG(INFO, "creating a Constants for team %" PRIu16 "\n", team);
87 switch (team) {
88 case kCompTeamNumber:
89 return new Values{kCompWristHallEffectStartAngle,
90 kWristHallEffectStopAngle,
91 kCompWristUpperLimit,
92 kCompWristLowerLimit,
93 kCompWristUpperPhysicalLimit,
94 kCompWristLowerPhysicalLimit,
95 kWristZeroingSpeed,
96 kWristZeroingOffSpeed,
97 kCompAngleAdjustHallEffectStartAngle,
98 kAngleAdjustHallEffectStopAngle,
99 kCompAngleAdjustUpperLimit,
100 kCompAngleAdjustLowerLimit,
101 kCompAngleAdjustUpperPhysicalLimit,
102 kCompAngleAdjustLowerPhysicalLimit,
103 kAngleAdjustZeroingSpeed,
104 kAngleAdjustZeroingOffSpeed,
105 kCompAngleAdjustDeadband,
106 kCompDrivetrainGearboxPinion,
Brian Silverman6eb51f12013-11-02 14:39:01 -0700107 kCompLeftDriveShifter,
108 kCompRightDriveShifter,
Brian Silverman431500a2013-10-28 19:50:15 -0700109 kCompCameraCenter};
110 break;
111 case kPracticeTeamNumber:
112 return new Values{kPracticeWristHallEffectStartAngle,
113 kWristHallEffectStopAngle,
114 kPracticeWristUpperLimit,
115 kPracticeWristLowerLimit,
116 kPracticeWristUpperPhysicalLimit,
117 kPracticeWristLowerPhysicalLimit,
118 kWristZeroingSpeed,
119 kWristZeroingOffSpeed,
120 kPracticeAngleAdjustHallEffectStartAngle,
121 kAngleAdjustHallEffectStopAngle,
122 kPracticeAngleAdjustUpperLimit,
123 kPracticeAngleAdjustLowerLimit,
124 kPracticeAngleAdjustUpperPhysicalLimit,
125 kPracticeAngleAdjustLowerPhysicalLimit,
126 kAngleAdjustZeroingSpeed,
127 kAngleAdjustZeroingOffSpeed,
128 kPracticeAngleAdjustDeadband,
129 kPracticeDrivetrainGearboxPinion,
Brian Silverman6eb51f12013-11-02 14:39:01 -0700130 kPracticeLeftDriveShifter,
131 kPracticeRightDriveShifter,
Brian Silverman431500a2013-10-28 19:50:15 -0700132 kPracticeCameraCenter};
133 break;
134 default:
135 LOG(FATAL, "unknown team #%" PRIu16 "\n", team);
136 }
137}
138
139} // namespace
140
141const Values &GetValues() {
142 static ::aos::Once<const Values> once(DoGetValues);
143 return *once.Get();
144}
145
146} // namespace constants
147} // namespace frc971