blob: 8ca87bce09a11013c2a038f4e2472363e2a5053a [file] [log] [blame]
Austin Schuh2a671df2016-11-26 15:00:06 -08001#include "y2012/control_loops/drivetrain/drivetrain_base.h"
2
Austin Schuhbb735b72019-01-03 12:58:41 -08003#include <chrono>
Austin Schuh2a671df2016-11-26 15:00:06 -08004
Austin Schuhbb735b72019-01-03 12:58:41 -08005#include "frc971/control_loops/drivetrain/drivetrain_config.h"
Austin Schuh2a671df2016-11-26 15:00:06 -08006#include "frc971/control_loops/state_feedback_loop.h"
7#include "y2012/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
Austin Schuh2a671df2016-11-26 15:00:06 -08008#include "y2012/control_loops/drivetrain/kalman_drivetrain_motor_plant.h"
Austin Schuhbb735b72019-01-03 12:58:41 -08009#include "y2012/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
Austin Schuh2a671df2016-11-26 15:00:06 -080010
11using ::frc971::control_loops::drivetrain::DrivetrainConfig;
12
Austin Schuhbb735b72019-01-03 12:58:41 -080013namespace chrono = ::std::chrono;
14
Austin Schuh2a671df2016-11-26 15:00:06 -080015namespace y2012 {
16namespace control_loops {
17namespace drivetrain {
18
19using ::frc971::constants::ShifterHallEffect;
20
Sabina Davis415bb6c2017-10-16 23:30:52 -070021const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
Austin Schuh2a671df2016-11-26 15:00:06 -080022
Austin Schuhbcce26a2018-03-26 23:41:24 -070023const DrivetrainConfig<double> &GetDrivetrainConfig() {
24 static DrivetrainConfig<double> kDrivetrainConfig{
Austin Schuh2a671df2016-11-26 15:00:06 -080025 ::frc971::control_loops::drivetrain::ShifterType::NO_SHIFTER,
26 ::frc971::control_loops::drivetrain::LoopType::CLOSED_LOOP,
Campbell Crowley2527ed22017-02-17 21:10:02 -080027 ::frc971::control_loops::drivetrain::GyroType::SPARTAN_GYRO,
Diana Burgessd0180f12018-03-21 21:24:17 -070028 ::frc971::control_loops::drivetrain::IMUType::IMU_X,
Austin Schuh2a671df2016-11-26 15:00:06 -080029
30 ::y2012::control_loops::drivetrain::MakeDrivetrainLoop,
31 ::y2012::control_loops::drivetrain::MakeVelocityDrivetrainLoop,
32 ::y2012::control_loops::drivetrain::MakeKFDrivetrainLoop,
33
Austin Schuhbb735b72019-01-03 12:58:41 -080034 chrono::duration_cast<chrono::nanoseconds>(
35 chrono::duration<double>(drivetrain::kDt)),
Austin Schuh2a671df2016-11-26 15:00:06 -080036 drivetrain::kRobotRadius,
37 drivetrain::kWheelRadius,
38 drivetrain::kV,
39
40 drivetrain::kHighGearRatio,
41 drivetrain::kLowGearRatio,
42 kThreeStateDriveShifter,
43 kThreeStateDriveShifter,
Austin Schuhe8a54c02018-03-05 00:25:58 -080044 true /* default_high_gear */,
Austin Schuh2a671df2016-11-26 15:00:06 -080045 0.0,
Austin Schuhe8a54c02018-03-05 00:25:58 -080046 0.4 /* wheel_non_linearity */,
47 1.0 /* quickturn_wheel_multiplier */,
48 1.0 /* wheel_multiplier */};
Austin Schuh2a671df2016-11-26 15:00:06 -080049
50 return kDrivetrainConfig;
51};
52
53} // namespace drivetrain
54} // namespace control_loops
55} // namespace y2012