RIT VEXU Core API
Loading...
Searching...
No Matches
core/utils/controls/trapezoid_profile.h
1#pragma once
2
3#include <math.h>
4
5// Struct representing a state along the motion profile containing position, velocity and acceleration.
6typedef struct {
7 double pos; // 1D position
8 double vel; // 1D velocity
9 double acc; // 1D acceleration
10} motion_t;
11
26public:
36 TrapezoidProfile(const double &x_initial, const double &x_target, const double &v_max, const double &accel, const double &decel);
37
45 motion_t calculate(double t);
46
52 double total_time();
53
54private:
55 double x_initial_;
56 double x_target_;
57 double v_max_;
58 double v_peak_;
59 double accel_;
60 double decel_;
61 double distance_;
62 double dist_accel_;
63 double dist_decel_;
64 double dist_cruise_;
65 double dist_full_;
66
67 double time_accel_;
68 double time_decel_;
69 double time_cruise_;
70 double time_total_;
71
72 bool triangular_;
73
74 // 1 if positive, -1 if negative
75 int direction_;
76};
TrapezoidProfile(const double &x_initial, const double &x_target, const double &v_max, const double &accel, const double &decel)
Definition trapezoid_profile.cpp:14
double total_time()
Definition trapezoid_profile.cpp:99
motion_t calculate(double t)
Definition trapezoid_profile.cpp:48