diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2015-01-13 15:33:41 -0500 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2015-01-13 15:33:41 -0500 |
commit | 5e28068699f8d458f6f104a93b51d174cd065f6e (patch) | |
tree | ff427507632c1d6fbb058ad7f57a44e56631b4b7 |
Initial commit of Command Based Robotorig
-rw-r--r-- | .classpath | 7 | ||||
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | .project | 18 | ||||
-rw-r--r-- | build.properties | 4 | ||||
-rw-r--r-- | build.xml | 30 | ||||
-rw-r--r-- | src/org/usfirst/frc/team4272/robot2015/OI.java | 38 | ||||
-rw-r--r-- | src/org/usfirst/frc/team4272/robot2015/Robot.java | 80 | ||||
-rw-r--r-- | src/org/usfirst/frc/team4272/robot2015/RobotMap.java | 18 | ||||
-rw-r--r-- | src/org/usfirst/frc/team4272/robot2015/commands/ExampleCommand.java | 39 | ||||
-rw-r--r-- | src/org/usfirst/frc/team4272/robot2015/subsystems/ExampleSubsystem.java | 19 |
10 files changed, 255 insertions, 0 deletions
diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..daf6ebb --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="var" path="wpilib" sourcepath="wpilib.sources"/> + <classpathentry kind="var" path="networktables" sourcepath="networktables.sources"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fbd5a69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/doc/ diff --git a/.project b/.project new file mode 100644 index 0000000..dbab0ef --- /dev/null +++ b/.project @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>frc4272-robot2015</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>edu.wpi.first.wpilib.plugins.core.nature.FRCProjectNature</nature> + </natures> +</projectDescription> diff --git a/build.properties b/build.properties new file mode 100644 index 0000000..0d5fd76 --- /dev/null +++ b/build.properties @@ -0,0 +1,4 @@ +# Project specific information +package=org.usfirst.frc.team4272.robot2015 +robot.class=${package}.Robot +simulation.world.file=/usr/share/frcsim/worlds/GearsBotDemo.world
\ No newline at end of file diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..2182d37 --- /dev/null +++ b/build.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<project name="FRC Deployment" default="deploy"> + + <!-- + The following properties can be defined to override system level + settings. These should not be touched unless you know what you're + doing. The primary use is to override the wpilib version when + working with older robots that can't compile with the latest + libraries. + --> + + <!-- By default the system version of WPI is used --> + <!-- <property name="version" value=""/> --> + + <!-- By default the system team number is used --> + <!-- <property name="team-number" value=""/> --> + + <!-- By default the target is set to 10.TE.AM.2 --> + <!-- <property name="target" value=""/> --> + + <!-- Any other property in build.properties can also be overridden. --> + + <property file="${user.home}/wpilib/wpilib.properties"/> + <property file="build.properties"/> + <property file="${user.home}/wpilib/java/${version}/ant/build.properties"/> + + <import file="${wpilib.ant.dir}/build.xml"/> + +</project> diff --git a/src/org/usfirst/frc/team4272/robot2015/OI.java b/src/org/usfirst/frc/team4272/robot2015/OI.java new file mode 100644 index 0000000..b90f86a --- /dev/null +++ b/src/org/usfirst/frc/team4272/robot2015/OI.java @@ -0,0 +1,38 @@ +package org.usfirst.frc.team4272.robot2015; + +import edu.wpi.first.wpilibj.buttons.Button; +import org.usfirst.frc.team4272.robot2015.commands.ExampleCommand; + +/** + * This class is the glue that binds the controls on the physical operator + * interface to the commands and command groups that allow control of the robot. + */ +public class OI { + //// CREATING BUTTONS + // One type of button is a joystick button which is any button on a joystick. + // You create one by telling it which joystick it's on and which button + // number it is. + // Joystick stick = new Joystick(port); + // Button button = new JoystickButton(stick, buttonNumber); + + // There are a few additional built in buttons you can use. Additionally, + // by subclassing Button you can create custom triggers and bind those to + // commands the same as any other Button. + + //// TRIGGERING COMMANDS WITH BUTTONS + // Once you have a button, it's trivial to bind it to a button in one of + // three ways: + + // Start the command when the button is pressed and let it run the command + // until it is finished as determined by it's isFinished method. + // button.whenPressed(new ExampleCommand()); + + // Run the command while the button is being held down and interrupt it once + // the button is released. + // button.whileHeld(new ExampleCommand()); + + // Start the command when the button is released and let it run the command + // until it is finished as determined by it's isFinished method. + // button.whenReleased(new ExampleCommand()); +} + diff --git a/src/org/usfirst/frc/team4272/robot2015/Robot.java b/src/org/usfirst/frc/team4272/robot2015/Robot.java new file mode 100644 index 0000000..930ec3f --- /dev/null +++ b/src/org/usfirst/frc/team4272/robot2015/Robot.java @@ -0,0 +1,80 @@ + +package org.usfirst.frc.team4272.robot2015; + +import edu.wpi.first.wpilibj.IterativeRobot; +import edu.wpi.first.wpilibj.command.Command; +import edu.wpi.first.wpilibj.command.Scheduler; +import edu.wpi.first.wpilibj.livewindow.LiveWindow; +import org.usfirst.frc.team4272.robot2015.commands.ExampleCommand; +import org.usfirst.frc.team4272.robot2015.subsystems.ExampleSubsystem; + +/** + * The VM is configured to automatically run this class, and to call the + * functions corresponding to each mode, as described in the IterativeRobot + * documentation. If you change the name of this class or the package after + * creating this project, you must also update the manifest file in the resource + * directory. + */ +public class Robot extends IterativeRobot { + + public static final ExampleSubsystem exampleSubsystem = new ExampleSubsystem(); + public static OI oi; + + Command autonomousCommand; + + /** + * This function is run when the robot is first started up and should be + * used for any initialization code. + */ + public void robotInit() { + oi = new OI(); + // instantiate the command used for the autonomous period + autonomousCommand = new ExampleCommand(); + } + + public void disabledPeriodic() { + Scheduler.getInstance().run(); + } + + public void autonomousInit() { + // schedule the autonomous command (example) + if (autonomousCommand != null) autonomousCommand.start(); + } + + /** + * This function is called periodically during autonomous + */ + public void autonomousPeriodic() { + Scheduler.getInstance().run(); + } + + public void 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. + if (autonomousCommand != null) autonomousCommand.cancel(); + } + + /** + * This function is called when the disabled button is hit. + * You can use it to reset subsystems before shutting down. + */ + public void disabledInit(){ + + } + + /** + * This function is called periodically during operator control + */ + public void teleopPeriodic() { + Scheduler.getInstance().run(); + } + + /** + * This function is called periodically during test mode + */ + public void testPeriodic() { + LiveWindow.run(); + } +} diff --git a/src/org/usfirst/frc/team4272/robot2015/RobotMap.java b/src/org/usfirst/frc/team4272/robot2015/RobotMap.java new file mode 100644 index 0000000..2238625 --- /dev/null +++ b/src/org/usfirst/frc/team4272/robot2015/RobotMap.java @@ -0,0 +1,18 @@ +package org.usfirst.frc.team4272.robot2015; +/** + * The RobotMap is a mapping from the ports sensors and actuators are wired into + * to a variable name. This provides flexibility changing wiring, makes checking + * the wiring easier and significantly reduces the number of magic numbers + * floating around. + */ +public class RobotMap { + // For example to map the left and right motors, you could define the + // following variables to use with your drivetrain subsystem. + // public static int leftMotor = 1; + // public static int rightMotor = 2; + + // If you are using multiple modules, make sure to define both the port + // number and the module. For example you with a rangefinder: + // public static int rangefinderPort = 1; + // public static int rangefinderModule = 1; +} diff --git a/src/org/usfirst/frc/team4272/robot2015/commands/ExampleCommand.java b/src/org/usfirst/frc/team4272/robot2015/commands/ExampleCommand.java new file mode 100644 index 0000000..42ddd45 --- /dev/null +++ b/src/org/usfirst/frc/team4272/robot2015/commands/ExampleCommand.java @@ -0,0 +1,39 @@ + +package org.usfirst.frc.team4272.robot2015.commands; + +import edu.wpi.first.wpilibj.command.Command; + +import org.usfirst.frc.team4272.robot2015.Robot; + +/** + * + */ +public class ExampleCommand extends Command { + + public ExampleCommand() { + // Use requires() here to declare subsystem dependencies + requires(Robot.exampleSubsystem); + } + + // Called just before this Command runs the first time + protected void initialize() { + } + + // Called repeatedly when this Command is scheduled to run + protected void execute() { + } + + // Make this return true when this Command no longer needs to run execute() + protected boolean isFinished() { + return false; + } + + // Called once after isFinished returns true + protected void end() { + } + + // Called when another command which requires one or more of the same + // subsystems is scheduled to run + protected void interrupted() { + } +} diff --git a/src/org/usfirst/frc/team4272/robot2015/subsystems/ExampleSubsystem.java b/src/org/usfirst/frc/team4272/robot2015/subsystems/ExampleSubsystem.java new file mode 100644 index 0000000..5b8ebfb --- /dev/null +++ b/src/org/usfirst/frc/team4272/robot2015/subsystems/ExampleSubsystem.java @@ -0,0 +1,19 @@ + +package org.usfirst.frc.team4272.robot2015.subsystems; + +import edu.wpi.first.wpilibj.command.Subsystem; + +/** + * + */ +public class ExampleSubsystem extends Subsystem { + + // Put methods for controlling this subsystem + // here. Call these from Commands. + + public void initDefaultCommand() { + // Set the default command for a subsystem here. + //setDefaultCommand(new MySpecialCommand()); + } +} + |