Brick
Toggle main menu visibility
Loading...
Searching...
No Matches
trajectory_constraint.h
1
#pragma once
2
3
#include <limits>
4
#include <memory>
5
6
#include "core/math/geometry/pose2d.h"
7
#include "core/math/units.h"
8
9
using namespace
units::literals
;
10
11
/**
12
* @brief Interface for defining physical trajectory velocity and acceleration constraints.
13
*/
14
class
TrajectoryConstraint {
15
public
:
16
TrajectoryConstraint() =
default
;
17
18
TrajectoryConstraint(
const
TrajectoryConstraint&) =
default
;
19
TrajectoryConstraint& operator=(
const
TrajectoryConstraint&) =
default
;
20
21
TrajectoryConstraint(TrajectoryConstraint&&) =
default
;
22
TrajectoryConstraint& operator=(TrajectoryConstraint&&) =
default
;
23
24
virtual
~TrajectoryConstraint() =
default
;
25
26
/**
27
* @brief Struct representing minimum and maximum allowed linear accelerations.
28
*/
29
struct
MinMax
{
30
/**
31
* @brief Constructs MinMax with explicit minimum and maximum acceleration bounds.
32
* @param min_acceleration Lower acceleration limit.
33
* @param max_acceleration Upper acceleration limit.
34
*/
35
MinMax
(units::Acceleration
min_acceleration
, units::Acceleration
max_acceleration
)
36
:
min_acceleration
(
min_acceleration
),
max_acceleration
(
max_acceleration
) {}
37
38
/** @brief Default constructor setting unbounded limits [-Inf, +Inf]. */
39
MinMax
()
40
:
min_acceleration
(-std::numeric_limits<double>::max()),
41
max_acceleration
(std::numeric_limits<double>::max()) {}
42
43
units::Acceleration
min_acceleration
{
44
-std::numeric_limits<double>::max()
45
};
///< Lower acceleration limit
46
units::Acceleration
max_acceleration
{
47
std::numeric_limits<double>::max()
48
};
///< Upper acceleration limit
49
};
50
51
/**
52
* @brief Computes maximum allowed velocity at a given pose and path curvature.
53
* @param pose 2D position and orientation.
54
* @param curvature Path curvature in rad/meter.
55
* @param velocity Candidate linear velocity.
56
* @return Constrained units::Velocity limit.
57
*/
58
virtual
units::Velocity
max_velocity
(
59
const
Pose2d
& pose, units::Curvature curvature, units::Velocity velocity
60
)
const
= 0;
61
62
/**
63
* @brief Computes minimum and maximum allowed linear accelerations at a given pose, curvature,
64
* and speed.
65
* @param pose 2D position and orientation.
66
* @param curvature Path curvature in rad/meter.
67
* @param speed Current scalar speed.
68
* @return MinMax acceleration bounds struct.
69
*/
70
virtual
MinMax
min_max_acceleration
(
71
const
Pose2d
& pose, units::Curvature curvature, units::Velocity speed
72
)
const
= 0;
73
74
/**
75
* @brief Creates an independent copy of this constraint.
76
* @return Unique pointer to cloned TrajectoryConstraint instance.
77
*/
78
virtual
std::unique_ptr<TrajectoryConstraint>
clone
()
const
= 0;
79
};
Pose2d
Definition
pose2d.h:21
TrajectoryConstraint::clone
virtual std::unique_ptr< TrajectoryConstraint > clone() const =0
Creates an independent copy of this constraint.
TrajectoryConstraint::min_max_acceleration
virtual MinMax min_max_acceleration(const Pose2d &pose, units::Curvature curvature, units::Velocity speed) const =0
Computes minimum and maximum allowed linear accelerations at a given pose, curvature,...
TrajectoryConstraint::max_velocity
virtual units::Velocity max_velocity(const Pose2d &pose, units::Curvature curvature, units::Velocity velocity) const =0
Computes maximum allowed velocity at a given pose and path curvature.
units::literals
Definition
units.h:691
TrajectoryConstraint::MinMax
Struct representing minimum and maximum allowed linear accelerations.
Definition
trajectory_constraint.h:29
TrajectoryConstraint::MinMax::max_acceleration
units::Acceleration max_acceleration
Upper acceleration limit.
Definition
trajectory_constraint.h:46
TrajectoryConstraint::MinMax::MinMax
MinMax()
Default constructor setting unbounded limits [-Inf, +Inf].
Definition
trajectory_constraint.h:39
TrajectoryConstraint::MinMax::MinMax
MinMax(units::Acceleration min_acceleration, units::Acceleration max_acceleration)
Constructs MinMax with explicit minimum and maximum acceleration bounds.
Definition
trajectory_constraint.h:35
TrajectoryConstraint::MinMax::min_acceleration
units::Acceleration min_acceleration
Lower acceleration limit.
Definition
trajectory_constraint.h:43
core
math
trajectory
constraints
trajectory_constraint.h
Generated by
1.18.0