2025-Robot
Robot code for 2025 FRC season by Argos, FRC team #1756
Loading...
Searching...
No Matches
position.h
Go to the documentation of this file.
1
4
5#pragma once
6
7#include <units/angle.h>
8#include <units/length.h>
9#include <units/math.h>
10
11#include "measure_up.h"
12
13struct Position {
14 units::inch_t elevator_height;
15 units::degree_t arm_angle;
16 units::degree_t wrist_angle;
17
18 [[nodiscard]] bool AlmostEqual(const Position other) {
19 return units::math::abs(elevator_height - other.elevator_height) < 0.3_in &&
20 units::math::abs(arm_angle - other.arm_angle) < 3.5_deg &&
21 units::math::abs(wrist_angle - other.wrist_angle) < 2_deg;
22 }
23};
24
25namespace setpoints {
27 .elevator_height = measure_up::elevator::elevator::minHeight, .arm_angle = 201_deg, .wrist_angle = 90_deg};
29 .elevator_height = measure_up::elevator::elevator::minHeight, .arm_angle = -12_deg, .wrist_angle = -90_deg};
30 constexpr Position coralStationRight{.elevator_height = 18_in, .arm_angle = 120_deg, .wrist_angle = 90_deg};
31 constexpr Position coralStationLeft{.elevator_height = 18_in, .arm_angle = 69_deg, .wrist_angle = -90_deg};
33 .elevator_height = measure_up::elevator::elevator::minHeight, .arm_angle = 133_deg, .wrist_angle = 90_deg};
35 .elevator_height = measure_up::elevator::elevator::minHeight, .arm_angle = 52_deg, .wrist_angle = -90_deg};
36 constexpr Position levelTwoRight{.elevator_height = 23_in, .arm_angle = 127_deg, .wrist_angle = 0_deg};
37 constexpr Position levelTwoLeft{.elevator_height = 23_in, .arm_angle = 63_deg, .wrist_angle = 0_deg};
38 constexpr Position levelThreeRight{.elevator_height = 38_in, .arm_angle = 125_deg, .wrist_angle = 0_deg};
39 constexpr Position levelThreeLeft{.elevator_height = 38_in, .arm_angle = 61_deg, .wrist_angle = 0_deg};
40 constexpr Position levelFourRight{.elevator_height = 59.5_in, .arm_angle = 118_deg, .wrist_angle = 0_deg};
41 constexpr Position levelFourLeft{.elevator_height = 59.5_in, .arm_angle = 69_deg, .wrist_angle = 0_deg};
42 constexpr Position levelFourCenter{.elevator_height = 61.25_in, .arm_angle = 90_deg, .wrist_angle = 0_deg};
43 constexpr Position stow{
44 .elevator_height = measure_up::elevator::elevator::minHeight, .arm_angle = 91_deg, .wrist_angle = 0_deg};
45} // namespace setpoints
46
47namespace algae {
48 constexpr Position algaeLowLeft{.elevator_height = 33.5_in, .arm_angle = 0_deg, .wrist_angle = -90_deg};
49 constexpr Position algaeLowRight{.elevator_height = 33.5_in, .arm_angle = 186_deg, .wrist_angle = 90_deg};
50 constexpr Position algaeHighLeft{.elevator_height = 49.5_in, .arm_angle = 0_deg, .wrist_angle = -90_deg};
51 constexpr Position algaeHighRight{.elevator_height = 49.5_in, .arm_angle = 186_deg, .wrist_angle = 90_deg};
52 constexpr Position algaePrepNetLeft{.elevator_height = 62_in, .arm_angle = 0_deg, .wrist_angle = -90_deg};
53 constexpr Position algaePrepNetRight{.elevator_height = 62_in, .arm_angle = 186_deg, .wrist_angle = 90_deg};
54
56 .elevator_height = measure_up::elevator::elevator::maxHeight, .arm_angle = 58_deg, .wrist_angle = -90_deg};
58 .elevator_height = measure_up::elevator::elevator::maxHeight, .arm_angle = 122_deg, .wrist_angle = 90_deg};
60 .elevator_height = measure_up::elevator::elevator::minHeight, .arm_angle = 0_deg, .wrist_angle = -90_deg};
62 .elevator_height = measure_up::elevator::elevator::minHeight, .arm_angle = 186_deg, .wrist_angle = 90_deg};
63} // namespace algae
64
65namespace internal {
66 constexpr Position lowLeft{.elevator_height = 0_in, .arm_angle = 5_deg, .wrist_angle = -90_deg};
67 constexpr Position lowRight{.elevator_height = 0_in, .arm_angle = 175_deg, .wrist_angle = 90_deg};
68 constexpr Position highLeft{.elevator_height = 0_in, .arm_angle = 70_deg, .wrist_angle = 0_deg};
69 constexpr Position highRight{.elevator_height = 0_in, .arm_angle = 110_deg, .wrist_angle = 0_deg};
70} // namespace internal
71
72enum class ArmPosition {
73 STOW,
74 LEFT_1,
76 LEFT_2,
78 LEFT_3,
80 LEFT_4,
83 RIGHT_1,
85 RIGHT_2,
87 RIGHT_3,
89 RIGHT_4,
93};
Definition position.h:47
constexpr Position algaeLowLeft
Definition position.h:48
constexpr Position algaeHighRight
Definition position.h:51
constexpr Position algaePrepNetLeft
Definition position.h:52
constexpr Position algaePrepNetRight
Definition position.h:53
constexpr Position algaeProcessorRight
Definition position.h:61
constexpr Position algaeNetLeft
Definition position.h:55
constexpr Position algaeLowRight
Definition position.h:49
constexpr Position algaeHighLeft
Definition position.h:50
constexpr Position algaeProcessorLeft
Definition position.h:59
constexpr Position algaeNetRight
Definition position.h:57
Definition position.h:65
constexpr Position lowLeft
Definition position.h:66
constexpr Position lowRight
Definition position.h:67
constexpr Position highLeft
Definition position.h:68
constexpr Position highRight
Definition position.h:69
constexpr auto maxHeight
Definition measure_up.h:45
constexpr auto minHeight
Definition measure_up.h:44
Definition position.h:25
constexpr Position coralStationRight
Definition position.h:30
constexpr Position levelTwoLeft
Definition position.h:37
constexpr Position levelTwoRight
Definition position.h:36
constexpr Position floorIntakeRight
Definition position.h:26
constexpr Position levelFourRight
Definition position.h:40
constexpr Position coralStationLeft
Definition position.h:31
constexpr Position stow
Definition position.h:43
constexpr Position levelFourLeft
Definition position.h:41
constexpr Position levelOneRight
Definition position.h:32
constexpr Position levelThreeRight
Definition position.h:38
constexpr Position levelThreeLeft
Definition position.h:39
constexpr Position levelFourCenter
Definition position.h:42
constexpr Position floorIntakeLeft
Definition position.h:28
constexpr Position levelOneLeft
Definition position.h:34
ArmPosition
Definition position.h:72
Definition position.h:13
units::degree_t arm_angle
Definition position.h:15
bool AlmostEqual(const Position other)
Definition position.h:18
units::degree_t wrist_angle
Definition position.h:16
units::inch_t elevator_height
Definition position.h:14