FancySafeBot 0.0.1
A safe robotics library
Loading...
Searching...
No Matches
fsb_trapezoidal_velocity.h
1#ifndef FSB_TRAPEZOIDAL_VELOCITY_H
2#define FSB_TRAPEZOIDAL_VELOCITY_H
3
4#include <cstdint>
5#include "fsb_types.h"
6#include "fsb_trajectory_types.h"
7#include "fsb_trajectory_segment.h"
8
9namespace fsb
10{
11
20enum class TrapezoidalStatus: uint8_t
21{
25 SUCCESS = 0,
34};
35
40{
42 real_t start;
43
45 real_t plateau;
46
48 real_t end;
49};
50
55{
57 real_t start_jerk;
58
61
63 real_t end_jerk;
64};
65
69class TrapezoidalVelocity final : public Segment
70{
71public:
72 TrapezoidalVelocity() = default;
73
86 real_t start_time, const TrajState& initial_state, real_t final_velocity,
87 real_t final_acceleration, real_t max_acceleration, real_t max_jerk);
88
95 [[nodiscard]] TrajState evaluate(real_t t_eval) const override;
96
101 [[nodiscard]] TrajState get_final_state() const override
102 {
103 return evaluate(m_start_time + m_total_duration);
104 }
105
110 [[nodiscard]] real_t get_start_time() const override
111 {
112 return m_start_time;
113 }
114
120 [[nodiscard]] real_t get_duration() const override
121 {
122 return m_total_duration;
123 }
124
130 [[nodiscard]] real_t get_final_time() const override
131 {
132 return m_start_time + m_total_duration;
133 }
134
135private:
136 real_t m_start_time = 0.0;
137 real_t m_total_duration = 0.0;
138
139 SegmentConstJerk m_seg1;
140 SegmentConstAcc m_seg2;
141 SegmentConstJerk m_seg3;
142 SegmentConstAcc m_seg_extrapolate;
143
144 TrajState m_initial_state = {};
145 TrajState m_final_state = {};
146};
147
152} // namespace fsb
153
154#endif
Constant acceleration profile.
Definition fsb_trajectory_segment.h:181
Constant jerk profile.
Definition fsb_trajectory_segment.h:108
Abstract class for scalar motion.
Definition fsb_trajectory_segment.h:48
Definition fsb_trapezoidal_velocity.h:70
TrajState get_final_state() const override
Get final state of segment.
Definition fsb_trapezoidal_velocity.h:101
real_t get_duration() const override
Get total duration.
Definition fsb_trapezoidal_velocity.h:120
real_t get_final_time() const override
Get final time of trajectory.
Definition fsb_trapezoidal_velocity.h:130
real_t get_start_time() const override
Get start time of segment.
Definition fsb_trapezoidal_velocity.h:110
TrajState evaluate(real_t t_eval) const override
Evaluate trajectory.
Definition fsb_trapezoidal_velocity.cpp:224
TrapezoidalStatus goto_velocity(real_t start_time, const TrajState &initial_state, real_t final_velocity, real_t final_acceleration, real_t max_acceleration, real_t max_jerk)
Goto target velocity.
Definition fsb_trapezoidal_velocity.cpp:164
TrapezoidalStatus
Result of attempting to compute trapezoidal trajectory.
Definition fsb_trapezoidal_velocity.h:21
@ FAILED_TRAJECTORY_GENERATION
Unable to reach target with current state.
@ MAX_VALUE_BELOW_TOLERANCE
Maximum values not positive.
Trajectory scalar motion state.
Definition fsb_trajectory_types.h:18
Constraints for a trapezoidal profile.
Definition fsb_trapezoidal_velocity.h:55
real_t plateau_acceleration
Definition fsb_trapezoidal_velocity.h:60
real_t end_jerk
Definition fsb_trapezoidal_velocity.h:63
real_t start_jerk
Definition fsb_trapezoidal_velocity.h:57
Duration of different phases in a trapezoidal profile.
Definition fsb_trapezoidal_velocity.h:40
real_t plateau
Definition fsb_trapezoidal_velocity.h:45
real_t end
Definition fsb_trapezoidal_velocity.h:48
real_t start
Definition fsb_trapezoidal_velocity.h:42