mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
107 lines
2.3 KiB
C++
107 lines
2.3 KiB
C++
|
|
/*----------------------------------------------------------------------------*/
|
||
|
|
/* Copyright (c) FIRST 2011. All Rights Reserved. */
|
||
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
||
|
|
/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */
|
||
|
|
/*----------------------------------------------------------------------------*/
|
||
|
|
|
||
|
|
#include "Commands/PIDCommand.h"
|
||
|
|
|
||
|
|
#include "PIDController.h"
|
||
|
|
#include "float.h"
|
||
|
|
|
||
|
|
PIDCommand::PIDCommand(const char *name, double p, double i, double d, double f, double period) :
|
||
|
|
Command(name)
|
||
|
|
{
|
||
|
|
m_controller = new PIDController(p, i, d, this, this, period);
|
||
|
|
}
|
||
|
|
|
||
|
|
PIDCommand::PIDCommand(double p, double i, double d, double f, double period)
|
||
|
|
{
|
||
|
|
m_controller = new PIDController(p, i, d, f, this, this, period);
|
||
|
|
}
|
||
|
|
|
||
|
|
PIDCommand::PIDCommand(const char *name, double p, double i, double d) :
|
||
|
|
Command(name)
|
||
|
|
{
|
||
|
|
m_controller = new PIDController(p, i, d, this, this);
|
||
|
|
}
|
||
|
|
|
||
|
|
PIDCommand::PIDCommand(const char *name, double p, double i, double d, double period) :
|
||
|
|
Command(name)
|
||
|
|
{
|
||
|
|
m_controller = new PIDController(p, i, d, this, this, period);
|
||
|
|
}
|
||
|
|
|
||
|
|
PIDCommand::PIDCommand(double p, double i, double d)
|
||
|
|
{
|
||
|
|
m_controller = new PIDController(p, i, d, this, this);
|
||
|
|
}
|
||
|
|
|
||
|
|
PIDCommand::PIDCommand(double p, double i, double d, double period)
|
||
|
|
{
|
||
|
|
m_controller = new PIDController(p, i, d, this, this, period);
|
||
|
|
}
|
||
|
|
|
||
|
|
PIDCommand::~PIDCommand()
|
||
|
|
{
|
||
|
|
delete m_controller;
|
||
|
|
}
|
||
|
|
|
||
|
|
void PIDCommand::_Initialize()
|
||
|
|
{
|
||
|
|
m_controller->Enable();
|
||
|
|
}
|
||
|
|
|
||
|
|
void PIDCommand::_End()
|
||
|
|
{
|
||
|
|
m_controller->Disable();
|
||
|
|
}
|
||
|
|
|
||
|
|
void PIDCommand::_Interrupted()
|
||
|
|
{
|
||
|
|
_End();
|
||
|
|
}
|
||
|
|
|
||
|
|
void PIDCommand::SetSetpointRelative(double deltaSetpoint)
|
||
|
|
{
|
||
|
|
SetSetpoint(GetSetpoint() + deltaSetpoint);
|
||
|
|
}
|
||
|
|
|
||
|
|
void PIDCommand::PIDWrite(float output)
|
||
|
|
{
|
||
|
|
UsePIDOutput(output);
|
||
|
|
}
|
||
|
|
|
||
|
|
double PIDCommand::PIDGet()
|
||
|
|
{
|
||
|
|
return ReturnPIDInput();
|
||
|
|
}
|
||
|
|
|
||
|
|
PIDController *PIDCommand::GetPIDController()
|
||
|
|
{
|
||
|
|
return m_controller;
|
||
|
|
}
|
||
|
|
|
||
|
|
void PIDCommand::SetSetpoint(double setpoint)
|
||
|
|
{
|
||
|
|
m_controller->SetSetpoint(setpoint);
|
||
|
|
}
|
||
|
|
|
||
|
|
double PIDCommand::GetSetpoint()
|
||
|
|
{
|
||
|
|
return m_controller->GetSetpoint();
|
||
|
|
}
|
||
|
|
|
||
|
|
double PIDCommand::GetPosition()
|
||
|
|
{
|
||
|
|
return ReturnPIDInput();
|
||
|
|
}
|
||
|
|
|
||
|
|
std::string PIDCommand::GetSmartDashboardType(){
|
||
|
|
return "PIDCommand";
|
||
|
|
}
|
||
|
|
void PIDCommand::InitTable(ITable* table){
|
||
|
|
m_controller->InitTable(table);
|
||
|
|
Command::InitTable(table);
|
||
|
|
}
|