blob: f7363c6721b98426a7e66368a49c0e1c28f19214 [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
Brian Silverman2c590c32013-11-04 18:08:54 -080011#include "frc971/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
12#include "frc971/control_loops/drivetrain/polydrivetrain_clutch_motor_plant.h"
13#include "frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
14#include "frc971/control_loops/drivetrain/drivetrain_clutch_motor_plant.h"
15
Brian Silverman431500a2013-10-28 19:50:15 -070016#ifndef M_PI
17#define M_PI 3.14159265358979323846
18#endif
19
20namespace frc971 {
21namespace constants {
22namespace {
23
Brian Silverman1a6590d2013-11-04 14:46:46 -080024const double kCompDrivetrainEncoderRatio =
25 (15.0 / 50.0) /*output reduction*/ * (36.0 / 24.0) /*encoder gears*/;
26const double kCompLowGearRatio = 14.0 / 60.0 * 15.0 / 50.0;
27const double kCompHighGearRatio = 30.0 / 44.0 * 15.0 / 50.0;
Brian Silverman431500a2013-10-28 19:50:15 -070028
Brian Silverman1a6590d2013-11-04 14:46:46 -080029const double kPracticeDrivetrainEncoderRatio =
30 (17.0 / 50.0) /*output reduction*/ * (64.0 / 24.0) /*encoder gears*/;
31const double kPracticeLowGearRatio = 16.0 / 60.0 * 19.0 / 50.0;
32const double kPracticeHighGearRatio = 28.0 / 48.0 * 19.0 / 50.0;
33
Brian Silverman98e1ab62013-11-06 21:03:23 -080034const ShifterHallEffect kCompLeftDriveShifter{0.83, 2.32, 1.2, 1.0};
Brian Silverman1a6590d2013-11-04 14:46:46 -080035const ShifterHallEffect kCompRightDriveShifter{0.865, 2.375, 1.2, 1.0};
Brian Silverman6eb51f12013-11-02 14:39:01 -070036
37const ShifterHallEffect kPracticeLeftDriveShifter{2.082283, 0.834433, 0.60,
38 0.47};
39const ShifterHallEffect kPracticeRightDriveShifter{2.070124, 0.838993, 0.62,
40 0.55};
joe3779d0c2014-02-15 19:41:22 -080041const double shooter_lower_physical_limit=0.0;
42const double shooter_upper_physical_limit=0.0;
43const double shooter_voltage=0.0;
joe93778a62014-02-15 13:22:14 -080044const double shooter_hall_effect_start_position=0.0;
45const double shooter_zeroing_off_speed=0.0;
46const double shooter_zeroing_speed=0.0;
joe3779d0c2014-02-15 19:41:22 -080047const double position=0.0;
Brian Silverman6eb51f12013-11-02 14:39:01 -070048
Brian Silverman431500a2013-10-28 19:50:15 -070049const Values *DoGetValues() {
50 uint16_t team = ::aos::network::GetTeamNumber();
51 LOG(INFO, "creating a Constants for team %" PRIu16 "\n", team);
52 switch (team) {
53 case kCompTeamNumber:
Brian Silverman756f9ff2014-01-17 23:40:23 -080054 return new Values{
55 kCompDrivetrainEncoderRatio,
56 kCompLowGearRatio,
57 kCompHighGearRatio,
Ben Fredricksonedf0e092014-02-16 10:46:50 +000058 // ShooterLimits
59 // TODO_ben: make these real numbers
60 {0.0, 100.0, {-3.0, 2.0}, {-1, 4.0}, {2.0, 7.0}},
joe3779d0c2014-02-15 19:41:22 -080061 shooter_voltage,
Ben Fredricksonedf0e092014-02-16 10:46:50 +000062 // shooter_total_length
63 100.0,
joe93778a62014-02-15 13:22:14 -080064 shooter_hall_effect_start_position,
65 shooter_zeroing_off_speed,
66 shooter_zeroing_speed,
joe3779d0c2014-02-15 19:41:22 -080067 position,
Brian Silverman756f9ff2014-01-17 23:40:23 -080068 kCompLeftDriveShifter,
69 kCompRightDriveShifter,
70 true,
71 control_loops::MakeVClutchDrivetrainLoop,
72 control_loops::MakeClutchDrivetrainLoop,
Austin Schuhf9286cd2014-02-11 00:51:09 -080073 0.5,
Austin Schuhcc0bf312014-02-09 00:39:29 -080074 0.1,
Austin Schuh3bb9a442014-02-02 16:01:45 -080075 0.0,
Austin Schuhcc0bf312014-02-09 00:39:29 -080076 1.57,
Austin Schuh4b7b5d02014-02-10 21:20:34 -080077 {0.0, 2.05, {-0.1, 0.05}, {1.0, 1.1}, {2.0, 2.1}},
78 {0.0, 2.05, {-0.1, 0.05}, {1.0, 1.1}, {2.0, 2.1}},
Ben Fredrickson9b388422014-02-13 06:15:31 +000079 0.02, // claw_unimportant_epsilon
80 50505.05, // start_fine_tune_pos
Brian Silverman756f9ff2014-01-17 23:40:23 -080081 };
Brian Silverman431500a2013-10-28 19:50:15 -070082 break;
83 case kPracticeTeamNumber:
Brian Silverman756f9ff2014-01-17 23:40:23 -080084 return new Values{
85 kPracticeDrivetrainEncoderRatio,
86 kPracticeLowGearRatio,
87 kPracticeHighGearRatio,
Ben Fredricksonedf0e092014-02-16 10:46:50 +000088 // ShooterLimits
89 // TODO_ben: make these real numbers
90 {0.0, 100.0, {-3.0, 2.0}, {-1, 4.0}, {2.0, 7.0}},
joe3779d0c2014-02-15 19:41:22 -080091 shooter_voltage,
Ben Fredricksonedf0e092014-02-16 10:46:50 +000092 // shooter_total_length
93 100.0,
joe93778a62014-02-15 13:22:14 -080094 shooter_hall_effect_start_position,
95 shooter_zeroing_off_speed,
96 shooter_zeroing_speed,
joe3779d0c2014-02-15 19:41:22 -080097 position,
Brian Silverman756f9ff2014-01-17 23:40:23 -080098 kPracticeLeftDriveShifter,
99 kPracticeRightDriveShifter,
100 false,
101 control_loops::MakeVDogDrivetrainLoop,
102 control_loops::MakeDogDrivetrainLoop,
Austin Schuhf9286cd2014-02-11 00:51:09 -0800103 0.5,
Austin Schuhcc0bf312014-02-09 00:39:29 -0800104 0.1,
Austin Schuh3bb9a442014-02-02 16:01:45 -0800105 0.0,
Austin Schuhcc0bf312014-02-09 00:39:29 -0800106 1.57,
Austin Schuh4b7b5d02014-02-10 21:20:34 -0800107 {0.0, 2.05, {-0.1, 0.05}, {1.0, 1.1}, {2.0, 2.1}},
108 {0.0, 2.05, {-0.1, 0.05}, {1.0, 1.1}, {2.0, 2.1}},
Ben Fredrickson9b388422014-02-13 06:15:31 +0000109 0.02, // claw_unimportant_epsilon
110 50505.05, //start_fine_tune_pos
Brian Silverman756f9ff2014-01-17 23:40:23 -0800111 };
Brian Silverman431500a2013-10-28 19:50:15 -0700112 break;
113 default:
114 LOG(FATAL, "unknown team #%" PRIu16 "\n", team);
115 }
116}
117
118} // namespace
119
120const Values &GetValues() {
121 static ::aos::Once<const Values> once(DoGetValues);
122 return *once.Get();
123}
124
125} // namespace constants
126} // namespace frc971