2025-Robot
Robot code for 2025 FRC season by Argos, FRC team #1756
Loading...
Searching...
No Matches
field_points.h
Go to the documentation of this file.
1
4
5#pragma once
6
8#include <frc/geometry/Pose2d.h>
9#include <frc/geometry/Translation2d.h>
10#include <frc/geometry/Translation3d.h>
11#include <frc/spline/Spline.h>
12#include <units/angle.h>
13#include <units/length.h>
14
15#include <vector>
16
17#include "measure_up.h"
18
20 // Field max x and y
21 constexpr auto fieldMaxY = 315.5975_in;
22 constexpr auto fieldMaxX = 651.2225_in;
23 constexpr auto fieldMiddleX = fieldMaxX / 2;
24} // namespace field_dimensions
25
26namespace utils {
27 // * Note this will only work on points contained in friendly half of field
31 constexpr frc::Translation3d ReflectFieldPoint(const frc::Translation3d source) {
32 return frc::Translation3d{source.X(), field_dimensions::fieldMaxY - source.Y(), source.Z()};
33 }
34
35 constexpr frc::Translation2d ReflectFieldPoint(const frc::Translation2d source) {
36 return frc::Translation2d{source.X(), field_dimensions::fieldMaxY - source.Y()};
37 }
38
39 constexpr units::angle::degree_t ReflectAngle(const units::angle::degree_t sourceAngle) {
40 return sourceAngle * units::scalar_t{-1};
41 }
42
43 template <class T>
44 std::vector<T> ReflectFieldPoint(const std::vector<T> source) {
45 std::vector<T> retVal;
46 retVal.reserve(source.size());
47 std::transform(
48 source.begin(), source.end(), std::back_inserter(retVal), [](T val) { return ReflectFieldPoint(val); });
49 return retVal;
50 }
51
52 constexpr frc::Spline<3>::ControlVector ReflectFieldPoint(const frc::Spline<3>::ControlVector source) {
53 return frc::Spline<3>::ControlVector{
54 .x{source.x}, .y{units::meter_t{field_dimensions::fieldMaxY}.to<double>() - source.y[0], -source.y[1]}};
55 }
56
57 frc::Pose2d ReflectFieldPoint(const frc::Pose2d source);
58
59 constexpr units::inch_t ReflectYLine(const units::inch_t source) {
60 return field_dimensions::fieldMaxY - source;
61 }
62} // namespace utils
63
64namespace field_points {
65 struct AprilTag {
66 int id;
67 frc::Translation3d pose;
68 units::degree_t yaw;
69 units::degree_t pitch;
70 };
71
72 namespace blue_alliance {
73 // Reference game_piece_positions in Docs directory for conventions
74 namespace game_pieces {} // namespace game_pieces
75
76 namespace april_tags_welded {
77 constexpr AprilTag rh_pickup{12, {33.51_in, 25.80_in, 58.50_in}, 54_deg, 0_deg};
78 constexpr AprilTag lh_pickup{13, {33.51_in, 291.20_in, 58.50_in}, 306_deg, 0_deg};
79 constexpr AprilTag blue_barge{14, {325.68_in, 241.64_in, 73.54_in}, 180_deg, 30_deg};
80 constexpr AprilTag red_barge{15, {325.68_in, 75.39_in, 73.54_in}, 180_deg, 30_deg};
81 constexpr AprilTag processor{16, {235.73_in, 0.15_in, 51.25_in}, 90_deg, 0_deg};
82 constexpr AprilTag reef_1{17, {160.39_in, 130.17_in, 12.13_in}, 240_deg, 0_deg};
83 constexpr AprilTag reef_2{18, {144.00_in, 158.50_in, 12.13_in}, 180_deg, 0_deg};
84 constexpr AprilTag reef_3{19, {160.39_in, 186.83_in, 12.13_in}, 120_deg, 0_deg};
85 constexpr AprilTag reef_4{20, {193.10_in, 186.83_in, 12.13_in}, 60_deg, 0_deg};
86 constexpr AprilTag reef_5{21, {209.49_in, 158.50_in, 12.13_in}, 0_deg, 0_deg};
87 constexpr AprilTag reef_6{22, {193.10_in, 130.17_in, 12.13_in}, 300_deg, 0_deg};
88 } // namespace april_tags_welded
89
90 namespace april_tags_andymark {
91 constexpr AprilTag rh_pickup{12, {33.91_in, 24.73_in, 58.5_in}, 54_deg, 0_deg};
92 constexpr AprilTag lh_pickup{13, {33.91_in, 291.9_in, 58.5_in}, 306_deg, 0_deg};
93 constexpr AprilTag blue_barge{14, {325.68_in, 241.44_in, 73.54_in}, 180_deg, 30_deg};
94 constexpr AprilTag red_barge{15, {325.68_in, 75.19_in, 73.54_in}, 180_deg, 30_deg};
95 constexpr AprilTag processor{16, {238.49_in, 0.42_in, 51.25_in}, 90_deg, 0_deg};
96 constexpr AprilTag reef_1{17, {160.39_in, 129.97_in, 12.13_in}, 240_deg, 0_deg};
97 constexpr AprilTag reef_2{18, {144.0_in, 158.3_in, 12.13_in}, 180_deg, 0_deg};
98 constexpr AprilTag reef_3{19, {160.39_in, 186.63_in, 12.13_in}, 120_deg, 0_deg};
99 constexpr AprilTag reef_4{20, {193.1_in, 186.63_in, 12.13_in}, 60_deg, 0_deg};
100 constexpr AprilTag reef_5{21, {209.49_in, 158.3_in, 12.13_in}, 0_deg, 0_deg};
101 constexpr AprilTag reef_6{22, {193.1_in, 129.97_in, 12.13_in}, 300_deg, 0_deg};
102 } // namespace april_tags_andymark
103 } // namespace blue_alliance
104
105 namespace red_alliance {
106 namespace game_pieces {} // namespace game_pieces
107
108 namespace april_tags_welded {
109 constexpr AprilTag lh_pickup{1, {657.37_in, 25.80_in, 58.50_in}, 126_deg, 0_deg};
110 constexpr AprilTag rh_pickup{2, {657.37_in, 291.20_in, 58.50_in}, 234_deg, 0_deg};
111 constexpr AprilTag processor{3, {455.15_in, 317.15_in, 51.25_in}, 270_deg, 0_deg};
112 constexpr AprilTag blue_barge{4, {365.20_in, 241.64_in, 73.54_in}, 0_deg, 30_deg};
113 constexpr AprilTag red_barge{5, {365.20_in, 75.39_in, 73.54_in}, 0_deg, 30_deg};
114 constexpr AprilTag reef_1{6, {530.49_in, 130.17_in, 12.13_in}, 300_deg, 0_deg};
115 constexpr AprilTag reef_2{7, {546.87_in, 158.50_in, 12.13_in}, 0_deg, 0_deg};
116 constexpr AprilTag reef_3{8, {530.49_in, 186.83_in, 12.13_in}, 60_deg, 0_deg};
117 constexpr AprilTag reef_4{9, {497.77_in, 186.83_in, 12.13_in}, 120_deg, 0_deg};
118 constexpr AprilTag reef_5{10, {481.39_in, 158.50_in, 12.13_in}, 180_deg, 0_deg};
119 constexpr AprilTag reef_6{11, {497.77_in, 130.17_in, 12.13_in}, 240_deg, 0_deg};
120 } // namespace april_tags_welded
121
122 namespace april_tags_andymark {
123 constexpr AprilTag lh_pickup{1, {656.98_in, 24.73_in, 58.5_in}, 126_deg, 0_deg};
124 constexpr AprilTag rh_pickup{2, {656.98_in, 291.9_in, 58.5_in}, 234_deg, 0_deg};
125 constexpr AprilTag processor{3, {452.4_in, 316.21_in, 51.25_in}, 270_deg, 0_deg};
126 constexpr AprilTag blue_barge{4, {365.2_in, 241.44_in, 73.54_in}, 0_deg, 30_deg};
127 constexpr AprilTag red_barge{5, {365.2_in, 75.19_in, 73.54_in}, 0_deg, 30_deg};
128 constexpr AprilTag reef_1{6, {530.49_in, 129.97_in, 12.13_in}, 300_deg, 0_deg};
129 constexpr AprilTag reef_2{7, {546.87_in, 158.3_in, 12.13_in}, 0_deg, 0_deg};
130 constexpr AprilTag reef_3{8, {530.49_in, 186.63_in, 12.13_in}, 60_deg, 0_deg};
131 constexpr AprilTag reef_4{9, {497.77_in, 186.63_in, 12.13_in}, 120_deg, 0_deg};
132 constexpr AprilTag reef_5{10, {481.39_in, 158.3_in, 12.13_in}, 180_deg, 0_deg};
133 constexpr AprilTag reef_6{11, {497.77_in, 129.97_in, 12.13_in}, 240_deg, 0_deg};
134 } // namespace april_tags_andymark
135 } // namespace red_alliance
136} // namespace field_points
Definition field_points.h:19
constexpr auto fieldMaxX
Definition field_points.h:22
constexpr auto fieldMaxY
Definition field_points.h:21
constexpr auto fieldMiddleX
Definition field_points.h:23
constexpr AprilTag reef_1
Definition field_points.h:96
constexpr AprilTag reef_3
Definition field_points.h:98
constexpr AprilTag processor
Definition field_points.h:95
constexpr AprilTag reef_4
Definition field_points.h:99
constexpr AprilTag reef_6
Definition field_points.h:101
constexpr AprilTag rh_pickup
Definition field_points.h:91
constexpr AprilTag reef_2
Definition field_points.h:97
constexpr AprilTag lh_pickup
Definition field_points.h:92
constexpr AprilTag blue_barge
Definition field_points.h:93
constexpr AprilTag reef_5
Definition field_points.h:100
constexpr AprilTag red_barge
Definition field_points.h:94
constexpr AprilTag processor
Definition field_points.h:81
constexpr AprilTag lh_pickup
Definition field_points.h:78
constexpr AprilTag reef_4
Definition field_points.h:85
constexpr AprilTag reef_5
Definition field_points.h:86
constexpr AprilTag reef_3
Definition field_points.h:84
constexpr AprilTag blue_barge
Definition field_points.h:79
constexpr AprilTag reef_1
Definition field_points.h:82
constexpr AprilTag reef_6
Definition field_points.h:87
constexpr AprilTag reef_2
Definition field_points.h:83
constexpr AprilTag rh_pickup
Definition field_points.h:77
constexpr AprilTag red_barge
Definition field_points.h:80
constexpr AprilTag reef_4
Definition field_points.h:131
constexpr AprilTag reef_3
Definition field_points.h:130
constexpr AprilTag reef_5
Definition field_points.h:132
constexpr AprilTag lh_pickup
Definition field_points.h:123
constexpr AprilTag red_barge
Definition field_points.h:127
constexpr AprilTag reef_1
Definition field_points.h:128
constexpr AprilTag processor
Definition field_points.h:125
constexpr AprilTag reef_6
Definition field_points.h:133
constexpr AprilTag blue_barge
Definition field_points.h:126
constexpr AprilTag reef_2
Definition field_points.h:129
constexpr AprilTag rh_pickup
Definition field_points.h:124
constexpr AprilTag reef_4
Definition field_points.h:117
constexpr AprilTag reef_3
Definition field_points.h:116
constexpr AprilTag rh_pickup
Definition field_points.h:110
constexpr AprilTag processor
Definition field_points.h:111
constexpr AprilTag reef_2
Definition field_points.h:115
constexpr AprilTag reef_1
Definition field_points.h:114
constexpr AprilTag blue_barge
Definition field_points.h:112
constexpr AprilTag lh_pickup
Definition field_points.h:109
constexpr AprilTag red_barge
Definition field_points.h:113
constexpr AprilTag reef_5
Definition field_points.h:118
constexpr AprilTag reef_6
Definition field_points.h:119
Definition field_points.h:64
Definition field_points.h:26
constexpr units::angle::degree_t ReflectAngle(const units::angle::degree_t sourceAngle)
Definition field_points.h:39
constexpr units::inch_t ReflectYLine(const units::inch_t source)
Definition field_points.h:59
constexpr frc::Translation3d ReflectFieldPoint(const frc::Translation3d source)
Reflects the point source over the middle of the field to get equivelent points accross the field.
Definition field_points.h:31
Definition field_points.h:65
units::degree_t yaw
Definition field_points.h:68
frc::Translation3d pose
Definition field_points.h:67
units::degree_t pitch
Definition field_points.h:69
int id
Definition field_points.h:66