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

Last change on this file since 177 was 177, checked in by Sanahuja Guillaume, 5 years ago

use current zvel when switching from starttakingoff to stabilized into the traj generator

File size: 3.5 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 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.
78 */
79 void StartTraj(float startPosition, float endPosition,float startVelocity=0);
80
81 /*!
82 * \brief Stop trajectory
83 *
84 */
85 void StopTraj(void);
86
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);
94
95 /*!
96 * \brief Is trajectory running?
97 *
98 * \return true if trajectory is running
99 */
100 bool IsRunning(void) const;
101
102 /*!
103 * \brief Set position offset
104 *
105 * \param value position offset
106 */
107 void SetPositionOffset(float value);
108
109 /*!
110 * \brief Set speed offset
111 *
112 * \param value speed offset
113 */
114 void SetSpeedOffset(float value);
115
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);
125
126 /*!
127 * \brief Position
128 *
129 */
130 float Position(void) const;
131
132 /*!
133 * \brief Speed
134 *
135 */
136 float Speed(void) const;
137
138 /*!
139 * \brief Output matrix
140 *
141 * \return matrix
142 */
143 core::cvmatrix *Matrix(void) const;
144
145private:
146 /*!
147 * \brief Update using provided datas
148 *
149 * Reimplemented from IODevice. Nothing to do in this IODevice.
150 *
151 * \param data data from the parent to process
152 */
153 void UpdateFrom(const core::io_data *data){};
154
155 TrajectoryGenerator1D_impl *pimpl_;
156};
157} // end namespace filter
158} // end namespace flair
159#endif // TRAJECTORYGENERATOR1D_H
Note: See TracBrowser for help on using the repository browser.