2025-Robot
Robot code for 2025 FRC season by Argos, FRC team #1756
Loading...
Searching...
No Matches
sensor_conversions.h
Go to the documentation of this file.
1
4
5#pragma once
6#include <units/acceleration.h>
7#include <units/angle.h>
8#include <units/angular_velocity.h>
9#include <units/length.h>
10#include <units/time.h>
11#include <units/velocity.h>
12
13#include <numbers>
14
15#include "custom_units.h"
16
18 namespace swerve_drive {
19 namespace turn {
20 constexpr double sensorConversionFactor = 1;
21 constexpr units::angle::turn_t ToSensorUnit(const units::degree_t degrees) {
22 return degrees / sensorConversionFactor;
23 }
24 constexpr units::degree_t ToAngle(const units::angle::turn_t sensorunit) {
25 return sensorunit * sensorConversionFactor;
26 }
27 constexpr double turnGearRatio = 150.0 / 7.1;
28 constexpr units::turn_t MotorToWheelAngle(const units::angle::turn_t motorPosition) {
29 return motorPosition / turnGearRatio;
30 }
31 constexpr units::turn_t WheelToMotorAngle(const units::angle::turn_t wheelPosition) {
32 return wheelPosition * turnGearRatio;
33 }
34 } // namespace turn
35 namespace drive {
36 constexpr auto wheelDiameter = 4.0_in / units::angle::turn_t{1};
37 constexpr auto wheelCircumference = wheelDiameter * std::numbers::pi;
38 constexpr auto driveGearRatio = 6.12;
39
40 constexpr units::inch_t ToDistance(const units::angle::turn_t sensorunit) {
41 return wheelCircumference * (sensorunit / driveGearRatio);
42 }
43 constexpr units::angle::turn_t ToSensorPosition(const units::inch_t distance) {
44 return (distance / wheelCircumference) * driveGearRatio;
45 }
46
47 constexpr units::inches_per_second_t ToVelocity(
48 const units::angular_velocity::revolutions_per_minute_t sensorVelocity) {
49 return ToDistance(sensorVelocity * units::second_t{1}) / units::second_t{1};
50 }
51 constexpr units::angular_velocity::revolutions_per_minute_t ToSensorVelocity(
52 const units::inches_per_second_t velocity) {
53 return ToSensorPosition(velocity * units::second_t{1}) / units::second_t{1};
54 }
55 } // namespace drive
56 } // namespace swerve_drive
57 namespace elevator {
58 namespace elevator {
59 constexpr auto sensorConversionFactor = 1_in / 0.625_tr;
60 constexpr units::inch_t ToHeight(const units::angle::turn_t sensorUnit) {
61 return sensorConversionFactor * sensorUnit;
62 }
63
64 constexpr units::angle::turn_t ToSensorUnit(const units::inch_t height) {
65 return height / sensorConversionFactor;
66 }
67 } // namespace elevator
68 namespace arm {
69 constexpr auto sensorConversionFactor = 1.0; // Handled by motor config ratios
70 constexpr units::angle::turn_t ToSensorUnit(const units::degree_t degrees) {
71 return degrees / sensorConversionFactor;
72 }
73 constexpr units::degree_t ToAngle(const units::angle::turn_t sensorUnit) {
74 return sensorUnit * sensorConversionFactor;
75 }
76 } // namespace arm
77 namespace wrist {
78 constexpr double sensorConversionFactor = 1;
79
80 constexpr units::degree_t ToAngle(const units::angle::turn_t sensorUnit) {
81 return sensorUnit * sensorConversionFactor;
82 }
83
84 constexpr units::angle::turn_t ToSensorUnit(const units::degree_t angle) {
85 return angle / sensorConversionFactor;
86 }
87 } // namespace wrist
88 } // namespace elevator
89 namespace climber {
90 constexpr auto sensorConversionFactor = 1.0; // Handled by motor config ratios
91 constexpr units::angle::turn_t ToSensorUnit(const units::degree_t degrees) {
92 return degrees / sensorConversionFactor;
93 }
94 constexpr units::degree_t ToAngle(const units::angle::turn_t sensorUnit) {
95 return sensorUnit * sensorConversionFactor;
96 }
97
98 } // namespace climber
99} // namespace sensor_conversions
constexpr auto sensorConversionFactor
Definition sensor_conversions.h:90
constexpr units::angle::turn_t ToSensorUnit(const units::degree_t degrees)
Definition sensor_conversions.h:91
constexpr units::degree_t ToAngle(const units::angle::turn_t sensorUnit)
Definition sensor_conversions.h:94
constexpr units::angle::turn_t ToSensorUnit(const units::degree_t degrees)
Definition sensor_conversions.h:70
constexpr auto sensorConversionFactor
Definition sensor_conversions.h:69
constexpr units::degree_t ToAngle(const units::angle::turn_t sensorUnit)
Definition sensor_conversions.h:73
constexpr units::inch_t ToHeight(const units::angle::turn_t sensorUnit)
Definition sensor_conversions.h:60
constexpr auto sensorConversionFactor
Definition sensor_conversions.h:59
constexpr units::angle::turn_t ToSensorUnit(const units::inch_t height)
Definition sensor_conversions.h:64
constexpr double sensorConversionFactor
multiply to convert raw sensor units to module degrees
Definition sensor_conversions.h:78
constexpr units::angle::turn_t ToSensorUnit(const units::degree_t angle)
Definition sensor_conversions.h:84
constexpr units::degree_t ToAngle(const units::angle::turn_t sensorUnit)
Definition sensor_conversions.h:80
constexpr units::angular_velocity::revolutions_per_minute_t ToSensorVelocity(const units::inches_per_second_t velocity)
Definition sensor_conversions.h:51
constexpr auto wheelCircumference
Definition sensor_conversions.h:37
constexpr units::angle::turn_t ToSensorPosition(const units::inch_t distance)
Definition sensor_conversions.h:43
constexpr units::inches_per_second_t ToVelocity(const units::angular_velocity::revolutions_per_minute_t sensorVelocity)
Definition sensor_conversions.h:47
constexpr auto wheelDiameter
Definition sensor_conversions.h:36
constexpr units::inch_t ToDistance(const units::angle::turn_t sensorunit)
Definition sensor_conversions.h:40
constexpr auto driveGearRatio
Definition sensor_conversions.h:38
constexpr units::turn_t MotorToWheelAngle(const units::angle::turn_t motorPosition)
Definition sensor_conversions.h:28
constexpr units::degree_t ToAngle(const units::angle::turn_t sensorunit)
Definition sensor_conversions.h:24
constexpr double sensorConversionFactor
multiply to convert raw sensor units to module degrees
Definition sensor_conversions.h:20
constexpr double turnGearRatio
Definition sensor_conversions.h:27
constexpr units::turn_t WheelToMotorAngle(const units::angle::turn_t wheelPosition)
Definition sensor_conversions.h:31
constexpr units::angle::turn_t ToSensorUnit(const units::degree_t degrees)
Definition sensor_conversions.h:21
Definition sensor_conversions.h:17