Brick
Loading...
Searching...
No Matches
max_velocity_constraint.h
1#pragma once
2
3#include "core/math/trajectory/constraints/trajectory_constraint.h"
4#include "core/math/units.h"
5
6using namespace units::literals;
7
8/**
9 * @brief Trajectory constraint that enforces a strict upper limit on velocity.
10 */
11class MaxVelocityConstraint : public TrajectoryConstraint {
12 public:
13 /**
14 * @brief Constructs a MaxVelocityConstraint.
15 * @param max_velocity Maximum allowed linear velocity.
16 */
17 explicit MaxVelocityConstraint(units::Velocity max_velocity)
18 : max_velocity_(units::abs(max_velocity)) {}
19
20 /**
21 * @brief Computes maximum allowed velocity.
22 * @param pose 2D position and orientation.
23 * @param curvature Path curvature in rad/meter.
24 * @param velocity Candidate linear velocity.
25 * @return Constrained units::Velocity limit.
26 */
27 units::Velocity max_velocity(
28 const Pose2d& pose, units::Curvature curvature, units::Velocity velocity
29 ) const override {
30 return max_velocity_;
31 }
32
33 /**
34 * @brief Computes minimum and maximum allowed linear accelerations.
35 * @param pose 2D position and orientation.
36 * @param curvature Path curvature in rad/meter.
37 * @param speed Current scalar speed.
38 * @return MinMax acceleration bounds struct.
39 */
41 const Pose2d& pose, units::Curvature curvature, units::Velocity speed
42 ) const override {
43 return {};
44 }
45
46 /**
47 * @brief Creates an independent copy of this constraint.
48 * @return Unique pointer to cloned MaxVelocityConstraint instance.
49 */
50 std::unique_ptr<TrajectoryConstraint> clone() const override {
51 return std::unique_ptr<TrajectoryConstraint>(new MaxVelocityConstraint(*this));
52 }
53
54 private:
55 units::Velocity max_velocity_; ///< Maximum allowed linear velocity
56};
std::unique_ptr< TrajectoryConstraint > clone() const override
Creates an independent copy of this constraint.
Definition max_velocity_constraint.h:50
MinMax min_max_acceleration(const Pose2d &pose, units::Curvature curvature, units::Velocity speed) const override
Computes minimum and maximum allowed linear accelerations.
Definition max_velocity_constraint.h:40
MaxVelocityConstraint(units::Velocity max_velocity)
Constructs a MaxVelocityConstraint.
Definition max_velocity_constraint.h:17
units::Velocity max_velocity(const Pose2d &pose, units::Curvature curvature, units::Velocity velocity) const override
Computes maximum allowed velocity.
Definition max_velocity_constraint.h:27
Definition pose2d.h:21
Definition units.h:691
Definition units.h:12
Struct representing minimum and maximum allowed linear accelerations.
Definition trajectory_constraint.h:29