source: flair-src/trunk/lib/FlairFilter/src/TrajectoryGenerator1D.h@ 24

Last change on this file since 24 was 15, checked in by Bayard Gildas, 6 years ago

sources reformatted with flair-format-dir script

File size: 3.3 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5/*!
6 * \file TrajectoryGenerator1D.h
7 * \brief Class generating a trajectory in 1D
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2011/05/01
10 * \version 4.0
11 */
12
13#ifndef TRAJECTORYGENERATOR1D_H
14#define TRAJECTORYGENERATOR1D_H
15
16#include <IODevice.h>
17
18namespace flair {
19namespace core {
20class cvmatrix;
21}
22namespace gui {
23class LayoutPosition;
24}
25}
26
27class TrajectoryGenerator1D_impl;
28
29namespace flair {
30namespace filter {
31/*! \class TrajectoryGenerator1D
32*
33* \brief Class generating a trajectory in 1D
34*
35* This class generates position and velocity references, given
36* an absolute maximum velocity and an absolute acceleration. \n
37* When trajectory is started (see StartTraj()), position and velocity will
38*increase
39* at the given acceleration. If the maximum velocity is reached,
40* velocity will not increase anymore. Then, velocity will decrease according
41* to the given acceleration until velocity is null and final position is
42*reached. \n
43* Manual inputs can be introduced using SetPositionOffset() and
44*SetSpeedOffset().
45*
46*/
47class TrajectoryGenerator1D : public core::IODevice {
48public:
49 /*!
50 * \brief Constructor
51 *
52 * Construct a TrajectoryGenerator1D at given position. \n
53 * The TrajectoryGenerator1D will automatically be child of
54 *position->getLayout() Layout. After calling this function,
55 * position will be deleted as it is no longer usefull. \n
56 *
57 * \param position position to display settings
58 * \param name name
59 * \param unit unit of the position (for exemple m, deg, etc). Its only used
60 *for display on ground station.
61 */
62 TrajectoryGenerator1D(const gui::LayoutPosition *position, std::string name,
63 std::string unit = "");
64
65 /*!
66 * \brief Destructor
67 *
68 */
69 ~TrajectoryGenerator1D();
70
71 /*!
72 * \brief Start trajectory
73 *
74 * \param start_pos start position
75 * \param end_pos end position
76 */
77 void StartTraj(float start_pos, float end_pos);
78
79 /*!
80 * \brief Stop trajectory
81 *
82 */
83 void StopTraj(void);
84
85 /*!
86 * \brief Reset
87 *
88 * Reset all outputs to 0. This can be done only when IsRunning()==false.
89 *
90 */
91 void Reset(void);
92
93 /*!
94 * \brief Is trajectory running?
95 *
96 * \return true if trajectory is running
97 */
98 bool IsRunning(void) const;
99
100 /*!
101 * \brief Set position offset
102 *
103 * \param value position offset
104 */
105 void SetPositionOffset(float value);
106
107 /*!
108 * \brief Set speed offset
109 *
110 * \param value speed offset
111 */
112 void SetSpeedOffset(float value);
113
114 /*!
115 * \brief Update using provided datas
116 *
117 * Uses values specified by StartTraj(),
118 * SetPositionOffset() and SetSpeedOffset().
119 *
120 * \param time time of the update
121 */
122 void Update(core::Time time);
123
124 /*!
125 * \brief Position
126 *
127 */
128 float Position(void) const;
129
130 /*!
131 * \brief Speed
132 *
133 */
134 float Speed(void) const;
135
136 /*!
137 * \brief Output matrix
138 *
139 * \return matrix
140 */
141 core::cvmatrix *Matrix(void) const;
142
143private:
144 /*!
145 * \brief Update using provided datas
146 *
147 * Reimplemented from IODevice. Nothing to do in this IODevice.
148 *
149 * \param data data from the parent to process
150 */
151 void UpdateFrom(const core::io_data *data){};
152
153 TrajectoryGenerator1D_impl *pimpl_;
154};
155} // end namespace filter
156} // end namespace flair
157#endif // TRAJECTORYGENERATOR1D_H
Note: See TracBrowser for help on using the repository browser.