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 Segment
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;
41
46 [[nodiscard]] TrajState get_final_state() const override
47 {
48 return evaluate(m_start_time + m_duration);
49 }
50
55 [[nodiscard]] Real get_start_time() const override
56 {
57 return m_start_time;
58 }
59
65 [[nodiscard]] Real get_duration() const override
66 {
67 return m_duration;
68 }
69
75 [[nodiscard]] Real get_final_time() const override
76 {
77 return m_start_time + m_duration;
78 }
79
80private:
81 Real m_initial_position = 0.0;
82 Real m_initial_velocity = 0.0;
83 Real m_initial_acceleration = 0.0;
84 Real m_jerk = 0.0;
85 Real m_start_time = 0.0;
86 Real m_duration = 0.0;
87};
88
92class SegmentConstAcc final : public Segment
93{
94public:
95 SegmentConstAcc() = default;
96
105 void
106 generate(Real start_time, Real duration, const TrajState& initial_state, Real acceleration);
107
114 [[nodiscard]] TrajState evaluate(Real t_eval) const override;
115
120 [[nodiscard]] TrajState get_final_state() const override
121 {
122 return evaluate(m_start_time + m_duration);
123 }
124
129 [[nodiscard]] Real get_start_time() const override
130 {
131 return m_start_time;
132 }
133
139 [[nodiscard]] Real get_duration() const override
140 {
141 return m_duration;
142 }
143
149 [[nodiscard]] Real get_final_time() const override
150 {
151 return m_start_time + m_duration;
152 }
153
154private:
155 Real m_initial_position = 0.0;
156 Real m_initial_velocity = 0.0;
157 Real m_acceleration = 0.0;
158 Real m_start_time = 0.0;
159 Real m_duration = 0.0;
160};
161
165class SegmentConstVel final : public Segment
166{
167public:
168 SegmentConstVel() = default;
169
178 void generate(Real start_time, Real duration, const TrajState& initial_state, Real velocity);
179
186 [[nodiscard]] TrajState evaluate(Real t_eval) const override;
187
192 [[nodiscard]] TrajState get_final_state() const override
193 {
194 return evaluate(m_start_time + m_duration);
195 }
196
201 [[nodiscard]] Real get_start_time() const override
202 {
203 return m_start_time;
204 }
205
211 [[nodiscard]] Real get_duration() const override
212 {
213 return m_duration;
214 }
215
221 [[nodiscard]] Real get_final_time() const override
222 {
223 return m_start_time + m_duration;
224 }
225
226private:
227 Real m_initial_position = 0.0;
228 Real m_velocity = 0.0;
229 Real m_start_time = 0.0;
230 Real m_duration = 0.0;
231};
232
237} // namespace fsb
238
239#endif
Constant acceleration profile.
Definition fsb_trajectory_segment.h:93
Real get_final_time() const override
Get final time of segment.
Definition fsb_trajectory_segment.h:149
Real get_duration() const override
Get duration.
Definition fsb_trajectory_segment.h:139
TrajState get_final_state() const override
Get final state of segment.
Definition fsb_trajectory_segment.h:120
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_start_time() const override
Get start time of segment.
Definition fsb_trajectory_segment.h:129
TrajState evaluate(Real t_eval) const override
Evaluate constant acceleration segment.
Definition fsb_trajectory_segment.cpp:44
Constant jerk profile.
Definition fsb_trajectory_segment.h:20
Real get_start_time() const override
Get start time of segment.
Definition fsb_trajectory_segment.h:55
TrajState evaluate(Real t_eval) const override
Evaluate segment trajectory.
Definition fsb_trajectory_segment.cpp:21
void generate(Real start_time, Real duration, const TrajState &initial_state, Real jerk)
Generate constant jerk trajectory.
Definition fsb_trajectory_segment.cpp:9
Real get_duration() const override
Get duration.
Definition fsb_trajectory_segment.h:65
Real get_final_time() const override
Get final time of segment.
Definition fsb_trajectory_segment.h:75
TrajState get_final_state() const override
Get final state of segment.
Definition fsb_trajectory_segment.h:46
Constant velocity profile.
Definition fsb_trajectory_segment.h:166
TrajState evaluate(Real t_eval) const override
Evaluate constant velocity segment.
Definition fsb_trajectory_segment.cpp:65
Real get_final_time() const override
Get final time of segment.
Definition fsb_trajectory_segment.h:221
TrajState get_final_state() const override
Get final state of segment.
Definition fsb_trajectory_segment.h:192
Real get_duration() const override
Get duration.
Definition fsb_trajectory_segment.h:211
Real get_start_time() const override
Get start time of segment.
Definition fsb_trajectory_segment.h:201
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 scalar motion.
Definition fsb_trajectory_types.h:93
Trajectory scalar motion state.
Definition fsb_trajectory_types.h:20