Basic_Frame_TypeC_2023_Omni
Loading...
Searching...
No Matches
sentry_config.hpp
1#ifndef __SENTRY_CONFIG_HPP
2#define __SENTRY_CONFIG_HPP
3
4#include <cstdint>
5
6namespace gimbal_params {
7 // Motor encoder zero-position.
8 constexpr int16_t YAW_ECD_CENTER = 4430;
9 constexpr int16_t PITCH_ECD_CENTER = 4050;
10 constexpr float LOADER_GEAR_RATIO = 36;
11
12 // Software pitch limits.
13 constexpr float PITCH_MIN_ANGLE = -0.2;
14 constexpr float PITCH_MAX_ANGLE = 0.1;
15 static_assert(PITCH_MAX_ANGLE >= PITCH_MIN_ANGLE);
16
17 // BMI088 rotation matrix.
18 // TODO: Move to front-right-up (x-y-z) reference frame???
19 constexpr float IMU_ORIENTATION[3][3] = {
20 {1.0f, 0.0f, 0.0f},
21 {0.0f, 1.0f, 0.0f},
22 {0.0f, 0.0f, 1.0f},
23 };
24
25 // Gimbal yaw PID.
26 constexpr float KP_GIMBAL_YAW_ANGLE = 105;
27 constexpr float KI_GIMBAL_YAW_ANGLE = 0; // Not allowed.
28 constexpr float KD_GIMBAL_YAW_ANGLE = 0.05;
29 constexpr float BETA_GIMBAL_YAW_ANGLE = 1;
30 constexpr float YETA_GIMBAL_YAW_ANGLE = 0;
31 constexpr float MIN_OUT_GIMBAL_YAW_ANGLE = -800;
32 constexpr float MAX_OUT_GIMBAL_YAW_ANGLE = 800;
33 static_assert(MAX_OUT_GIMBAL_YAW_ANGLE >= MIN_OUT_GIMBAL_YAW_ANGLE);
34
35 constexpr float KP_GIMBAL_YAW_SPEED = 240;
36 constexpr float KI_GIMBAL_YAW_SPEED = 10;
37 constexpr float KD_GIMBAL_YAW_SPEED = 0;
38 constexpr float BETA_GIMBAL_YAW_SPEED = 1;
39 constexpr float YETA_GIMBAL_YAW_SPEED = 1;
40 constexpr float MIN_OUT_GIMBAL_YAW_SPEED = -20000;
41 constexpr float MAX_OUT_GIMBAL_YAW_SPEED = 20000;
42 static_assert(MAX_OUT_GIMBAL_YAW_SPEED >= MIN_OUT_GIMBAL_YAW_SPEED);
43
44 // Gimbal pitch PID.
45 constexpr float KP_GIMBAL_PITCH_ANGLE = 80;
46 constexpr float KI_GIMBAL_PITCH_ANGLE = 10;
47 constexpr float KD_GIMBAL_PITCH_ANGLE = 0.05;
48 constexpr float BETA_GIMBAL_PITCH_ANGLE = 1;
49 constexpr float YETA_GIMBAL_PITCH_ANGLE = 0;
50 constexpr float MIN_OUT_GIMBAL_PITCH_ANGLE = -1000;
51 constexpr float MAX_OUT_GIMBAL_PITCH_ANGLE = 1000;
52 static_assert(MAX_OUT_GIMBAL_PITCH_ANGLE >= MIN_OUT_GIMBAL_PITCH_ANGLE);
53
54 constexpr float KP_GIMBAL_PITCH_SPEED = 200;
55 constexpr float KI_GIMBAL_PITCH_SPEED = 10;
56 constexpr float KD_GIMBAL_PITCH_SPEED = 0;
57 constexpr float BETA_GIMBAL_PITCH_SPEED = 1;
58 constexpr float YETA_GIMBAL_PITCH_SPEED = 0;
59 constexpr float MIN_OUT_GIMBAL_PITCH_SPEED = -20000;
60 constexpr float MAX_OUT_GIMBAL_PITCH_SPEED = 20000;
61 static_assert(MAX_OUT_GIMBAL_PITCH_SPEED >= MIN_OUT_GIMBAL_PITCH_SPEED);
62
63} // namespace gimbal_params
64
65namespace shoot_params {
66 // Shoot targets.
67 constexpr float LOADER_ACTIVE_RPM = 75;
68 constexpr float FLYWHEEL_ACTIVE_TARGET_RPM = 7000;
69 constexpr float MAX_FLYWHEEL_ACCEL = 70000; // rotations/min/second
70 static_assert(MAX_FLYWHEEL_ACCEL >= 0);
71
72 // Loader PID.
73 constexpr float KP_LOADER_SPEED = 12;
74 constexpr float KI_LOADER_SPEED = 0;
75 constexpr float KD_LOADER_SPEED = 0;
76 constexpr float BETA_LOADER_SPEED = 1;
77 constexpr float YETA_LOADER_SPEED = 0;
78 constexpr float MIN_OUT_LOADER_SPEED = -5000;
79 constexpr float MAX_OUT_LOADER_SPEED = 5000;
80 static_assert(MAX_OUT_LOADER_SPEED >= MIN_OUT_LOADER_SPEED);
81
82 // Flywheel PID.
83 constexpr float KP_FLYWHEEL_SPEED = 27;
84 constexpr float KI_FLYWHEEL_SPEED = 5;
85 constexpr float KD_FLYWHEEL_SPEED = 0;
86 constexpr float BETA_FLYWHEEL_SPEED = 1;
87 constexpr float YETA_FLYWHEEL_SPEED = 0;
88 constexpr float MIN_OUT_FLYWHEEL_SPEED = -5000;
89 constexpr float MAX_OUT_FLYWHEEL_SPEED = 5000;
90 static_assert(MAX_OUT_FLYWHEEL_SPEED >= MIN_OUT_FLYWHEEL_SPEED);
91} // namespace shoot_params
92
93namespace chassis_params {
94 // Movement targets.
95 constexpr float MAX_TRANSLATION = 8; // m/s
96 constexpr float MAX_ROTATION = 5; // rad/s
97 constexpr float GYRO_SPEED = 5; // rad/s
98 static_assert(MAX_TRANSLATION >= 0);
99 static_assert(MAX_ROTATION >= 0);
100 static_assert(MAX_ROTATION >= GYRO_SPEED);
101
102 // Drive wheel PID.
103 constexpr float KP_DRIVE_WHEEL = 5;
104 constexpr float KI_DRIVE_WHEEL = 0;
105 constexpr float KD_DRIVE_WHEEL = 0;
106 constexpr float BETA_DRIVE_WHEEL = 1;
107 constexpr float YETA_DRIVE_WHEEL = 0;
108 constexpr float MIN_OUT_DRIVE_WHEEL = -2000;
109 constexpr float MAX_OUT_DRIVE_WHEEL = 2000;
110 static_assert(MAX_OUT_DRIVE_WHEEL >= MIN_OUT_DRIVE_WHEEL);
111
112 // Drive wheel ramp.
113 constexpr float WHEEL_RAMP_MAX_ACCEL = 400; // rad/s^2
114 static_assert(WHEEL_RAMP_MAX_ACCEL >= 0);
115} // namespace chassis_params
116
117#endif