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

Last change on this file since 68 was 68, checked in by Sanahuja Guillaume, 3 years ago

maj for armv5te

File size: 3.8 KB
RevLine 
[9]1// %flair:license{
[13]2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
[9]4// %flair:license}
[6]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
[13]18namespace flair {
19namespace core {
[68]20class Matrix;
[6]21}
[13]22namespace gui {
23class LayoutPosition;
24}
25}
[6]26
27class TrajectoryGenerator1D_impl;
28
[13]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 = "");
[6]64
[13]65  /*!
66  * \brief Destructor
67  *
68  */
69  ~TrajectoryGenerator1D();
[6]70
[13]71  /*!
72  * \brief Start trajectory
73  *
[50]74  * \param startPosition start position
75  * \param endPosition end position
76  * \param startVelocity start velocity, should be actual velocity. This value will be saturated
77  * max velocity defined in GCS.
[13]78  */
[50]79  void StartTraj(float startPosition, float endPosition,float startVelocity=0);
[6]80
[13]81  /*!
82  * \brief Stop trajectory
83  *
84  */
85  void StopTraj(void);
[6]86
[13]87  /*!
88  * \brief Reset
89  *
90  * Reset all outputs to 0. This can be done only when IsRunning()==false.
91  *
92  */
93  void Reset(void);
[6]94
[13]95  /*!
96  * \brief Is trajectory running?
97  *
98  * \return true if trajectory is running
99  */
100  bool IsRunning(void) const;
[6]101
[13]102  /*!
103  * \brief Set position offset
104  *
105  * \param value position offset
106  */
107  void SetPositionOffset(float value);
[6]108
[13]109  /*!
110  * \brief Set speed offset
111  *
112  * \param value speed offset
113  */
114  void SetSpeedOffset(float value);
[6]115
[13]116  /*!
117  * \brief Update using provided datas
118  *
119  * Uses values specified by StartTraj(),
120  * SetPositionOffset() and SetSpeedOffset().
121  *
122  * \param time time of the update
123  */
124  void Update(core::Time time);
[6]125
[13]126  /*!
127  * \brief Position
128  *
[62]129  * \return the actual position
[13]130  */
131  float Position(void) const;
[6]132
[13]133  /*!
134  * \brief Speed
135  *
[62]136  * \return the actual speed
[13]137  */
138  float Speed(void) const;
[62]139 
140  /*!
141  * \brief Get percentage of completion
142  *
143  * Value is between 0 and 100.
144  *
145  * \return the percentage of completion (in position)
146  */
147  float GetPercentageOfCompletion(void) const;
[6]148
[13]149  /*!
150  * \brief Output matrix
151  *
152  * \return matrix
153  */
[68]154  core::Matrix *GetMatrix(void) const;
[6]155
[13]156private:
157  /*!
158  * \brief Update using provided datas
159  *
160  * Reimplemented from IODevice. Nothing to do in this IODevice.
161  *
162  * \param data data from the parent to process
163  */
164  void UpdateFrom(const core::io_data *data){};
[6]165
[13]166  TrajectoryGenerator1D_impl *pimpl_;
167};
[6]168} // end namespace filter
169} // end namespace flair
170#endif // TRAJECTORYGENERATOR1D_H
Note: See TracBrowser for help on using the repository browser.