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 start;
43
45 Real plateau;
46
48 Real end;
49};
50
65
69class TrapezoidalVelocity final : public Segment
70{
71public:
72 TrapezoidalVelocity() = default;
73
86 Real start_time, const TrajState& initial_state, Real final_velocity,
87 Real final_acceleration, Real max_acceleration, Real max_jerk);
88
95 [[nodiscard]] TrajState evaluate(Real 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 get_start_time() const override
111 {
112 return m_start_time;
113 }
114
120 [[nodiscard]] Real get_duration() const override
121 {
122 return m_total_duration;
123 }
124
130 [[nodiscard]] Real get_final_time() const override
131 {
132 return m_start_time + m_total_duration;
133 }
134
135private:
136 Real m_start_time = 0.0;
137 Real 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:93
Constant jerk profile.
Definition fsb_trajectory_segment.h:20
Abstract class for scalar motion.
Definition fsb_trajectory_types.h:93
Definition fsb_trapezoidal_velocity.h:70
Real get_start_time() const override
Get start time of segment.
Definition fsb_trapezoidal_velocity.h:110
TrajState get_final_state() const override
Get final state of segment.
Definition fsb_trapezoidal_velocity.h:101
TrapezoidalStatus goto_velocity(Real start_time, const TrajState &initial_state, Real final_velocity, Real final_acceleration, Real max_acceleration, Real max_jerk)
Goto target velocity.
Definition fsb_trapezoidal_velocity.cpp:201
TrajState evaluate(Real t_eval) const override
Evaluate trajectory.
Definition fsb_trapezoidal_velocity.cpp:277
Real get_duration() const override
Get total duration.
Definition fsb_trapezoidal_velocity.h:120
Real get_final_time() const override
Get final time of trajectory.
Definition fsb_trapezoidal_velocity.h:130
@ SUCCESS
Successful operation.
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:20
Constraints for a trapezoidal profile.
Definition fsb_trapezoidal_velocity.h:55
Real end_jerk
Definition fsb_trapezoidal_velocity.h:63
Real start_jerk
Definition fsb_trapezoidal_velocity.h:57
Real plateau_acceleration
Definition fsb_trapezoidal_velocity.h:60
Duration of different phases in a trapezoidal profile.
Definition fsb_trapezoidal_velocity.h:40
Real start
Definition fsb_trapezoidal_velocity.h:42
Real plateau
Definition fsb_trapezoidal_velocity.h:45
Real end
Definition fsb_trapezoidal_velocity.h:48