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/Robot.cpp b/robot_builder/Robot2013/Robot.cpp
new file mode 100644
index 0000000..691f033
--- /dev/null
+++ b/robot_builder/Robot2013/Robot.cpp
@@ -0,0 +1,69 @@
+// 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 "Robot.h"
+// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=INITIALIZATION
+AirCompressor* Robot::airCompressor = 0;
+DriveTrain* Robot::driveTrain = 0;
+ShooterWheelPIDController* Robot::shooterWheelPIDController = 0;
+Shooter* Robot::shooter = 0;
+FrisbeeStorage* Robot::frisbeeStorage = 0;
+FrisbeePickup* Robot::frisbeePickup = 0;
+PickupArm* Robot::pickupArm = 0;
+OI* Robot::oi = 0;
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=INITIALIZATION
+void Robot::RobotInit() {
+ RobotMap::init();
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=CONSTRUCTORS
+ airCompressor = new AirCompressor();
+ driveTrain = new DriveTrain();
+ shooterWheelPIDController = new ShooterWheelPIDController();
+ shooter = new Shooter();
+ frisbeeStorage = new FrisbeeStorage();
+ frisbeePickup = new FrisbeePickup();
+ pickupArm = new PickupArm();
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=CONSTRUCTORS
+ // This MUST be here. If the OI creates Commands (which it very likely
+ // will), constructing it during the construction of CommandBase (from
+ // which commands extend), subsystems are not guaranteed to be
+ // yet. Thus, their requires() statements may grab null pointers. Bad
+ // news. Don't move it.
+ oi = new OI();
+ lw = LiveWindow::GetInstance();
+ // instantiate the command used for the autonomous period
+ // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=AUTONOMOUS
+ autonomousCommand = new AutonomousCommand();
+ // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=AUTONOMOUS
+ }
+
+void Robot::AutonomousInit() {
+ if (autonomousCommand != NULL)
+ autonomousCommand->Start();
+}
+
+void Robot::AutonomousPeriodic() {
+ Scheduler::GetInstance()->Run();
+}
+
+void Robot::TeleopInit() {
+ // This makes sure that the autonomous stops running when
+ // teleop starts running. If you want the autonomous to
+ // continue until interrupted by another command, remove
+ // this line or comment it out.
+ autonomousCommand->Cancel();
+}
+
+void Robot::TeleopPeriodic() {
+ if (autonomousCommand != NULL)
+ Scheduler::GetInstance()->Run();
+}
+void Robot::TestPeriodic() {
+ lw->Run();
+}
+START_ROBOT_CLASS(Robot);