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.
6
typedef
struct
{
7
double
pos;
// 1D position
8
double
vel;
// 1D velocity
9
double
acc;
// 1D acceleration
10
} motion_t;
11
25
class
TrapezoidProfile
{
26
public
:
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
54
private
:
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::TrapezoidProfile
TrapezoidProfile(const double &x_initial, const double &x_target, const double &v_max, const double &accel, const double &decel)
Definition
trapezoid_profile.cpp:14
TrapezoidProfile::total_time
double total_time()
Definition
trapezoid_profile.cpp:99
TrapezoidProfile::calculate
motion_t calculate(double t)
Definition
trapezoid_profile.cpp:48
include
core
utils
controls
trapezoid_profile.h
Generated by
1.13.2