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
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 final;
96
101 [[nodiscard]] TrajState get_final_state() const override final
102 {
103 return evaluate(m_start_time + m_total_duration);
104 }
105
110 [[nodiscard]] TrajState get_initial_state() const override final
111 {
112 return evaluate(m_start_time);
113 }
114
119 [[nodiscard]] Real get_start_time() const override final
120 {
121 return m_start_time;
122 }
123
129 [[nodiscard]] Real get_duration() const override final
130 {
131 return m_total_duration;
132 }
133
139 [[nodiscard]] Real get_final_time() const override final
140 {
141 return m_start_time + m_total_duration;
142 }
143
144private:
145 Real m_start_time = 0.0;
146 Real m_total_duration = 0.0;
147
148 SegmentConstJerk m_seg1;
149 SegmentConstAcc m_seg2;
150 SegmentConstJerk m_seg3;
151 SegmentConstAcc m_seg_extrapolate;
152
153 TrajState m_initial_state = {};
154 TrajState m_final_state = {};
155};
156
161} // namespace fsb
162
163#endif
Constant acceleration profile.
Definition fsb_trajectory_segment.h:102
Constant jerk profile.
Definition fsb_trajectory_segment.h:20
Abstract class for segments.
Definition fsb_trajectory_types.h:67
Definition fsb_trapezoidal_velocity.h:70
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 get_final_state() const override final
Get final state of segment.
Definition fsb_trapezoidal_velocity.h:101
TrajState get_initial_state() const override final
Get initial state of segment.
Definition fsb_trapezoidal_velocity.h:110
Real get_start_time() const override final
Get start time of segment.
Definition fsb_trapezoidal_velocity.h:119
Real get_duration() const override final
Get total duration.
Definition fsb_trapezoidal_velocity.h:129
Real get_final_time() const override final
Get final time of trajectory.
Definition fsb_trapezoidal_velocity.h:139
TrajState evaluate(Real t_eval) const override final
Evaluate trajectory.
Definition fsb_trapezoidal_velocity.cpp:277
@ 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