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

Last change on this file since 9 was 9, checked in by Sanahuja Guillaume, 5 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.