Try the RobotBuilder tool, defining the subsystems, sensors, and actuators of this year's robot. This is not to distract anyone from aos, just to try it out and see what other teams are using. Also it looks very handy for robot hardware checkout and PID tuning.
Cf docs http://wpilib.screenstepslive.com/s/3120/m/7882/l/88538-overview-of-robotbuilder
Cf video demo http://www.youtube.com/user/bradamiller
git-svn-id: https://robotics.mvla.net/svn/frc971/2013/trunk/src@4101 f308d9b7-e957-4cde-b6ac-9a88185e7312
diff --git a/robot_builder/Robot2013/Subsystems/AirCompressor.cpp b/robot_builder/Robot2013/Subsystems/AirCompressor.cpp
new file mode 100644
index 0000000..55be1be
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/AirCompressor.cpp
@@ -0,0 +1,25 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "AirCompressor.h"
+#include "../Robotmap.h"
+AirCompressor::AirCompressor() : Subsystem("AirCompressor") {
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ airCompressor = RobotMap::airCompressorAirCompressor;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+
+void AirCompressor::InitDefaultCommand() {
+ // Set the default command for a subsystem here.
+ //SetDefaultCommand(new MySpecialCommand());
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/AirCompressor.h b/robot_builder/Robot2013/Subsystems/AirCompressor.h
new file mode 100644
index 0000000..d6fe9bd
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/AirCompressor.h
@@ -0,0 +1,30 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef AIR_COMPRESSOR_H
+#define AIR_COMPRESSOR_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class AirCompressor: public Subsystem {
+private:
+ // It's desirable that everything possible under private except
+ // for methods that implement subsystem capabilities
+public:
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ Compressor* airCompressor;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ AirCompressor();
+ void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/DriveTrain.cpp b/robot_builder/Robot2013/Subsystems/DriveTrain.cpp
new file mode 100644
index 0000000..7851de4
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/DriveTrain.cpp
@@ -0,0 +1,33 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "DriveTrain.h"
+#include "../Robotmap.h"
+DriveTrain::DriveTrain() : Subsystem("DriveTrain") {
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ leftShifter = RobotMap::driveTrainLeftShifter;
+ rightShifter = RobotMap::driveTrainRightShifter;
+ leftMotors1and2 = RobotMap::driveTrainLeftMotors1and2;
+ leftMotor3 = RobotMap::driveTrainLeftMotor3;
+ rightMotors1and2 = RobotMap::driveTrainRightMotors1and2;
+ rightMotor3 = RobotMap::driveTrainRightMotor3;
+ robotDrive = RobotMap::driveTrainRobotDrive;
+ quadratureEncoderLeft = RobotMap::driveTrainQuadratureEncoderLeft;
+ quadratureEncoderRight = RobotMap::driveTrainQuadratureEncoderRight;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+
+void DriveTrain::InitDefaultCommand() {
+ // Set the default command for a subsystem here.
+ //SetDefaultCommand(new MySpecialCommand());
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/DriveTrain.h b/robot_builder/Robot2013/Subsystems/DriveTrain.h
new file mode 100644
index 0000000..eb8f539
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/DriveTrain.h
@@ -0,0 +1,38 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef DRIVE_TRAIN_H
+#define DRIVE_TRAIN_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class DriveTrain: public Subsystem {
+private:
+ // It's desirable that everything possible under private except
+ // for methods that implement subsystem capabilities
+public:
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ Solenoid* leftShifter;
+ Solenoid* rightShifter;
+ SpeedController* leftMotors1and2;
+ SpeedController* leftMotor3;
+ SpeedController* rightMotors1and2;
+ SpeedController* rightMotor3;
+ RobotDrive* robotDrive;
+ Encoder* quadratureEncoderLeft;
+ Encoder* quadratureEncoderRight;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ DriveTrain();
+ void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/FrisbeePickup.cpp b/robot_builder/Robot2013/Subsystems/FrisbeePickup.cpp
new file mode 100644
index 0000000..536f2be
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/FrisbeePickup.cpp
@@ -0,0 +1,25 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "FrisbeePickup.h"
+#include "../Robotmap.h"
+FrisbeePickup::FrisbeePickup() : Subsystem("FrisbeePickup") {
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ intakeandCenteringRollerMotors = RobotMap::frisbeePickupIntakeandCenteringRollerMotors;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+
+void FrisbeePickup::InitDefaultCommand() {
+ // Set the default command for a subsystem here.
+ //SetDefaultCommand(new MySpecialCommand());
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/FrisbeePickup.h b/robot_builder/Robot2013/Subsystems/FrisbeePickup.h
new file mode 100644
index 0000000..4d996fb
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/FrisbeePickup.h
@@ -0,0 +1,30 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef FRISBEE_PICKUP_H
+#define FRISBEE_PICKUP_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class FrisbeePickup: public Subsystem {
+private:
+ // It's desirable that everything possible under private except
+ // for methods that implement subsystem capabilities
+public:
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ SpeedController* intakeandCenteringRollerMotors;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ FrisbeePickup();
+ void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/FrisbeeStorage.cpp b/robot_builder/Robot2013/Subsystems/FrisbeeStorage.cpp
new file mode 100644
index 0000000..3af153c
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/FrisbeeStorage.cpp
@@ -0,0 +1,29 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "FrisbeeStorage.h"
+#include "../Robotmap.h"
+FrisbeeStorage::FrisbeeStorage() : Subsystem("FrisbeeStorage") {
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ frisbeeIndexerMotor = RobotMap::frisbeeStorageFrisbeeIndexerMotor;
+ frisbeeIndexerSpeedEncoder = RobotMap::frisbeeStorageFrisbeeIndexerSpeedEncoder;
+ frisbeeInputOpticalSensor = RobotMap::frisbeeStorageFrisbeeInputOpticalSensor;
+ frisbeeIndexOpticalSensor = RobotMap::frisbeeStorageFrisbeeIndexOpticalSensor;
+ frisbeeReadytoshootOpticalSensor = RobotMap::frisbeeStorageFrisbeeReadytoshootOpticalSensor;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+
+void FrisbeeStorage::InitDefaultCommand() {
+ // Set the default command for a subsystem here.
+ //SetDefaultCommand(new MySpecialCommand());
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/FrisbeeStorage.h b/robot_builder/Robot2013/Subsystems/FrisbeeStorage.h
new file mode 100644
index 0000000..8a4c4a8
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/FrisbeeStorage.h
@@ -0,0 +1,34 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef FRISBEE_STORAGE_H
+#define FRISBEE_STORAGE_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class FrisbeeStorage: public Subsystem {
+private:
+ // It's desirable that everything possible under private except
+ // for methods that implement subsystem capabilities
+public:
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ SpeedController* frisbeeIndexerMotor;
+ Encoder* frisbeeIndexerSpeedEncoder;
+ DigitalInput* frisbeeInputOpticalSensor;
+ DigitalInput* frisbeeIndexOpticalSensor;
+ DigitalInput* frisbeeReadytoshootOpticalSensor;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ FrisbeeStorage();
+ void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/PickupArm.cpp b/robot_builder/Robot2013/Subsystems/PickupArm.cpp
new file mode 100644
index 0000000..a52daa6
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/PickupArm.cpp
@@ -0,0 +1,28 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "PickupArm.h"
+#include "../Robotmap.h"
+PickupArm::PickupArm() : Subsystem("PickupArm") {
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ pickupArmMotor = RobotMap::pickupArmPickupArmMotor;
+ pickupArmEncoder = RobotMap::pickupArmPickupArmEncoder;
+ pickupArmPIDController = RobotMap::pickupArmPickupArmPIDController;
+ pickupArmHomeSensor = RobotMap::pickupArmPickupArmHomeSensor;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+
+void PickupArm::InitDefaultCommand() {
+ // Set the default command for a subsystem here.
+ //SetDefaultCommand(new MySpecialCommand());
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/PickupArm.h b/robot_builder/Robot2013/Subsystems/PickupArm.h
new file mode 100644
index 0000000..0f91014
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/PickupArm.h
@@ -0,0 +1,33 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef PICKUP_ARM_H
+#define PICKUP_ARM_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class PickupArm: public Subsystem {
+private:
+ // It's desirable that everything possible under private except
+ // for methods that implement subsystem capabilities
+public:
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ SpeedController* pickupArmMotor;
+ Encoder* pickupArmEncoder;
+ PIDController* pickupArmPIDController;
+ GearTooth* pickupArmHomeSensor;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ PickupArm();
+ void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/Shooter.cpp b/robot_builder/Robot2013/Subsystems/Shooter.cpp
new file mode 100644
index 0000000..bb98a50
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/Shooter.cpp
@@ -0,0 +1,30 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "Shooter.h"
+#include "../Robotmap.h"
+Shooter::Shooter() : Subsystem("Shooter") {
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ shooterTiltMotor = RobotMap::shooterShooterTiltMotor;
+ shooterTiltEncoder = RobotMap::shooterShooterTiltEncoder;
+ shooterTiltHomeSensor = RobotMap::shooterShooterTiltHomeSensor;
+ latchFrisbeeSolenoid = RobotMap::shooterLatchFrisbeeSolenoid;
+ loadFrisbeeSolenoid = RobotMap::shooterLoadFrisbeeSolenoid;
+ shootSolenoid = RobotMap::shooterShootSolenoid;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+
+void Shooter::InitDefaultCommand() {
+ // Set the default command for a subsystem here.
+ //SetDefaultCommand(new MySpecialCommand());
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/Shooter.h b/robot_builder/Robot2013/Subsystems/Shooter.h
new file mode 100644
index 0000000..9ce68ca
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/Shooter.h
@@ -0,0 +1,35 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef SHOOTER_H
+#define SHOOTER_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class Shooter: public Subsystem {
+private:
+ // It's desirable that everything possible under private except
+ // for methods that implement subsystem capabilities
+public:
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ SpeedController* shooterTiltMotor;
+ Encoder* shooterTiltEncoder;
+ GearTooth* shooterTiltHomeSensor;
+ Solenoid* latchFrisbeeSolenoid;
+ Solenoid* loadFrisbeeSolenoid;
+ Solenoid* shootSolenoid;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ Shooter();
+ void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.cpp b/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.cpp
new file mode 100644
index 0000000..f71be48
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.cpp
@@ -0,0 +1,49 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "ShooterWheelPIDController.h"
+#include "../Robotmap.h"
+#include "SmartDashboard/SmartDashboard.h"
+#include "LiveWindow/LiveWindow.h"
+// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=PID
+ShooterWheelPIDController::ShooterWheelPIDController() : PIDSubsystem("ShooterWheelPIDController", 1.0, 0.0, 0.0) {
+ SetAbsoluteTolerance(0.2);
+ GetPIDController()->SetContinuous(false);
+ LiveWindow::GetInstance()->AddActuator("Shooter Wheel PID Controller", "PIDSubsystem Controller", GetPIDController());
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=PID
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ shooterMotor = RobotMap::shooterWheelPIDControllerShooterMotor;
+ shooterSpeedEncoder = RobotMap::shooterWheelPIDControllerShooterSpeedEncoder;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ // Use these to get going:
+ // SetSetpoint() - Sets where the PID controller should move the system
+ // to
+ // Enable() - Enables the PID controller.
+}
+double ShooterWheelPIDController::ReturnPIDInput() {
+ // Return your input value for the PID loop
+ // e.g. a sensor, like a potentiometer:
+ // yourPot->SetAverageVoltage() / kYourMaxVoltage;
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=SOURCE
+ return shooterSpeedEncoder->PIDGet();
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=SOURCE
+}
+void ShooterWheelPIDController::UsePIDOutput(double output) {
+ // Use output to drive your system, like a motor
+ // e.g. yourMotor->Set(output);
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=OUTPUT
+ shooterMotor->PIDWrite(output);
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=OUTPUT
+}
+void ShooterWheelPIDController::InitDefaultCommand() {
+ // Set the default command for a subsystem here.
+ //setDefaultCommand(new MySpecialCommand());
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
diff --git a/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.h b/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.h
new file mode 100644
index 0000000..5561631
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.h
@@ -0,0 +1,30 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef SHOOTER_WHEEL_PID_CONTROLLER_H
+#define SHOOTER_WHEEL_PID_CONTROLLER_H
+#include "Commands/PIDSubsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class ShooterWheelPIDController: public PIDSubsystem {
+ public:
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ SpeedController* shooterMotor;
+ Encoder* shooterSpeedEncoder;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+ ShooterWheelPIDController();
+ double ReturnPIDInput();
+ void UsePIDOutput(double output);
+ void InitDefaultCommand();
+};
+#endif