Brick
Toggle main menu visibility
Loading...
Searching...
No Matches
centripetal_acceleration_constraint.h
1
#pragma once
2
3
#include <memory>
4
5
#include "core/math/trajectory/constraints/trajectory_constraint.h"
6
#include "core/math/units.h"
7
8
using namespace
units::literals
;
9
10
/**
11
* @brief Trajectory constraint that limits maximum velocity to prevent excessive centripetal
12
* acceleration.
13
*/
14
class
CentripetalAccelerationConstraint
:
public
TrajectoryConstraint {
15
public
:
16
/**
17
* @brief Constructs a CentripetalAccelerationConstraint.
18
* @param max_centripetal_acceleration Maximum allowed centripetal acceleration.
19
*/
20
explicit
CentripetalAccelerationConstraint
(units::Acceleration max_centripetal_acceleration)
21
: max_centripetal_acceleration_(max_centripetal_acceleration) {}
22
23
/**
24
* @brief Computes maximum allowed velocity based on path curvature and centripetal acceleration
25
* limits.
26
* @param pose 2D position and orientation.
27
* @param curvature Path curvature in rad/meter.
28
* @param velocity Candidate linear velocity.
29
* @return Constrained units::Velocity limit.
30
*/
31
units::Velocity
max_velocity
(
32
const
Pose2d
& pose, units::Curvature curvature, units::Velocity velocity
33
)
const override
{
34
if
(units::abs(curvature) < 1e-9_radpm) {
35
return
units::Velocity(std::numeric_limits<double>::max());
36
}
37
return
sqrt(max_centripetal_acceleration_ / units::abs(curvature / 1_rad));
38
}
39
40
/**
41
* @brief Computes minimum and maximum allowed linear accelerations.
42
* @param pose 2D position and orientation.
43
* @param curvature Path curvature in rad/meter.
44
* @param speed Current scalar speed.
45
* @return MinMax acceleration bounds struct.
46
*/
47
MinMax
min_max_acceleration
(
48
const
Pose2d
& pose, units::Curvature curvature, units::Velocity speed
49
)
const override
{
50
return
{};
51
}
52
53
/**
54
* @brief Creates an independent copy of this constraint.
55
* @return Unique pointer to cloned CentripetalAccelerationConstraint instance.
56
*/
57
std::unique_ptr<TrajectoryConstraint>
clone
()
const override
{
58
return
std::unique_ptr<TrajectoryConstraint>(
new
CentripetalAccelerationConstraint
(*
this
));
59
}
60
61
private
:
62
units::Acceleration max_centripetal_acceleration_;
///< Maximum centripetal acceleration
63
};
CentripetalAccelerationConstraint::CentripetalAccelerationConstraint
CentripetalAccelerationConstraint(units::Acceleration max_centripetal_acceleration)
Constructs a CentripetalAccelerationConstraint.
Definition
centripetal_acceleration_constraint.h:20
CentripetalAccelerationConstraint::min_max_acceleration
MinMax min_max_acceleration(const Pose2d &pose, units::Curvature curvature, units::Velocity speed) const override
Computes minimum and maximum allowed linear accelerations.
Definition
centripetal_acceleration_constraint.h:47
CentripetalAccelerationConstraint::max_velocity
units::Velocity max_velocity(const Pose2d &pose, units::Curvature curvature, units::Velocity velocity) const override
Computes maximum allowed velocity based on path curvature and centripetal acceleration limits.
Definition
centripetal_acceleration_constraint.h:31
CentripetalAccelerationConstraint::clone
std::unique_ptr< TrajectoryConstraint > clone() const override
Creates an independent copy of this constraint.
Definition
centripetal_acceleration_constraint.h:57
Pose2d
Definition
pose2d.h:21
units::literals
Definition
units.h:691
TrajectoryConstraint::MinMax
Struct representing minimum and maximum allowed linear accelerations.
Definition
trajectory_constraint.h:29
core
math
trajectory
constraints
centripetal_acceleration_constraint.h
Generated by
1.18.0