FancySafeBot 0.0.1
A safe robotics library
Loading...
Searching...
No Matches
fsb_trajectory_segment.h
1#ifndef FSB_TRAJECTORY_SEGMENT_H
2#define FSB_TRAJECTORY_SEGMENT_H
3
4#include "fsb_trajectory_types.h"
5#include "fsb_types.h"
6
7namespace fsb
8{
9
19class SegmentConstJerk final : public SegmentScalar
20{
21public:
22 SegmentConstJerk() = default;
23
32 void generate(Real start_time, Real duration, const TrajState& initial_state, Real jerk);
33
40 [[nodiscard]] TrajState evaluate(Real t_eval) const override final;
41
46 [[nodiscard]] TrajState get_final_state() const override final
47 {
48 return evaluate(m_start_time + m_duration);
49 }
50
55 [[nodiscard]] TrajState get_initial_state() const override final
56 {
57 return evaluate(m_start_time);
58 }
59
64 [[nodiscard]] Real get_start_time() const override final
65 {
66 return m_start_time;
67 }
68
74 [[nodiscard]] Real get_duration() const override final
75 {
76 return m_duration;
77 }
78
84 [[nodiscard]] Real get_final_time() const override final
85 {
86 return m_start_time + m_duration;
87 }
88
89private:
90 Real m_initial_position = 0.0;
91 Real m_initial_velocity = 0.0;
92 Real m_initial_acceleration = 0.0;
93 Real m_jerk = 0.0;
94 Real m_start_time = 0.0;
95 Real m_duration = 0.0;
96};
97
101class SegmentConstAcc final : public SegmentScalar
102{
103public:
104 SegmentConstAcc() = default;
105
114 void
115 generate(Real start_time, Real duration, const TrajState& initial_state, Real acceleration);
116
123 [[nodiscard]] TrajState evaluate(Real t_eval) const override final;
124
129 [[nodiscard]] TrajState get_final_state() const override final
130 {
131 return evaluate(m_start_time + m_duration);
132 }
133
138 [[nodiscard]] TrajState get_initial_state() const override final
139 {
140 return evaluate(m_start_time);
141 }
142
147 [[nodiscard]] Real get_start_time() const override final
148 {
149 return m_start_time;
150 }
151
157 [[nodiscard]] Real get_duration() const override final
158 {
159 return m_duration;
160 }
161
167 [[nodiscard]] Real get_final_time() const override final
168 {
169 return m_start_time + m_duration;
170 }
171
172private:
173 Real m_initial_position = 0.0;
174 Real m_initial_velocity = 0.0;
175 Real m_acceleration = 0.0;
176 Real m_start_time = 0.0;
177 Real m_duration = 0.0;
178};
179
183class SegmentConstVel final : public SegmentScalar
184{
185public:
186 SegmentConstVel() = default;
187
196 void generate(Real start_time, Real duration, const TrajState& initial_state, Real velocity);
197
204 [[nodiscard]] TrajState evaluate(Real t_eval) const override final;
205
210 [[nodiscard]] TrajState get_final_state() const override final
211 {
212 return evaluate(m_start_time + m_duration);
213 }
214
219 [[nodiscard]] TrajState get_initial_state() const override final
220 {
221 return evaluate(m_start_time);
222 }
223
228 [[nodiscard]] Real get_start_time() const override final
229 {
230 return m_start_time;
231 }
232
238 [[nodiscard]] Real get_duration() const override final
239 {
240 return m_duration;
241 }
242
248 [[nodiscard]] Real get_final_time() const override final
249 {
250 return m_start_time + m_duration;
251 }
252
253private:
254 Real m_initial_position = 0.0;
255 Real m_velocity = 0.0;
256 Real m_start_time = 0.0;
257 Real m_duration = 0.0;
258};
259
264} // namespace fsb
265
266#endif
Constant acceleration profile.
Definition fsb_trajectory_segment.h:102
TrajState evaluate(Real t_eval) const override final
Evaluate constant acceleration segment.
Definition fsb_trajectory_segment.cpp:44
TrajState get_final_state() const override final
Get final state of segment.
Definition fsb_trajectory_segment.h:129
TrajState get_initial_state() const override final
Get initial state of segment.
Definition fsb_trajectory_segment.h:138
void generate(Real start_time, Real duration, const TrajState &initial_state, Real acceleration)
Generate constant acceleration profile.
Definition fsb_trajectory_segment.cpp:33
Real get_final_time() const override final
Get final time of segment.
Definition fsb_trajectory_segment.h:167
Real get_start_time() const override final
Get start time of segment.
Definition fsb_trajectory_segment.h:147
Real get_duration() const override final
Get duration.
Definition fsb_trajectory_segment.h:157
Constant jerk profile.
Definition fsb_trajectory_segment.h:20
void generate(Real start_time, Real duration, const TrajState &initial_state, Real jerk)
Generate constant jerk trajectory.
Definition fsb_trajectory_segment.cpp:9
TrajState get_initial_state() const override final
Get initial state of segment.
Definition fsb_trajectory_segment.h:55
TrajState evaluate(Real t_eval) const override final
Evaluate segment trajectory.
Definition fsb_trajectory_segment.cpp:21
Real get_start_time() const override final
Get start time of segment.
Definition fsb_trajectory_segment.h:64
TrajState get_final_state() const override final
Get final state of segment.
Definition fsb_trajectory_segment.h:46
Real get_final_time() const override final
Get final time of segment.
Definition fsb_trajectory_segment.h:84
Real get_duration() const override final
Get duration.
Definition fsb_trajectory_segment.h:74
Constant velocity profile.
Definition fsb_trajectory_segment.h:184
TrajState get_initial_state() const override final
Get initial state of segment.
Definition fsb_trajectory_segment.h:219
Real get_duration() const override final
Get duration.
Definition fsb_trajectory_segment.h:238
Real get_start_time() const override final
Get start time of segment.
Definition fsb_trajectory_segment.h:228
TrajState get_final_state() const override final
Get final state of segment.
Definition fsb_trajectory_segment.h:210
TrajState evaluate(Real t_eval) const override final
Evaluate constant velocity segment.
Definition fsb_trajectory_segment.cpp:65
Real get_final_time() const override final
Get final time of segment.
Definition fsb_trajectory_segment.h:248
void generate(Real start_time, Real duration, const TrajState &initial_state, Real velocity)
Generate constant velocity profile.
Definition fsb_trajectory_segment.cpp:55
Abstract class for segments.
Definition fsb_trajectory_types.h:67
Trajectory scalar motion state.
Definition fsb_trajectory_types.h:20