Brick
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
12using 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 */
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 */
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};
Definition pose2d.h:21
Algorithms for time-parameterizing spatial path points into constrained trajectories.
Definition trajectory_parameterizer.h:20
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...
Represents a time-parameterized 2D motion trajectory.
Definition trajectory.h:37
Definition units.h:691
Pair representing 2D Pose and scalar path units::Curvature.
Definition trajectory.h:18