YAMS
Yet Another Mechanism System
Loading...
Searching...
No Matches
Elevator.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 <functional>
7#include <optional>
8#include <string>
9#include <vector>
10#include <wpi/commands2/CommandPtr.hpp>
11#include <wpi/commands2/button/Trigger.hpp>
12#include <wpi/math/geometry/Pose3d.hpp>
13#include <wpi/simulation/ElevatorSim.hpp>
14#include <wpi/smartdashboard/MechanismLigament2d.hpp>
15#include <wpi/units/length.hpp>
16
20
22
74 public:
82
83 // ---- SmartMechanism overrides ---------------------------------------------
84
86 void SimIterate() override;
87
89 void UpdateTelemetry() override;
90
92 void VisualizationUpdate() override;
93
95 std::string GetName() const override;
96
97 // ---- SmartPositionalMechanism overrides -----------------------------------
98
105 wpi::cmd::Trigger Max() override;
106
113 wpi::cmd::Trigger Min() override;
114
115 // ---- Elevator-specific interface ------------------------------------------
116
123 wpi::cmd::CommandPtr Run(wpi::units::meter_t height);
124
131 wpi::cmd::CommandPtr Run(std::function<wpi::units::meter_t()> height);
132
140 wpi::cmd::CommandPtr RunTo(wpi::units::meter_t height,
141 wpi::units::meter_t tolerance = wpi::units::meter_t{0.01});
142
152 wpi::cmd::CommandPtr RunTo(std::function<wpi::units::meter_t()> height,
153 wpi::units::meter_t tolerance = wpi::units::meter_t{0.01});
154
160 wpi::units::meter_t GetHeight() const;
161
168 wpi::cmd::Trigger Gte(wpi::units::meter_t height);
169
176 wpi::cmd::Trigger Lte(wpi::units::meter_t height);
177
185 wpi::cmd::Trigger Between(wpi::units::meter_t start, wpi::units::meter_t end);
186
194 wpi::cmd::Trigger IsNear(wpi::units::meter_t height,
195 wpi::units::meter_t within = wpi::units::meter_t{0.01});
196
203
211 wpi::math::Pose3d GetPose3d() const override;
212
225 std::vector<wpi::math::Pose3d> GetCascadePose3d() const;
226
245 std::vector<wpi::math::Pose3d> GetContinuousPose3d(bool carriageFirst) const;
246
252 void SetHeight(wpi::units::meter_t height);
253
254
255 private:
256 config::ElevatorConfig* m_elevatorConfig{nullptr};
257 std::string m_name{"Elevator"};
258 std::optional<wpi::sim::ElevatorSim> m_elevatorSim;
259 wpi::MechanismLigament2d* m_setpointLigament{nullptr};
260};
261
262} // namespace yams::mechanisms::positional
Definition ElevatorConfig.hpp:26
Definition Elevator.hpp:73
wpi::math::Pose3d GetPose3d() const override
wpi::cmd::Trigger Lte(wpi::units::meter_t height)
wpi::units::meter_t GetHeight() const
Elevator(config::ElevatorConfig *config, motorcontrollers::SmartMotorController *smc)
wpi::cmd::Trigger Max() override
wpi::cmd::CommandPtr Run(std::function< wpi::units::meter_t()> height)
wpi::cmd::Trigger Gte(wpi::units::meter_t height)
const config::ElevatorConfig & GetConfig() const
wpi::cmd::CommandPtr RunTo(wpi::units::meter_t height, wpi::units::meter_t tolerance=wpi::units::meter_t{0.01})
void SetHeight(wpi::units::meter_t height)
wpi::cmd::CommandPtr RunTo(std::function< wpi::units::meter_t()> height, wpi::units::meter_t tolerance=wpi::units::meter_t{0.01})
wpi::cmd::Trigger IsNear(wpi::units::meter_t height, wpi::units::meter_t within=wpi::units::meter_t{0.01})
std::string GetName() const override
wpi::cmd::Trigger Between(wpi::units::meter_t start, wpi::units::meter_t end)
wpi::cmd::CommandPtr Run(wpi::units::meter_t height)
wpi::cmd::Trigger Min() override
std::vector< wpi::math::Pose3d > GetCascadePose3d() const
std::vector< wpi::math::Pose3d > GetContinuousPose3d(bool carriageFirst) const
Definition SmartPositionalMechanism.hpp:21
Definition SmartMotorController.hpp:48
Definition Arm.hpp:19