MCU
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
SteeringSystem Class Reference

#include <SteeringSystem.h>

Collaboration diagram for SteeringSystem:
Collaboration graph

Public Member Functions

 SteeringSystem (SteeringEncoderInterface *primarySensor, TelemetryInterface *telemInterface)
 
 SteeringSystem (SteeringEncoderInterface *primarySensor, TelemetryInterface *telemInterface, float filterAlpha)
 
 SteeringSystem (SteeringEncoderInterface *primarySensor, TelemetryInterface *telemInterface, float filterAlphaPrimary, float filterAlphaSecondary)
 
void tick (const SteeringSystemTick_s &intake)
 Computes steering angle and status of the steering system. More...
 
const SteeringSystemData_sgetSteeringSystemData ()
 Get a reference to the steering system's data. More...
 
void reportSteeringStatus (const float angle, const float filteredAngleEncoder, const float filteredAngleAnalog, const uint8_t systemStatus, const uint8_t encoderStatus, const uint8_t analogSensorStatus)
 

Private Attributes

SteeringEncoderInterfaceprimarySensor_
 
SteeringEncoderConversion_s primaryConversion_
 
SteeringSystemData_s steeringData_
 
Filter_IIR< float > steeringFilters_ [NUM_SENSORS]
 
float filteredAnglePrimary_
 
float filteredAngleSecondary_
 
TelemetryInterfacetelemHandle_
 

Detailed Description

Definition at line 30 of file SteeringSystem.h.

Constructor & Destructor Documentation

◆ SteeringSystem() [1/3]

SteeringSystem::SteeringSystem ( SteeringEncoderInterface primarySensor,
TelemetryInterface telemInterface 
)
inline

Definition at line 48 of file SteeringSystem.h.

49 : SteeringSystem(primarySensor, telemInterface, DEFAULT_STEERING_ALPHA)
50 {}
#define DEFAULT_STEERING_ALPHA

◆ SteeringSystem() [2/3]

SteeringSystem::SteeringSystem ( SteeringEncoderInterface primarySensor,
TelemetryInterface telemInterface,
float  filterAlpha 
)
inline

Definition at line 52 of file SteeringSystem.h.

53 : SteeringSystem(primarySensor, telemInterface, filterAlpha, filterAlpha)
54 {}

◆ SteeringSystem() [3/3]

SteeringSystem::SteeringSystem ( SteeringEncoderInterface primarySensor,
TelemetryInterface telemInterface,
float  filterAlphaPrimary,
float  filterAlphaSecondary 
)
inline

Definition at line 56 of file SteeringSystem.h.

57 : primarySensor_(primarySensor)
58 , telemHandle_(telemInterface)
59 {
60 steeringFilters_[0] = Filter_IIR<float>(filterAlphaPrimary);
61 steeringFilters_[1] = Filter_IIR<float>(filterAlphaSecondary);
62
63 }
SteeringEncoderInterface * primarySensor_
TelemetryInterface * telemHandle_
Filter_IIR< float > steeringFilters_[NUM_SENSORS]

Member Function Documentation

◆ getSteeringSystemData()

const SteeringSystemData_s & SteeringSystem::getSteeringSystemData ( )
inline

Get a reference to the steering system's data.

Returns
const SteeringSystemData_s&

Definition at line 72 of file SteeringSystem.h.

73 {
74 return steeringData_;
75 }
SteeringSystemData_s steeringData_

◆ reportSteeringStatus()

void SteeringSystem::reportSteeringStatus ( const float  angle,
const float  filteredAngleEncoder,
const float  filteredAngleAnalog,
const uint8_t  systemStatus,
const uint8_t  encoderStatus,
const uint8_t  analogSensorStatus 
)

Definition at line 32 of file SteeringSystem.cpp.

38{
40 angle,
41 filteredAngleEncoder,
42 filteredAngleAnalog,
43 systemStatus,
44 encoderStatus,
45 analogSensorStatus);
46}
void update_steering_status_CAN_msg(const float steering_system_angle, const float filtered_angle_encoder, const float filtered_angle_analog, const uint8_t steering_system_status, const uint8_t steering_encoder_status, const uint8_t steering_analog_status)

◆ tick()

void SteeringSystem::tick ( const SteeringSystemTick_s intake)

Computes steering angle and status of the steering system.

Parameters
secondaryAngleThe computed steering angle as reported by the secondary steering sensor.
Returns
SteeringSystemOutput_s contains steering angle and SteeringSystemStatus_e

Definition at line 4 of file SteeringSystem.cpp.

5{
6 // System works at 100hz
7 // 1. Polls upper steering sensor
8 // 2. Computes internal state
9 if (intake.tick.triggers.trigger100)
10 {
12 primaryConversion_.status = SteeringEncoderStatus_e::STEERING_ENCODER_ERROR;
13 steeringData_.status = SteeringSystemStatus_e::STEERING_SYSTEM_NOMINAL;
16 .status = SteeringSystemStatus_e::STEERING_SYSTEM_DEGRADED};
17 }
18
19 // Report at 50Hz
20 if (intake.tick.triggers.trigger50)
21 {
24 0,
26 static_cast<uint8_t>(steeringData_.status),
27 static_cast<uint8_t>(primaryConversion_.status),
28 static_cast<uint8_t>(intake.secondaryConversion.status));
29 }
30}
dataType filtered_result(dataType new_val)
Definition: Filter_IIR.h:50
void reportSteeringStatus(const float angle, const float filteredAngleEncoder, const float filteredAngleAnalog, const uint8_t systemStatus, const uint8_t encoderStatus, const uint8_t analogSensorStatus)
SteeringEncoderConversion_s primaryConversion_
float filteredAngleSecondary_
SteeringSystemStatus_e status
const AnalogConversion_s & secondaryConversion
const SysTick_s & tick

Member Data Documentation

◆ filteredAnglePrimary_

float SteeringSystem::filteredAnglePrimary_
private

Definition at line 43 of file SteeringSystem.h.

◆ filteredAngleSecondary_

float SteeringSystem::filteredAngleSecondary_
private

Definition at line 44 of file SteeringSystem.h.

◆ primaryConversion_

SteeringEncoderConversion_s SteeringSystem::primaryConversion_
private

Definition at line 34 of file SteeringSystem.h.

◆ primarySensor_

SteeringEncoderInterface* SteeringSystem::primarySensor_
private

Definition at line 33 of file SteeringSystem.h.

◆ steeringData_

SteeringSystemData_s SteeringSystem::steeringData_
private

Definition at line 35 of file SteeringSystem.h.

◆ steeringFilters_

Filter_IIR<float> SteeringSystem::steeringFilters_[NUM_SENSORS]
private

Utility digital IIR filters 0 : primary sensor filter 1 : secondary sensor filter

Definition at line 42 of file SteeringSystem.h.

◆ telemHandle_

TelemetryInterface* SteeringSystem::telemHandle_
private

Definition at line 46 of file SteeringSystem.h.


The documentation for this class was generated from the following files: