LRAUV  revA
VerticalControlIF.h
Go to the documentation of this file.
1 
13 #ifndef VERTICALCONTROLIF_H_
14 #define VERTICALCONTROLIF_H_
15 
16 #include "data/ElementURI.h"
17 
28 {
31 static const Str NAME( "VerticalControl" );
32 
33 // Include common ConfigURIs -- must be in namespace and follow definition of NAME
35 
38 static const DataURI VERTICAL_MODE( NAME, "verticalMode", Units::ENUM );
39 static const DataURI DEPTH_CMD( NAME, "depthCmd", Units::METER );
40 static const DataURI DEPTH_RATE_CMD( NAME, "depthRateCmd", Units::METER_PER_SECOND );
41 static const DataURI PITCH_CMD( NAME, "pitchCmd", Units::RADIAN ); // specify a pitch to hold
42 static const DataURI PITCH_RATE_CMD( NAME, "pitchRateCmd", Units::RADIAN_PER_SECOND ); // specify a pitch rate if desired
43 static const DataURI BUOYANCY_CMD( NAME, "buoyancyCmd", Units::CUBIC_CENTIMETER );
44 static const DataURI MASS_POSITION_CMD( NAME, "massPositionCmd", Units::METER );
45 static const DataURI ELEVATOR_ANGLE_CMD( NAME, "elevatorAngleCmd", Units::RADIAN );
46 
48 static const ConfigURI BUOYANCY_DEFAULT_CFG( NAME, "buoyancyDefault", Units::CUBIC_CENTIMETER );
49 static const ConfigURI BUOYANCY_LIMIT_HI_CC_CFG( NAME, "buoyancyLimitHiCC", Units::CUBIC_CENTIMETER );
50 static const ConfigURI BUOYANCY_LIMIT_LO_CC_CFG( NAME, "buoyancyLimitLoCC", Units::CUBIC_CENTIMETER );
51 static const ConfigURI BUOYANCY_NEUTRAL_CFG( NAME, "buoyancyNeutral", Units::CUBIC_CENTIMETER );
52 static const ConfigURI BUOYANCY_PUMP_DEPTH_CFG( NAME, "buoyancyPumpDepth", Units::METER );
53 static const ConfigURI DEPTH_DEADBAND_CFG( NAME, "depthDeadband", Units::METER );
54 static const ConfigURI DEPTH_RATE_DEADBAND_CFG( NAME, "depthRateDeadband", Units::METER_PER_SECOND );
55 static const ConfigURI DEPTH_RATE_SAMPLES_CFG( NAME, "depthRateSamples", Units::COUNT );
56 static const ConfigURI DROP_WEIGHT_DEPTH_EXCURSION_CFG( NAME, "dropWtDepthExcursion", Units::METER );
57 static const ConfigURI DROP_WEIGHT_OVERRIDE_DELAY_CFG( NAME, "dropWtOverrideDelay", Units::METER );
58 static const ConfigURI ELEVATOR_DEADBAND_CFG( NAME, "elevDeadband", Units::RADIAN );
59 static const ConfigURI ELEVATOR_LIMIT_CFG( NAME, "elevLimit", Units::RADIAN );
60 static const ConfigURI ELEVATOR_TURN_TIME_CFG( NAME, "elevTurnTime", Units::RADIAN );
61 static const ConfigURI EXCURSION_DEPTH_TIMEOUT_CFG( NAME, "excursionDepthTimeout", Units::SECOND );
62 static const ConfigURI KD_DEPTH_CFG( NAME, "kdDepth", Units::RADIAN_SECOND_PER_METER );
63 static const ConfigURI KD_DEPTH_BUOY_CFG( NAME, "kdDepthBuoy", Units::SECOND );
64 static const ConfigURI KD_DEPTH_RATE_BUOY_CFG( NAME, "kdDepthRateBuoy", Units::SECOND );
65 static const ConfigURI KD_PITCH_ELEVATOR_CFG( NAME, "kdPitchElevator", Units::SECOND );
66 static const ConfigURI KD_PITCH_MASS_CFG( NAME, "kdPitchMass", Units::SECOND );
67 static const ConfigURI KI_DEPTH_CFG( NAME, "kiDepth", Units::RADIAN_PER_SECOND_PER_METER );
68 static const ConfigURI KI_DEPTH_BUOY_CFG( NAME, "kiDepthBuoy", Units::RECIPROCAL_SECOND );
69 static const ConfigURI KI_DEPTH_OFF_CFG( NAME, "kiDepthOff", Units::METER_PER_SECOND );
70 static const ConfigURI KI_DEPTH_RATE_BUOY_CFG( NAME, "kiDepthRateBuoy", Units::RECIPROCAL_SECOND );
71 static const ConfigURI KI_PITCH_ELEVATOR_CFG( NAME, "kiPitchElevator", Units::RECIPROCAL_SECOND );
72 static const ConfigURI KI_PITCH_MASS_CFG( NAME, "kiPitchMass", Units::RECIPROCAL_SECOND );
73 static const ConfigURI KP_DEPTH_CFG( NAME, "kpDepth", Units::RADIAN_PER_METER );
74 static const ConfigURI KP_DEPTH_BUOY_CFG( NAME, "kpDepthBuoy", Units::RATIO );
75 static const ConfigURI KP_DEPTH_RATE_BUOY_CFG( NAME, "kpDepthRateBuoy", Units::RATIO );
76 static const ConfigURI KP_PITCH_ELEVATOR_CFG( NAME, "kpPitchElevator" , Units::RATIO );
77 static const ConfigURI KP_PITCH_MASS_CFG( NAME, "kpPitchMass", Units::RATIO );
78 static const ConfigURI LIMIT_DEPTH_TRAJECTORY_CFG( NAME, "limitDepthTrajectory", Units::BOOL );
79 static const ConfigURI MASS_DEADBAND_CFG( NAME, "massDeadband", Units::METER );
80 static const ConfigURI MASS_DEFAULT_CFG( NAME, "massDefault", Units::METER );
81 static const ConfigURI MASS_FILTER_LIMIT_CFG( NAME, "massFilterLimit", Units::RADIAN );
82 static const ConfigURI MASS_FILTER_WIDTH_CFG( NAME, "massFilterWidth", Units::SECOND );
83 static const ConfigURI MASS_POSITION_LIMIT_FWD_CFG( NAME, "massPositionLimitFwd", Units::METER );
84 static const ConfigURI MASS_POSITION_LIMIT_AFT_CFG( NAME, "massPositionLimitAft", Units::METER );
85 static const ConfigURI MASS_TURN_TIME_CFG( NAME, "massTurnTime", Units::SECOND );
86 static const ConfigURI MAX_BUOY_DIVE_ACCEL_CFG( NAME, "maxBuoyDiveAccel", Units::METER_PER_SECOND_SQUARED );
87 static const ConfigURI MAX_BUOY_DIVE_RATE_CFG( NAME, "maxBuoyDiveRate", Units::METER_PER_SECOND );
88 static const ConfigURI MAX_BUOY_INT_CFG( NAME, "maxBuoyInt", Units::CUBIC_CENTIMETER );
89 static const ConfigURI MAX_DEPTH_INT_CFG( NAME, "maxDepthInt", Units::RADIAN );
90 static const ConfigURI MAX_DIVE_ACCEL_CFG( NAME, "maxDiveAccel", Units::METER_PER_SECOND_SQUARED );
91 static const ConfigURI MAX_DIVE_RATE_CFG( NAME, "maxDiveRate", Units::METER_PER_SECOND );
92 static const ConfigURI MAX_PITCH_ELEVATOR_INT_CFG( NAME, "maxPitchElevatorInt", Units::RADIAN );
93 static const ConfigURI MAX_PITCH_MASS_INT_CFG( NAME, "maxPitchMassInt", Units::METER );
94 static const ConfigURI MAX_PITCH_RATE_CFG( NAME, "maxPitchRate", Units::RADIAN_PER_SECOND );
95 static const ConfigURI MIN_ASCEND_PITCH_CFG( NAME, "minAscendPitch", Units::RADIAN );
96 static const ConfigURI MIN_DEPTH_EXCURSION_CFG( NAME, "minDepthExcursion", Units::METER );
97 static const ConfigURI PITCH_LIMIT_CFG( NAME, "pitchLimit", Units::RADIAN );
98 static const ConfigURI STOP_DEPTH_EXCURSION_CFG( NAME, "stopDepthExcursion", Units::METER );
99 static const ConfigURI STOP_OVERRIDE_DELAY_CFG( NAME, "stopOverrideDelay", Units::SECOND );
100 static const ConfigURI STOP_OVERRIDE_DELAY_BUOY_CFG( NAME, "stopOverrideDelayBuoy", Units::SECOND );
101 static const ConfigURI SURFACE_THRESHOLD_CFG( NAME, "surfaceThreshold", Units::METER );
102 static const ConfigURI USE_ELEV_INT_IN_DEPTH_MODE( NAME, "useElevIntInDepthMode", Units::BOOL );
103 
105 static const DataURI DEPTH2BUOYINT_INTERNAL( NAME, "depth2buoyIntInternal", Units::CUBIC_CENTIMETER );
106 static const DataURI DEPTH_ERROR_INTERNAL( NAME, "depthErrorInternal", Units::METER );
107 static const DataURI DEPTH_INTEGRAL_INTERNAL( NAME, "depthIntegralInternal", Units::RADIAN );
108 static const DataURI DT_INTERNAL( NAME, "dtInternal", Units::SECOND );
109 static const DataURI ELEVATOR_INTEGRAL_INTERNAL( NAME, "elevatorIntegralInternal", Units::RADIAN );
110 static const DataURI MASS_INTEGRAL_INTERNAL( NAME, "massIntegralInternal", Units::METER );
111 static const DataURI MASS_PITCH_ERROR_INTERNAL( NAME, "massPitchErrorInternal", Units::RADIAN );
112 static const DataURI PITCH_INTERNAL( NAME, "pitchInternal", Units::RADIAN );
113 static const DataURI SMOOTH_DEPTH_INTERNAL( NAME, "smoothDepthInternal", Units::METER );
114 
116 static const DataURI ELEVATOR_ANGLE_ACTION( NAME, "elevatorAngleAction", Units::RADIAN );
117 static const DataURI MASS_POSITION_ACTION( NAME, "massPositionAction", Units::METER );
118 static const DataURI BUOYANCY_ACTION( NAME, "buoyancyAction", Units::CUBIC_CENTIMETER );
119 
121 typedef enum
122 {
123  NONE, // No depth control - drift or wander
124  SURFACE, // Go to the surface
125  DEPTH, // Go to a specified depth
126  DEPTH_RATE, // Go at a specified depth rate
127  PITCH_ZERO, // Hold a zero pitch
128  PITCH, // Hold the specified pitch angle
129  PITCH_RATE, // Hold the specified pitch angle rate (until max pitch)
130  MASS_AND_ELEVATOR, // Hold the specified mass and elevator positions
131  FLOAT_ON_SURFACE, // Float on the surface
132 } VerticalMode;
133 }
134 
135 #endif /*VERTICALCONTROLIF_H_*/
static const BaseUnit RADIAN_PER_SECOND
Definition: Units.h:95
static const BaseUnit COUNT
Definition: Units.h:228
static const BaseUnit RADIAN_PER_SECOND_PER_METER
Definition: Units.h:96
VerticalMode
Defines vertical modes.
Definition: VerticalControlIF.h:121
Definition: VerticalControlIF.h:125
static const BaseUnit SECOND
Definition: Units.h:43
static const BaseUnit METER_PER_SECOND
Definition: Units.h:86
static const BaseUnit RADIAN_SECOND_PER_METER
Definition: Units.h:98
Definition: ElementURI.h:166
Definition: VerticalControlIF.h:130
static const BaseUnit RADIAN
Definition: Units.h:60
static const BaseUnit RATIO
Definition: Units.h:209
Definition: VerticalControlIF.h:123
Replacement for standard template class string.
Definition: Str.h:12
Definition: VerticalControlIF.h:131
Definition: VerticalControlIF.h:126
Specifies URIs shared by components that can be loaded from modules at startup Designed to be include...
Specifies the interface details for the VerticalControl component in the ControlModule.
Definition: VerticalControlIF.h:27
Contains the ElementURI class definition.
static const BaseUnit METER_PER_SECOND_SQUARED
Definition: Units.h:87
Definition: VerticalControlIF.h:129
static const BaseUnit RADIAN_PER_METER
Definition: Units.h:94
Definition: ElementURI.h:229
static const Unit CUBIC_CENTIMETER
Definition: Units.h:126
static const BaseUnit ENUM
Definition: Units.h:229
Definition: VerticalControlIF.h:128
Definition: VerticalControlIF.h:127
Definition: VerticalControlIF.h:124
static const BaseUnit BOOL
Definition: Units.h:227
static const BaseUnit RECIPROCAL_SECOND
Definition: Units.h:101
static const BaseUnit METER
Definition: Units.h:42