RIT VEXU Core API
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
8using namespace units::literals;
9
14class CentripetalAccelerationConstraint : public TrajectoryConstraint {
15 public:
20 explicit CentripetalAccelerationConstraint(units::Acceleration max_centripetal_acceleration)
21 : max_centripetal_acceleration_(max_centripetal_acceleration) {}
22
31 units::Velocity max_velocity(const Pose2d& pose, units::Curvature curvature,
32 units::Velocity velocity) const override {
33 if (units::abs(curvature) < 1e-9_radpm) {
34 return units::Velocity(std::numeric_limits<double>::max());
35 }
36 return sqrt(max_centripetal_acceleration_ / units::abs(curvature / 1_rad));
37 }
38
46 MinMax min_max_acceleration(const Pose2d& pose, units::Curvature curvature,
47 units::Velocity speed) const override {
48 return {};
49 }
50
55 std::unique_ptr<TrajectoryConstraint> clone() const override {
56 return std::unique_ptr<TrajectoryConstraint>(new CentripetalAccelerationConstraint(*this));
57 }
58
59 private:
60 units::Acceleration max_centripetal_acceleration_;
61};
CentripetalAccelerationConstraint(units::Acceleration max_centripetal_acceleration)
Constructs a CentripetalAccelerationConstraint.
Definition centripetal_acceleration_constraint.h:20
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:46
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
std::unique_ptr< TrajectoryConstraint > clone() const override
Creates an independent copy of this constraint.
Definition centripetal_acceleration_constraint.h:55
Definition pose2d.h:21
Struct representing minimum and maximum allowed linear accelerations.
Definition trajectory_constraint.h:29