PathPlannerLib
Loading...
Searching...
No Matches
PointTowardsZone.h
1#pragma once
2
3#include <wpi/json.h>
4#include <frc/geometry/Translation2d.h>
5#include <frc/geometry/Rotation2d.h>
6#include <string>
7#include "pathplanner/lib/util/FlippingUtil.h"
8#include "pathplanner/lib/util/JSONUtil.h"
9
10namespace pathplanner {
12public:
24 PointTowardsZone(std::string name, frc::Translation2d targetPosition,
25 frc::Rotation2d rotationOffset, double minWaypointRelativePos,
26 double maxWaypointRelativePos) : m_name(name), m_targetPos(
27 targetPosition), m_rotationOffset(rotationOffset), m_minPos(
28 minWaypointRelativePos), m_maxPos(maxWaypointRelativePos) {
29 }
30
39 PointTowardsZone(std::string name, frc::Translation2d targetPosition,
40 double minWaypointRelativePos, double maxWaypointRelativePos) : PointTowardsZone(
41 name, targetPosition, frc::Rotation2d(), minWaypointRelativePos,
42 maxWaypointRelativePos) {
43 }
44
51 static inline PointTowardsZone fromJson(const wpi::json &json) {
52 std::string name = json.at("name").get<std::string>();
53 frc::Translation2d targetPos = JSONUtil::translation2dFromJson(
54 json.at("fieldPosition"));
55 frc::Rotation2d rotationOffset = frc::Rotation2d(
56 units::degree_t { json.at("rotationOffset").get<double>() });
57 double minPos = json.at("minWaypointRelativePos").get<double>();
58 double maxPos = json.at("maxWaypointRelativePos").get<double>();
59 return PointTowardsZone(name, targetPos, rotationOffset, minPos, maxPos);
60 }
61
62 constexpr const std::string& getName() {
63 return m_name;
64 }
65
71 constexpr frc::Translation2d& getTargetPosition() {
72 return m_targetPos;
73 }
74
80 constexpr frc::Rotation2d& getRotationOffset() {
81 return m_rotationOffset;
82 }
83
89 constexpr double getMinWaypointRelativePos() const {
90 return m_minPos;
91 }
92
98 constexpr double getMaxWaypointRelativePos() const {
99 return m_maxPos;
100 }
101
102 inline PointTowardsZone flip() const {
103 return PointTowardsZone(m_name,
104 FlippingUtil::flipFieldPosition(m_targetPos), m_rotationOffset,
105 m_minPos, m_maxPos);
106 }
107
108 inline bool operator==(const PointTowardsZone &other) const {
109 return m_name == other.m_name
110 && std::abs(m_minPos - other.m_minPos) < 1E-9
111 && std::abs(m_maxPos - other.m_maxPos) < 1E-9
112 && m_targetPos == other.m_targetPos
113 && m_rotationOffset == other.m_rotationOffset;
114 }
115
116private:
117 std::string m_name;
118 frc::Translation2d m_targetPos;
119 frc::Rotation2d m_rotationOffset;
120 double m_minPos;
121 double m_maxPos;
122};
123}
static frc::Translation2d flipFieldPosition(const frc::Translation2d &pos)
Definition: FlippingUtil.h:26
Definition: PointTowardsZone.h:11
PointTowardsZone(std::string name, frc::Translation2d targetPosition, frc::Rotation2d rotationOffset, double minWaypointRelativePos, double maxWaypointRelativePos)
Definition: PointTowardsZone.h:24
static PointTowardsZone fromJson(const wpi::json &json)
Definition: PointTowardsZone.h:51
PointTowardsZone(std::string name, frc::Translation2d targetPosition, double minWaypointRelativePos, double maxWaypointRelativePos)
Definition: PointTowardsZone.h:39
constexpr double getMinWaypointRelativePos() const
Definition: PointTowardsZone.h:89
constexpr double getMaxWaypointRelativePos() const
Definition: PointTowardsZone.h:98
constexpr frc::Translation2d & getTargetPosition()
Definition: PointTowardsZone.h:71
constexpr frc::Rotation2d & getRotationOffset()
Definition: PointTowardsZone.h:80