2020-12-26 14:12:05 -08:00
|
|
|
// Copyright (c) FIRST and other WPILib contributors.
|
|
|
|
|
// Open Source Software; you can modify and/or share it under the terms of
|
|
|
|
|
// the WPILib BSD license file in the root directory of this project.
|
2019-08-25 23:55:59 -04:00
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <frc/AnalogPotentiometer.h>
|
2021-02-13 01:14:56 -05:00
|
|
|
#include <frc/PWMSparkMax.h>
|
2019-08-26 23:11:07 -07:00
|
|
|
#include <frc2/command/PIDSubsystem.h>
|
2019-08-25 23:55:59 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The wrist subsystem is like the elevator, but with a rotational joint instead
|
|
|
|
|
* of a linear joint.
|
|
|
|
|
*/
|
|
|
|
|
class Wrist : public frc2::PIDSubsystem {
|
|
|
|
|
public:
|
|
|
|
|
Wrist();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The log method puts interesting information to the SmartDashboard.
|
|
|
|
|
*/
|
|
|
|
|
void Log();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Use the potentiometer as the PID sensor. This method is automatically
|
|
|
|
|
* called by the subsystem.
|
|
|
|
|
*/
|
|
|
|
|
double GetMeasurement() override;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Use the motor as the PID output. This method is automatically called
|
2020-01-17 20:18:15 -08:00
|
|
|
* by the subsystem.
|
2019-08-25 23:55:59 -04:00
|
|
|
*/
|
2019-11-26 00:46:47 -05:00
|
|
|
void UseOutput(double output, double setpoint) override;
|
2019-08-25 23:55:59 -04:00
|
|
|
|
2020-01-17 20:18:15 -08:00
|
|
|
/**
|
|
|
|
|
* Log the data periodically. This method is automatically called
|
|
|
|
|
* by the subsystem.
|
|
|
|
|
*/
|
|
|
|
|
void Periodic() override;
|
|
|
|
|
|
2019-08-25 23:55:59 -04:00
|
|
|
private:
|
2021-02-13 01:14:56 -05:00
|
|
|
frc::PWMSparkMax m_motor{6};
|
2019-08-25 23:55:59 -04:00
|
|
|
double m_setpoint = 0;
|
|
|
|
|
|
|
|
|
|
// Conversion value of potentiometer varies between the real world and
|
|
|
|
|
// simulation
|
|
|
|
|
#ifndef SIMULATION
|
|
|
|
|
frc::AnalogPotentiometer m_pot{3, -270.0 / 5};
|
|
|
|
|
#else
|
|
|
|
|
frc::AnalogPotentiometer m_pot{3}; // Defaults to degrees
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
static constexpr double kP_real = 1;
|
|
|
|
|
static constexpr double kP_simulation = 0.05;
|
|
|
|
|
};
|