blob: 47b8543199eaac5d1fbc05760ffa80dd8fcc1b2a [file] [log] [blame]
Stephan Massaltd021f972020-01-05 20:41:23 -08001#ifndef y2020_CONSTANTS_H_
2#define y2020_CONSTANTS_H_
3
4#include <math.h>
5#include <stdint.h>
6
7#include <array>
8
9#include "frc971/constants.h"
10#include "frc971/control_loops/pose.h"
11#include "frc971/control_loops/static_zeroing_single_dof_profiled_subsystem.h"
12#include "y2020/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
Sabina Davisa587fbd2020-01-31 22:11:15 -080013#include "y2020/control_loops/superstructure/hood/hood_plant.h"
Stephan Massaltd021f972020-01-05 20:41:23 -080014
15namespace y2020 {
16namespace constants {
17
18struct Values {
19 static const int kZeroingSampleSize = 200;
20
21 static constexpr double kDrivetrainCyclesPerRevolution() { return 512.0; }
22 static constexpr double kDrivetrainEncoderCountsPerRevolution() {
23 return kDrivetrainCyclesPerRevolution() * 4;
24 }
25 static constexpr double kDrivetrainEncoderRatio() { return (24.0 / 52.0); }
26 static constexpr double kMaxDrivetrainEncoderPulsesPerSecond() {
27 return control_loops::drivetrain::kFreeSpeed / (2.0 * M_PI) *
28 control_loops::drivetrain::kHighOutputRatio /
29 constants::Values::kDrivetrainEncoderRatio() *
30 kDrivetrainEncoderCountsPerRevolution();
31 }
Sabina Davisa587fbd2020-01-31 22:11:15 -080032
33 // Hood
34 static constexpr double kHoodEncoderCountsPerRevolution() { return 4096.0; }
35
36 //TODO(sabina): Update constants
37 static constexpr double kHoodEncoderRatio() { return 1.0; }
38
39 static constexpr double kMaxHoodEncoderPulsesPerSecond() {
40 return control_loops::superstructure::hood::kFreeSpeed *
41 control_loops::superstructure::hood::kOutputRatio /
42 kHoodEncoderRatio() / (2.0 * M_PI) *
43 kHoodEncoderCountsPerRevolution();
44 }
45
46 static constexpr ::frc971::constants::Range kHoodRange() {
47 return ::frc971::constants::Range{
48 0.00, // Back Hard
49 0.79, // Front Hard
50 0.14, // Back Soft
51 0.78 // Front Soft
52 };
53 }
54
55 ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
56 ::frc971::zeroing::AbsoluteEncoderZeroingEstimator>
57 hood;
Stephan Massaltd021f972020-01-05 20:41:23 -080058};
59
60// Creates (once) a Values instance for ::aos::network::GetTeamNumber() and
61// returns a reference to it.
62const Values &GetValues();
63
64// Creates Values instances for each team number it is called with and returns
65// them.
66const Values &GetValuesForTeam(uint16_t team_number);
67
68} // namespace constants
69} // namespace y2020
70
71#endif // y2020_CONSTANTS_H_