MCU
Loading...
Searching...
No Matches
SharedDataTypes.h
Go to the documentation of this file.
1#ifndef TORQUECONTROLLERSDATA
2#define TORQUECONTROLLERSDATA
3#include <stdint.h>
4#include "Utility.h"
5#include "SysClock.h"
6#include "SharedFirmwareTypes.h"
7#include "DrivebrainData.h"
8
9using speed_rpm = float;
10using torque_nm = float;
11
13enum class TorqueLimit_e
14{
19};
20
21/* Enum for the modes on the dial, corresponds directly to dial index pos. */
23{
24 /* No torque vectoring */
25 MODE_0,
26 /* Normal force torque vectoring */
27 MODE_1,
28 /* PID torque vectoring */
29 MODE_2,
30 /* Launch Ctrl */
31 MODE_3,
32 MODE_4,
33 MODE_5,
34};
35
37{
40 bool brakePressed : 1;
41 bool accelPressed : 1;
48};
50{
56};
63{
66};
67
71{
73 bool ready;
74};
75
77{
84 float uncompLinear_accel[3]; // 3D uncompensated linear acceleration
85 float yaw;
86 float pitch;
87 float roll;
88 double latitude;
89 double longitude;
90 double ecef_coords[3]; // x,y,z
91 uint64_t gps_time; // gps time
92 uint8_t vn_status; // status
94};
95
98{
99 NO_ERROR = 0,
104};
105
108{
114};
115
117{
120 bool FIRSaturated;
121};
122
124{
126};
127
128// Enums
130{
135};
136
138{
139 float angle;
141};
142
144// things such as steering, drivetrain, current system time, vectornav / INS data,
145// etc. an instance of this struct is created in main and updated there by all of the systems
146// and interfaces and then shared between all of the systems and interfaces that need
147// access to the state of the car.
149{
150 // data
151 SysTick_s systick;
162 SharedCarState_s(const SysTick_s &_systick,
163 const SteeringSystemData_s &_steering_data,
164 const DrivetrainDynamicReport_s &_drivetrain_data,
165 const LoadCellInterfaceOutput_s &_loadcell_data,
166 const PedalsSystemData_s &_pedals_data,
167 const VectornavData_s &_vn_data,
168 const DrivebrainData_s &_db_data,
169 const TorqueControllerMuxStatus &_tc_mux_status)
170 : systick(_systick),
171 steering_data(_steering_data),
172 drivetrain_data(_drivetrain_data),
173 loadcell_data(_loadcell_data),
175 pedals_data(_pedals_data),
176 vn_data(_vn_data),
177 db_data(_db_data),
178 tc_mux_status(_tc_mux_status)
179 {
180 // constructor body (if needed)
181 }
182 SharedCarState_s(const SysTick_s &_systick,
183 const SteeringSystemData_s &_steering_data,
184 const DrivetrainDynamicReport_s &_drivetrain_data,
185 const LoadCellInterfaceOutput_s &_loadcell_data,
186 const LoadCellInterfaceRawOutput_s &_raw_loadcell_data,
187 const PedalsSystemData_s &_pedals_data,
188 const VectornavData_s &_vn_data,
189 const DrivebrainData_s &_db_data,
190 const TorqueControllerMuxStatus &_tc_mux_status,
191 bool _drivebrain_timing_failure)
192 : systick(_systick),
193 steering_data(_steering_data),
194 drivetrain_data(_drivetrain_data),
195 loadcell_data(_loadcell_data),
196 raw_loadcell_data(_raw_loadcell_data),
197 pedals_data(_pedals_data),
198 vn_data(_vn_data),
199 db_data(_db_data),
200 tc_mux_status(_tc_mux_status),
201 drivebrain_timing_failure(_drivebrain_timing_failure)
202 {
203 // constructor body (if needed)
204 }
205};
206
207#endif
SteeringSystemStatus_e
TorqueLimit_e
Defines modes of torque limit to be processed in torque limit map for exact values.
ControllerMode_e
float speed_rpm
float torque_nm
TorqueControllerMuxError
Defines errors for TC Mux to use to maintain system safety.
const int NUM_MOTORS
Definition: Utility.h:10
Stores setpoints for a command to the Drivetrain, containing speed and torque setpoints for each moto...
float inverter_torque_limit[NUM_MOTORS]
float speeds_rpm[NUM_MOTORS]
float measuredTorqueCurrents[NUM_MOTORS]
torque_nm measuredTorques[NUM_MOTORS]
speed_rpm measuredSpeeds[NUM_MOTORS]
float measuredMagnetizingCurrents[NUM_MOTORS]
veh_vec< float > loadCellForcesFiltered
veh_vec< AnalogConversion_s > loadCellConversions
bool brakeAndAccelPressedImplausibility
bool implausibilityExceededMaxDuration
car state struct that contains state of everything about the car including
SharedCarState_s(const SysTick_s &_systick, const SteeringSystemData_s &_steering_data, const DrivetrainDynamicReport_s &_drivetrain_data, const LoadCellInterfaceOutput_s &_loadcell_data, const PedalsSystemData_s &_pedals_data, const VectornavData_s &_vn_data, const DrivebrainData_s &_db_data, const TorqueControllerMuxStatus &_tc_mux_status)
SteeringSystemData_s steering_data
LoadCellInterfaceOutput_s loadcell_data
PedalsSystemData_s pedals_data
DrivebrainData_s db_data
SharedCarState_s()=delete
DrivetrainDynamicReport_s drivetrain_data
LoadCellInterfaceRawOutput_s raw_loadcell_data
VectornavData_s vn_data
TorqueControllerMuxStatus tc_mux_status
SharedCarState_s(const SysTick_s &_systick, const SteeringSystemData_s &_steering_data, const DrivetrainDynamicReport_s &_drivetrain_data, const LoadCellInterfaceOutput_s &_loadcell_data, const LoadCellInterfaceRawOutput_s &_raw_loadcell_data, const PedalsSystemData_s &_pedals_data, const VectornavData_s &_vn_data, const DrivebrainData_s &_db_data, const TorqueControllerMuxStatus &_tc_mux_status, bool _drivebrain_timing_failure)
SteeringSystemStatus_e status
packages TC Mux indicators: errors, mode, torque limit, bypass
TorqueLimit_e active_torque_limit_enum
TorqueControllerMuxError active_error
ControllerMode_e active_controller_mode
Packages drivetrain command with ready boolean to give feedback on controller successfully evaluating...
DrivetrainCommand_s command
xyz_vec< float > angular_rates
float uncompLinear_accel[3]
double ecef_coords[3]
generic data vector type that can be used with tire and / or anything to do with 4 corners of the car...
Definition: Utility.h:17