RIT VEXU Core API
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
9using namespace units::literals;
10
14class 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
29 struct MinMax {
37
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 units::Acceleration max_acceleration{
46 std::numeric_limits<double>::max()};
47 };
48
56 virtual units::Velocity max_velocity(const Pose2d& pose, units::Curvature curvature,
57 units::Velocity velocity) const = 0;
58
67 virtual MinMax min_max_acceleration(const Pose2d& pose, units::Curvature curvature,
68 units::Velocity speed) const = 0;
69
74 virtual std::unique_ptr<TrajectoryConstraint> clone() const = 0;
75};
Definition pose2d.h:21
virtual std::unique_ptr< TrajectoryConstraint > clone() const =0
Creates an independent copy of this constraint.
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,...
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.
Struct representing minimum and maximum allowed linear accelerations.
Definition trajectory_constraint.h:29
units::Acceleration max_acceleration
Upper acceleration limit.
Definition trajectory_constraint.h:45
MinMax()
Default constructor setting unbounded limits [-Inf, +Inf].
Definition trajectory_constraint.h:39
MinMax(units::Acceleration min_acceleration, units::Acceleration max_acceleration)
Constructs MinMax with explicit minimum and maximum acceleration bounds.
Definition trajectory_constraint.h:35
units::Acceleration min_acceleration
Lower acceleration limit.
Definition trajectory_constraint.h:43