TR-mbed 1.0
Loading...
Searching...
No Matches
TurretSubsystem.h
Go to the documentation of this file.
1#pragma once
2
7#include "Subsystem.h"
8#include <cmath>
9
10
11// enums for state
13
15{
16public:
17 struct PID_config
18 {
19 float kp;
20 float ki;
21 float kd;
22 };
23
24 struct config
25 {
26 short yaw_id;
28 short pitch_id;
30
33
36
37 const float yaw_static_friction = 1221; // We multiply it by dir
38 const float yaw_kinetic_friction = 97.4; // We multiply this by yawvelo
39
40 const float pitch_gravity_feedforward = -2600; // We multiply this by cos(angle)
41 const float pitch_static_friction = 1221; // We multiply it by dir
42 const float pitch_kinetic_friction = 97.4; // We multiply this by pitchvelo
43
47
48 float gear_ratio = 1;
49
50 const float pitch_lower_bound;
51 const float pitch_upper_bound;
52 };
53
62
64
66
67 void setState(TurretInfo state);
68
69 // void set_desired_turret(float des_yaw_angle, float des_pitch_angle);
70
71 void periodic(float chasssisRpm);
72
73 int getTicks(); // only thing chassis should have is this basically, or a pointer to turret
74
75private:
76
77 DJIMotor pitch, yaw;
78
79 TurretInfo turret_state;
80
81 IMU &imu_;
82 IMU::EulerAngles imuAngles;
83
84 bool configured;
85 const int forward_;
86 const float pitch_lowerbound, pitch_upperbound;
87 const float gear_ratio;
88
89 const float yaw_static_friction;
90 const float yaw_kinetic_friction;
91 const float pitch_static_friction;
92 const float pitch_kinetic_friction;
93 const float pitch_gravity_feedforward;
94
95 unsigned long turret_time;
96
97 float des_yaw, des_pitch, chassis_rpm;
98
99 // get angle zero offsetted
100 float get_pitch_angle_degs_zero_offsetted();
101
102 float get_yaw_angle_degs();
103
104 float get_pitch_angle_degs();
105
106 float get_pitch_vel_rads_per_sec();
107
108 float get_yaw_vel_rads_per_sec();
109};
motorType
Definition DJIMotor.h:39
@ GM6020
Definition DJIMotor.h:42
TurretState
Definition TurretSubsystem.h:12
@ AIM
Definition TurretSubsystem.h:12
@ SLEEP
Definition TurretSubsystem.h:12
CANBus
Definition CANHandler.h:45
Definition DJIMotor.h:48
Definition IMU.h:7
Definition Subsystem.h:5
void setState()
void periodic()
Definition TurretSubsystem.h:15
TurretInfo getState()
Definition TurretSubsystem.cpp:44
int getTicks()
Definition TurretSubsystem.cpp:56
BNO055 imu(i2c, PA_8, MODE_NDOF)
Definition IMU.h:10
Definition PID.h:154
Definition TurretSubsystem.h:18
float ki
Definition TurretSubsystem.h:20
float kp
Definition TurretSubsystem.h:19
float kd
Definition TurretSubsystem.h:21
Definition TurretSubsystem.h:55
TurretState turret_mode
Definition TurretSubsystem.h:60
float yaw_angle_degs
Definition TurretSubsystem.h:56
float pitch_velo_rad_s
Definition TurretSubsystem.h:59
float pitch_angle_degs
Definition TurretSubsystem.h:58
float yaw_velo_rad_s
Definition TurretSubsystem.h:57
Definition TurretSubsystem.h:25
PID::config yaw_vel_PID
Definition TurretSubsystem.h:31
const float pitch_upper_bound
Definition TurretSubsystem.h:51
const float pitch_static_friction
Definition TurretSubsystem.h:41
PID::config pitch_vel_PID
Definition TurretSubsystem.h:34
int forward
Definition TurretSubsystem.h:46
CANHandler::CANBus pitchCanBus
Definition TurretSubsystem.h:45
PID::config yaw_pos_PID
Definition TurretSubsystem.h:32
const float pitch_lower_bound
Definition TurretSubsystem.h:50
float gear_ratio
Definition TurretSubsystem.h:48
const float pitch_gravity_feedforward
Definition TurretSubsystem.h:40
PID::config pitch_pos_PID
Definition TurretSubsystem.h:35
const float yaw_static_friction
Definition TurretSubsystem.h:37
const float pitch_kinetic_friction
Definition TurretSubsystem.h:42
CANHandler::CANBus yawCanBus
Definition TurretSubsystem.h:44
motorType pitch_type
Definition TurretSubsystem.h:29
short yaw_id
Definition TurretSubsystem.h:26
const float yaw_kinetic_friction
Definition TurretSubsystem.h:38
short pitch_id
Definition TurretSubsystem.h:28
motorType yaw_type
Definition TurretSubsystem.h:27