Brick
Toggle main menu visibility
Loading...
Searching...
No Matches
trajectory_parameterizer.h
1
#pragma once
2
3
#include <cstdio>
4
#include <functional>
5
#include <memory>
6
#include <vector>
7
8
#include "core/math/trajectory/constraints/trajectory_constraint.h"
9
#include "core/math/trajectory/trajectory.h"
10
#include "core/math/units.h"
11
12
using namespace
units::literals
;
13
14
/**
15
* @brief Algorithms for time-parameterizing spatial path points into constrained trajectories.
16
*
17
* Implements forward-pass and backward-pass velocity profile integration under
18
* physical acceleration and user-defined constraints.
19
*/
20
class
TrajectoryParameterizer
{
21
public
:
22
/**
23
* @brief units::Time-parameterizes a list of discrete path points into a Trajectory under
24
* physical constraints.
25
* @param points Vector of poses with curvature along path.
26
* @param constraints Vector of physical trajectory constraints.
27
* @param start_velocity Boundary velocity at path start.
28
* @param end_velocity Boundary velocity at path end.
29
* @param max_velocity Maximum chassis velocity limit.
30
* @param max_acceleration Maximum chassis acceleration limit.
31
* @param reversed Direction flag (true for driving backward).
32
* @return units::Time-parameterized Trajectory object.
33
*/
34
static
Trajectory
time_parameterize_trajectory
(
35
const
std::vector<PoseWithCurvature>& points,
36
const
std::vector<std::unique_ptr<TrajectoryConstraint>>& constraints,
37
units::Velocity start_velocity, units::Velocity end_velocity, units::Velocity max_velocity,
38
units::Acceleration max_acceleration,
bool
reversed,
39
std::function<
void
(
const
char
*)> error_handler = [](
const
char
* message) {
40
std::fprintf(stderr,
"%s\n"
, message);
41
}
42
);
43
44
private
:
45
constexpr
static
double
kEpsilon = 1E-6;
46
47
struct
ConstrainedState {
48
PoseWithCurvature
pose = {
Pose2d
{}, 0_radpm};
49
units::Length distance = 0_in;
50
units::Velocity max_velocity = 0_inps;
51
units::Acceleration min_acceleration = 0_inps2;
52
units::Acceleration max_acceleration = 0_inps2;
53
};
54
55
static
bool
enforce_acceleration_limits(
56
bool
reverse,
const
std::vector<std::unique_ptr<TrajectoryConstraint>>& constraints,
57
ConstrainedState* state,
const
std::function<
void
(
const
char
*)>& error_handler
58
);
59
};
Pose2d
Definition
pose2d.h:21
TrajectoryParameterizer
Algorithms for time-parameterizing spatial path points into constrained trajectories.
Definition
trajectory_parameterizer.h:20
TrajectoryParameterizer::time_parameterize_trajectory
static Trajectory time_parameterize_trajectory(const std::vector< PoseWithCurvature > &points, const std::vector< std::unique_ptr< TrajectoryConstraint > > &constraints, units::Velocity start_velocity, units::Velocity end_velocity, units::Velocity max_velocity, units::Acceleration max_acceleration, bool reversed, std::function< void(const char *)> error_handler=[](const char *message) { std::fprintf(stderr, "%s\n", message);})
units::Time-parameterizes a list of discrete path points into a Trajectory under physical constraints...
Trajectory
Represents a time-parameterized 2D motion trajectory.
Definition
trajectory.h:37
units::literals
Definition
units.h:691
PoseWithCurvature
Pair representing 2D Pose and scalar path units::Curvature.
Definition
trajectory.h:18
core
math
trajectory
trajectory_parameterizer.h
Generated by
1.18.0