source: flair-dev/trunk/include/FlairFilter/NestedSat.h@ 6

Last change on this file since 6 was 6, checked in by Sanahuja Guillaume, 8 years ago

filter

File size: 2.6 KB
Line 
1/*!
2 * \file NestedSat.h
3 * \brief Class defining a PID with saturations
4 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
5 * \date 2013/04/15
6 * \version 4.0
7 */
8
9#ifndef NESTEDSAT_H
10#define NESTEDSAT_H
11
12#include <ControlLaw.h>
13
14namespace flair
15{
16 namespace gui
17 {
18 class Layout;
19 class LayoutPosition;
20 }
21}
22
23class NestedSat_impl;
24
25namespace flair
26{
27namespace filter
28{
29 /*! \class NestedSat
30 *
31 * \brief Class defining a PID with saturations
32 *
33 * The output of this control law is calculated
34 * as follows: \n
35 * p_ref=Sat(p_ref,k*sat_ref) \n
36 * d_ref=Sat[(p_ref-p)*kp,k*sat_dref] \n
37 * law=Sat[(d-d_ref)*kd,sat_u] \n
38 * where p, p_ref and d are input values (see SetValues()), \n
39 * where sat_ref, sat_dref and sat_u are settings availables on the ground station, \n
40 * where k is a conversion factor (see ConvertSatFromDegToRad()).
41 */
42 class NestedSat : public ControlLaw
43 {
44 friend class ::NestedSat_impl;
45
46 public:
47 /*!
48 * \brief Constructor
49 *
50 * Construct a NestedSat at given place position. \n
51 * The NestedSat will automatically be child of position->getLayout() Layout. After calling this function,
52 * position will be deleted as it is no longer usefull. \n
53 *
54 * \param position position to display settings
55 * \param name name
56 */
57 NestedSat(const gui::LayoutPosition* position,std::string name);
58
59 /*!
60 * \brief Destructor
61 *
62 */
63 ~NestedSat();
64
65 /*!
66 * \brief Set input values
67 *
68 * \param p_ref proportional reference
69 * \param p proportional value
70 * \param d derivative value
71 */
72 void SetValues(float p_ref,float p,float d);
73
74 /*!
75 * \brief Convert saturation parameters in radians
76 *
77 * If this function is called, saturation parameters
78 * on the ground station will be interpreted as degrees. \n
79 * Thus, an internal conversion from degrees to radians will
80 * be done (k=PI/180).
81 */
82 void ConvertSatFromDegToRad(void);
83
84 private:
85 /*!
86 * \brief Update using provided datas
87 *
88 * Reimplemented from IODevice.
89 *
90 * \param data data from the parent to process
91 */
92 void UpdateFrom(const core::io_data *data);
93
94 NestedSat_impl* pimpl_;
95 };
96} // end namespace filter
97} // end namespace flair
98#endif // NESTEDSAT_H
Note: See TracBrowser for help on using the repository browser.