LRAUV  revA
HorizontalControl.h
Go to the documentation of this file.
1 
12 #ifndef HORIZONTALCONTROL_H_
13 #define HORIZONTALCONTROL_H_
14 
16 #include "utils/Trajectory.h"
17 
18 class Timestamp;
20 
35 {
36 public:
37 
38  HorizontalControl( const Module* module );
39 
40  virtual ~HorizontalControl();
41 
43  void initialize( void );
44 
46  void run();
47 
49  void uninitialize( void );
50 
51 protected:
52 
54  float xteIntegral_;
55 
56 private:
57 
58  // Note that the copy constructor below is private and not given a body.
59  // Any attempt to call it will return a compiler error.
60  HorizontalControl( const HorizontalControl& old ); // disallow copy constructor
61 
62  //Command Generator states
64 
66  bool ok_;
67 
69 
70  float kdHeading_;
71  float kiHeading_;
72  float kpHeading_;
73  float kwpHeading_;
74  float kiwpHeading_;
75  float maxKxte_;
77  float rudderLimit_;
78  float headingRate_;
80  float maxHdgAccel_;
81  float xte_;
82 
83  float rudDeadband_;
84 
86 
88  bool readConfig( void );
89 
91  void controlHeading();
92 
94  void setHeading( float desiredHeading, bool useInt = true );
95 
97  void setHeadingRate( float desiredheadingRate );
98 
100  void setRudderAngle( float desiredRudderAngle );
101 
103  float headingControl( float heading, float headingCmd, float yawRate, bool useInt = true );
104 
105  // Slate input setting variables
106 
110 
115 
120 
125 
132 
138 
143 
144  // Configuration readers
145  ConfigReader* kdHeadingCfgReader_; // Derivative gain
147  ConfigReader* kpHeadingCfgReader_; // Proportional gain
148  ConfigReader* kwpHeadingCfgReader_; // Cross-track error gain
149  ConfigReader* kiwpHeadingCfgReader_; // Cross-track integral error gain
151  ConfigReader* maxHdgIntCfgReader_; // Max cmded rudder from hdg int
153  ConfigReader* maxKxteCfgReader_; // Max heading correction due to kwpHeading
154  ConfigReader* rudDeadbandCfgReader_; // Degree of rounding in output values
155  ConfigReader* rudLimitCfgReader_; // Max rudder angle
156 
157 
158  // Slate input measurements
159 
164 
168 
172 
177 
181 
184 
188 
192 
195 
198 
200 
201  // Slate output variables
202 
205  //Output *outputRudderAngle_;
207 
210 
211 };
212 
213 #endif /*SAMPLECOMPONENT_H_*/
ConfigReader * kiwpHeadingCfgReader_
Definition: HorizontalControl.h:149
void setRudderAngle(float desiredRudderAngle)
attempts to achieve the desired rudder angle
Definition: HorizontalControl.cpp:326
UniversalDataReader * rudderAngleReader_
Definition: HorizontalControl.h:199
float kiHeading_
Definition: HorizontalControl.h:71
Contains the Trajectory class definition.
ConfigReader * maxHdgAccelCfgReader_
Definition: HorizontalControl.h:150
float headingRate_
Definition: HorizontalControl.h:78
Contains the SyncComponent class definition.
void setHeading(float desiredHeading, bool useInt=true)
attempts to achieve the desired heading
Definition: HorizontalControl.cpp:281
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: UniversalDataReader.h:26
ConfigReader * maxKxteCfgReader_
Definition: HorizontalControl.h:153
float kpHeading_
Definition: HorizontalControl.h:72
Trajectory headingTrajectory_
Definition: HorizontalControl.h:63
float kwpHeading_
Definition: HorizontalControl.h:73
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: DataReader.h:30
bool readConfig(void)
read vehicle config variables
Definition: HorizontalControl.cpp:140
DataReader * latitudeCmdReader_
Desired waypoint latitude to head towards.
Definition: HorizontalControl.h:114
float xteIntegral_
Definition: HorizontalControl.h:54
float maxKxte_
Definition: HorizontalControl.h:75
UniversalDataReader * longitudeReader_
Current latitude.
Definition: HorizontalControl.h:197
float kdHeading_
*----------------— vehicle parameters -----------------------—*/
Definition: HorizontalControl.h:70
This is the primary "control" for the vehicle's heading.
Definition: HorizontalControl.h:34
DataWriter * headingIntegralInternalWriter_
Heading integral in radians.
Definition: HorizontalControl.h:175
void initialize(void)
Initialize function.
Definition: HorizontalControl.cpp:82
ConfigReader * kdHeadingCfgReader_
Definition: HorizontalControl.h:145
float maxHeadingRateCfg_
Definition: HorizontalControl.h:79
DataReader * horizontalModeReader_
Desired heading mode (none, waypoint, specified).
Definition: HorizontalControl.h:109
This is a helper class for Depthcontrol, HeadingControl, and SpeedControl which projects the state of...
Definition: Trajectory.h:18
float xte_
Definition: HorizontalControl.h:81
ConfigReader * kwpHeadingCfgReader_
Definition: HorizontalControl.h:148
void run()
The actual "payload" of the component.
Definition: HorizontalControl.cpp:104
DataReader * rudderAngleActionReader_
Used to read last action, even if from another source.
Definition: HorizontalControl.h:209
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: DataWriter.h:27
ConfigReader * kpHeadingCfgReader_
Definition: HorizontalControl.h:147
float rudderLimit_
Definition: HorizontalControl.h:77
float headingControl(float heading, float headingCmd, float yawRate, bool useInt=true)
returns rudder angle
Definition: HorizontalControl.cpp:334
DataReader * rudderAngleCmdReader_
Desired rudder angle (radian).
Definition: HorizontalControl.h:142
ConfigReader * rudDeadbandCfgReader_
Definition: HorizontalControl.h:154
ConfigReader * kiHeadingCfgReader_
Definition: HorizontalControl.h:146
UniversalDataReader * latitudeReader_
Current latitude.
Definition: HorizontalControl.h:194
bool ok_
indicates whether things are ok to run
Definition: HorizontalControl.h:66
DataWriter * xteInternalWriter_
Cross-track error, meter.
Definition: HorizontalControl.h:180
Module is the abstract base class for a collection of Component objects that can be contained in a lo...
Definition: Module.h:45
UniversalDataReader * headingReader_
Current heading (radian) of the vehicle.
Definition: HorizontalControl.h:163
void setHeadingRate(float desiredheadingRate)
attempts to achieve the desired heading rate
Definition: HorizontalControl.cpp:314
ConfigReader * rudLimitCfgReader_
Definition: HorizontalControl.h:155
DataWriter * smoothHeadingInternalWriter_
Smoothed commanded heading angle in radians.
Definition: HorizontalControl.h:171
HorizontalControl(const Module *module)
Definition: HorizontalControl.cpp:23
DataWriter * rudderAngleActionWriter_
Angle (in radian) of Elevator.
Definition: HorizontalControl.h:206
void uninitialize(void)
Uninit function.
Definition: HorizontalControl.cpp:132
float maxHdgAccel_
Definition: HorizontalControl.h:80
Definition: ConfigReader.h:13
virtual ~HorizontalControl()
Definition: HorizontalControl.cpp:78
float maxHeadingInt_
Definition: HorizontalControl.h:76
DataReader * headingCmdReader_
Desired heading (radian) of the vehicle.
Definition: HorizontalControl.h:131
DataWriter * kxteInternalWriter_
Cross-track error correction, radian.
Definition: HorizontalControl.h:183
void controlHeading()
control heading
Definition: HorizontalControl.cpp:159
Abstract Base class for components that compute settings to be communicated to SyncServoComponent ins...
Definition: SyncComponent.h:228
float rudDeadband_
Definition: HorizontalControl.h:83
float headingIntegral_
Definition: HorizontalControl.h:53
DataWriter * headingInternalWriter_
Commanded heading angle in radians.
Definition: HorizontalControl.h:167
DataReader * headingRateCmdReader_
Desired yaw / heading change rate (radian/second).
Definition: HorizontalControl.h:137
DataWriter * bearingInternalWriter_
Commanded bearing, radians. In UTM coordinates, this should be a constant.
Definition: HorizontalControl.h:187
DataReader * longitudeCmdReader_
Desired waypoint longitude to head towards.
Definition: HorizontalControl.h:119
ConfigReader * maxHdgRateCfgReader_
Definition: HorizontalControl.h:152
float kiwpHeading_
Definition: HorizontalControl.h:74
ConfigReader * maxHdgIntCfgReader_
Definition: HorizontalControl.h:151
UniversalDataReader * headingRateReader_
Current yaw / heading change rate (radian/second).
Definition: HorizontalControl.h:191
DataWriter * xteIntegralInternalWriter_
Definition: HorizontalControl.h:176
DataReader * bearingCmdReader_
Bearing to the Desired waypoint.
Definition: HorizontalControl.h:124
Represents absolute times.
Definition: Timestamp.h:31