PathPlannerLib
Loading...
Searching...
No Matches
PathConstraints.h
1#pragma once
2
3#include <units/velocity.h>
4#include <units/acceleration.h>
5#include <units/angular_velocity.h>
6#include <units/angular_acceleration.h>
7#include <units/voltage.h>
8#include <wpi/json.h>
9#include <limits>
10
11namespace pathplanner {
13public:
24 constexpr PathConstraints(units::meters_per_second_t maxVel,
25 units::meters_per_second_squared_t maxAccel,
26 units::radians_per_second_t maxAngularVel,
27 units::radians_per_second_squared_t maxAngularAccel,
28 units::volt_t nominalVoltage = 12_V, bool unlimited = false) : m_maxVelocity(
29 maxVel), m_maxAcceleration(maxAccel), m_maxAngularVelocity(
30 maxAngularVel), m_maxAngularAcceleration(maxAngularAccel), m_nominalVoltage(
31 nominalVoltage), m_unlimited(unlimited) {
32 }
33
40 static PathConstraints fromJson(const wpi::json &json);
41
49 units::volt_t nominalVoltage) {
50 double inf = std::numeric_limits<double>::infinity();
51 return PathConstraints(units::meters_per_second_t { inf },
52 units::meters_per_second_squared_t { inf },
53 units::radians_per_second_t { inf },
54 units::radians_per_second_squared_t { inf }, nominalVoltage,
55 true);
56 }
57
63 constexpr units::meters_per_second_t getMaxVelocity() const {
64 return m_maxVelocity;
65 }
66
72 constexpr units::meters_per_second_squared_t getMaxAcceleration() const {
73 return m_maxAcceleration;
74 }
75
81 constexpr units::radians_per_second_t getMaxAngularVelocity() const {
82 return m_maxAngularVelocity;
83 }
84
90 constexpr units::radians_per_second_squared_t getMaxAngularAcceleration() const {
91 return m_maxAngularAcceleration;
92 }
93
99 constexpr units::volt_t getNominalVoltage() const {
100 return m_nominalVoltage;
101 }
102
103 constexpr bool isUnlimited() const {
104 return m_unlimited;
105 }
106
107 bool operator==(const PathConstraints &other) const {
108 return std::abs(m_maxVelocity() - other.m_maxVelocity()) < 1E-9
109 && std::abs(m_maxAcceleration() - other.m_maxAcceleration())
110 < 1E-9
111 && std::abs(
112 m_maxAngularVelocity() - other.m_maxAngularVelocity())
113 < 1E-9
114 && std::abs(
115 m_maxAngularAcceleration()
116 - other.m_maxAngularAcceleration()) < 1E-9
117 && std::abs(m_nominalVoltage() - other.m_nominalVoltage())
118 < 1E-9 && m_unlimited == other.m_unlimited;
119 }
120
121private:
122 units::meters_per_second_t m_maxVelocity;
123 units::meters_per_second_squared_t m_maxAcceleration;
124 units::radians_per_second_t m_maxAngularVelocity;
125 units::radians_per_second_squared_t m_maxAngularAcceleration;
126 units::volt_t m_nominalVoltage;
127 bool m_unlimited;
128};
129}
Definition: PathConstraints.h:12
static constexpr PathConstraints unlimitedConstraints(units::volt_t nominalVoltage)
Definition: PathConstraints.h:48
constexpr units::meters_per_second_t getMaxVelocity() const
Definition: PathConstraints.h:63
constexpr units::volt_t getNominalVoltage() const
Definition: PathConstraints.h:99
static PathConstraints fromJson(const wpi::json &json)
Definition: PathConstraints.cpp:6
constexpr PathConstraints(units::meters_per_second_t maxVel, units::meters_per_second_squared_t maxAccel, units::radians_per_second_t maxAngularVel, units::radians_per_second_squared_t maxAngularAccel, units::volt_t nominalVoltage=12_V, bool unlimited=false)
Definition: PathConstraints.h:24
constexpr units::radians_per_second_squared_t getMaxAngularAcceleration() const
Definition: PathConstraints.h:90
constexpr units::radians_per_second_t getMaxAngularVelocity() const
Definition: PathConstraints.h:81
constexpr units::meters_per_second_squared_t getMaxAcceleration() const
Definition: PathConstraints.h:72