source: flair-dev/trunk/include/FlairFilter/TrajectoryGenerator1D.h@ 9

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

lic

File size: 4.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
19{
20 namespace core
21 {
22 class cvmatrix;
23 }
24 namespace gui
25 {
26 class LayoutPosition;
27 }
28}
29
30class TrajectoryGenerator1D_impl;
31
32namespace flair
33{
34namespace filter
35{
36 /*! \class TrajectoryGenerator1D
37 *
38 * \brief Class generating a trajectory in 1D
39 *
40 * This class generates position and velocity references, given
41 * an absolute maximum velocity and an absolute acceleration. \n
42 * When trajectory is started (see StartTraj()), position and velocity will increase
43 * at the given acceleration. If the maximum velocity is reached,
44 * velocity will not increase anymore. Then, velocity will decrease according
45 * to the given acceleration until velocity is null and final position is reached. \n
46 * Manual inputs can be introduced using SetPositionOffset() and SetSpeedOffset().
47 *
48 */
49 class TrajectoryGenerator1D : public core::IODevice
50 {
51 public:
52 /*!
53 * \brief Constructor
54 *
55 * Construct a TrajectoryGenerator1D at given position. \n
56 * The TrajectoryGenerator1D will automatically be child of position->getLayout() Layout. After calling this function,
57 * position will be deleted as it is no longer usefull. \n
58 *
59 * \param position position to display settings
60 * \param name name
61 * \param unit unit of the position (for exemple m, deg, etc). Its only used for display on ground station.
62 */
63 TrajectoryGenerator1D(const gui::LayoutPosition* position,std::string name,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
143 private:
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.