YAMS
Yet Another Mechanism System
Loading...
Searching...
No Matches
PivotConfig.hpp
Go to the documentation of this file.
1// Copyright (c) 2026 Yet Another Software Suite
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
4#pragma once
5
6#include <optional>
7#include <string>
8#include <wpi/units/angle.hpp>
9#include <wpi/units/angular_velocity.hpp>
10#include <wpi/units/moment_of_inertia.hpp>
11#include <wpi/util/Color.hpp>
12#include <wpi/util/Color8Bit.hpp>
13
15
17
26 public:
27 PivotConfig() = default;
28
29 // ---- Builder methods -------------------------------------------------------
30
37 PivotConfig& WithTelemetryName(const std::string& name);
38
45 PivotConfig& WithMinAngle(wpi::units::degree_t angle);
46
53 PivotConfig& WithMaxAngle(wpi::units::degree_t angle);
54
61 PivotConfig& WithSimColor(const wpi::util::Color8Bit& color);
62
71 m_mechanismPositionConfig = mechanismPositionConfig;
72 return *this;
73 }
74
75 // ---- Getters ---------------------------------------------------------------
76
78 std::string GetTelemetryName() const;
79
81 std::optional<wpi::units::degree_t> GetMinAngle() const;
82
84 std::optional<wpi::units::degree_t> GetMaxAngle() const;
85
87 wpi::util::Color8Bit GetSimColor() const;
88
90 const MechanismPositionConfig& GetMechanismPositionConfig() const { return m_mechanismPositionConfig; }
91
92 private:
93 std::string m_telemetryName;
94 std::optional<wpi::units::degree_t> m_minAngle;
95 std::optional<wpi::units::degree_t> m_maxAngle;
96 wpi::util::Color8Bit m_simColor{wpi::util::Color::GREEN};
97 // A pivot, such as a turret, turns in the XY plane unless given a MechanismPositionConfig, as in
98 // Java.
99 MechanismPositionConfig m_mechanismPositionConfig{
100 MechanismPositionConfig{}.WithMovementPlane(MechanismPositionConfig::Plane::XY)};
101};
102
103} // namespace yams::mechanisms::config
Definition MechanismPositionConfig.hpp:31
MechanismPositionConfig & WithMovementPlane(Plane plane)
Definition MechanismPositionConfig.hpp:76
Definition PivotConfig.hpp:25
PivotConfig & WithSimColor(const wpi::util::Color8Bit &color)
PivotConfig & WithMaxAngle(wpi::units::degree_t angle)
PivotConfig & WithMechanismPositionConfig(const MechanismPositionConfig &mechanismPositionConfig)
Definition PivotConfig.hpp:70
PivotConfig & WithTelemetryName(const std::string &name)
std::optional< wpi::units::degree_t > GetMinAngle() const
std::optional< wpi::units::degree_t > GetMaxAngle() const
const MechanismPositionConfig & GetMechanismPositionConfig() const
Definition PivotConfig.hpp:90
wpi::util::Color8Bit GetSimColor() const
PivotConfig & WithMinAngle(wpi::units::degree_t angle)
Definition ArmConfig.hpp:17