From a8eaf6431e0bfd55084416bc0af6f92945d9ce47 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 8 Dec 2021 19:57:59 -0500 Subject: [PATCH 01/14] added switch controller code --- .../java/frc/robot/OI/OperatorInterface.java | 24 +++++++++++---- src/main/java/frc/robot/Robot.java | 29 ++++++++++++++++--- .../robot/auto/modes/ControllerModeBase.java | 14 +++++++++ .../frc/robot/auto/modes/JoysticksMode.java | 20 +++++++++++++ .../robot/auto/modes/XboxControllermode.java | 21 ++++++++++++++ 5 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 src/main/java/frc/robot/auto/modes/ControllerModeBase.java create mode 100644 src/main/java/frc/robot/auto/modes/JoysticksMode.java create mode 100644 src/main/java/frc/robot/auto/modes/XboxControllermode.java diff --git a/src/main/java/frc/robot/OI/OperatorInterface.java b/src/main/java/frc/robot/OI/OperatorInterface.java index ea1778a..0a8b72b 100644 --- a/src/main/java/frc/robot/OI/OperatorInterface.java +++ b/src/main/java/frc/robot/OI/OperatorInterface.java @@ -10,8 +10,9 @@ import frc.robot.util.LatchedBoolean; public class OperatorInterface { + private static OperatorInterface mInstance; - + boolean XboxInUse = false; // Instances of the Driver and Operator Controller private XboxController DriverController; private NykoController OperatorController; @@ -26,15 +27,28 @@ public static synchronized OperatorInterface getInstance() { private OperatorInterface() { DriverController = new XboxController(Constants.Controllers.Driver.port); OperatorController = new NykoController(Constants.Controllers.Operator.port); - //joysticks = JoystickController.getInstance(); + joysticks = JoystickController.getInstance(); + } + public void setXboxInUse(boolean value) { + XboxInUse = value; + } + public boolean getXboxInUse() { + return XboxInUse; } - public double getDriveThrottle() { - return DriverController.getJoystick(XboxController.Side.LEFT, XboxController.Axis.Y); + if (XboxInUse = true){ + return DriverController.getJoystick(XboxController.Side.LEFT, XboxController.Axis.Y); + } + else + {return joysticks.getYJoyStick_L();} } public double getDriveTurn() { - return DriverController.getJoystick(XboxController.Side.RIGHT, XboxController.Axis.X); + if (XboxInUse = true) { + return DriverController.getJoystick(XboxController.Side.RIGHT, XboxController.Axis.X); + } + else + {return joysticks.getXJoyStick_L();} } } diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 464b2ab..eee3913 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -13,7 +13,12 @@ import frc.robot.auto.modes.AutoModeBase; import frc.robot.auto.modes.DoNothingMode; import frc.robot.auto.modes.TestDriveMode; - +import frc.robot.auto.modes.ControllerModeBase; +import frc.robot.auto.modes.JoysticksMode; +import frc.robot.auto.modes.XboxControllermode; +import frc.robot.Constants.Controllers.Operator; +import frc.robot.Constants; +import frc.robot.OI.XboxController.Button; /** * The VM is configured to automatically run this class, and to call the functions corresponding to @@ -37,6 +42,9 @@ public class Robot extends TimedRobot { // Autonomous Modes private SendableChooser mAutoModes; + // Autonomous Modes + private SendableChooser mControllerModes; + boolean XboxInUse = false; /** * This function is run when the robot is first started up and should be used for any * initialization code. @@ -44,6 +52,7 @@ public class Robot extends TimedRobot { @Override public void robotInit() { SendableChooser mAutoModes = new SendableChooser<>(); + SendableChooser mControllerModes = new SendableChooser<>(); // populate autonomous list populateAutonomousModes(); } @@ -54,6 +63,10 @@ private void populateAutonomousModes(){ mAutoModes.setDefaultOption("Nothing", new DoNothingMode()); mAutoModes.addOption("Test Drive", new TestDriveMode()); SmartDashboard.putData(mAutoModes); + mControllerModes = new SendableChooser(); + mControllerModes.setDefaultOption("Xbox Controller", 0); + mControllerModes.addOption("Joysticks", 1); + SmartDashboard.putData(mControllerModes); } /** * This function is called every robot packet, no matter the mode. Use this for items like @@ -78,7 +91,7 @@ public void autonomousInit() { if(selectedMode == null){ System.out.println("Selected Auto Mode is Null"); } - + //TestDriveMode selectedMode = new TestDriveMode(); mAutoModeExecutor.setAutoMode(selectedMode); @@ -102,7 +115,13 @@ public void teleopInit() { if (mAutoModeExecutor != null) { mAutoModeExecutor.stop(); } - + Integer selectedController = mControllerModes.getSelected(); + if(selectedController == 0){ + mOperatorInterface.setXboxInUse(true); + } + if(selectedController == 1){ + mOperatorInterface.setXboxInUse(false); + } // Zero Drive Sensors mDrive.zeroSensors(); @@ -126,6 +145,7 @@ public void disabledInit() { // create Auto Mode Executor mAutoModeExecutor = new AutoModeExecutor(); + } /** This function is called periodically when disabled. */ @@ -156,7 +176,8 @@ private void teleopRobotLoop(){ private void teleopDriveLoop(){ double driveThrottle = mOperatorInterface.getDriveThrottle(); double driveTurn = mOperatorInterface.getDriveTurn(); - + System.out.println(mOperatorInterface.getDriveThrottle()); + System.out.println(mOperatorInterface.getDriveTurn()); //manual drive mDrive.setDrive(driveThrottle, driveTurn, false); } diff --git a/src/main/java/frc/robot/auto/modes/ControllerModeBase.java b/src/main/java/frc/robot/auto/modes/ControllerModeBase.java new file mode 100644 index 0000000..cc9491d --- /dev/null +++ b/src/main/java/frc/robot/auto/modes/ControllerModeBase.java @@ -0,0 +1,14 @@ +package frc.robot.auto.modes; + +import frc.robot.auto.AutoModeEndedException; +import frc.robot.auto.actions.Action; +import frc.robot.auto.actions.NoopAction; +import edu.wpi.first.wpilibj.DriverStation; + + +public class ControllerModeBase { + public void test(){ + System.out.println("Controller selected!"); + } + +} \ No newline at end of file diff --git a/src/main/java/frc/robot/auto/modes/JoysticksMode.java b/src/main/java/frc/robot/auto/modes/JoysticksMode.java new file mode 100644 index 0000000..d32ccdb --- /dev/null +++ b/src/main/java/frc/robot/auto/modes/JoysticksMode.java @@ -0,0 +1,20 @@ +package frc.robot.auto.modes; + +import frc.robot.auto.AutoModeEndedException; +import frc.robot.auto.actions.*; +import frc.robot.auto.TrajectoryLibrary; + +import edu.wpi.first.wpilibj.trajectory.TrajectoryConfig; +import edu.wpi.first.wpilibj.trajectory.Trajectory; +import edu.wpi.first.wpilibj.trajectory.TrajectoryGenerator; +import edu.wpi.first.wpilibj.geometry.Pose2d; +import edu.wpi.first.wpilibj.geometry.Translation2d; +import edu.wpi.first.wpilibj.geometry.Rotation2d; +import java.util.List; + +public class JoysticksMode extends ControllerModeBase { + + public JoysticksMode(){ + System.out.println("Joysticks are in use"); + } +} \ No newline at end of file diff --git a/src/main/java/frc/robot/auto/modes/XboxControllermode.java b/src/main/java/frc/robot/auto/modes/XboxControllermode.java new file mode 100644 index 0000000..286afc8 --- /dev/null +++ b/src/main/java/frc/robot/auto/modes/XboxControllermode.java @@ -0,0 +1,21 @@ +package frc.robot.auto.modes; + +import frc.robot.auto.AutoModeEndedException; +import frc.robot.auto.actions.*; +import frc.robot.auto.TrajectoryLibrary; + +import edu.wpi.first.wpilibj.trajectory.TrajectoryConfig; +import edu.wpi.first.wpilibj.trajectory.Trajectory; +import edu.wpi.first.wpilibj.trajectory.TrajectoryGenerator; +import edu.wpi.first.wpilibj.geometry.Pose2d; +import edu.wpi.first.wpilibj.geometry.Translation2d; +import edu.wpi.first.wpilibj.geometry.Rotation2d; +import java.util.List; + +public class XboxControllermode extends ControllerModeBase { + + public XboxControllermode(){ + System.out.println("Xbox controller is in use"); + } + +} \ No newline at end of file From 05d7d5346998946d6d5cbb5a1ce928e68f622712 Mon Sep 17 00:00:00 2001 From: Henry <95968706+GBogonis@users.noreply.github.com> Date: Sat, 11 Dec 2021 10:18:11 -0500 Subject: [PATCH 02/14] switching controllers works :) --- src/main/java/frc/robot/OI/JoystickController.java | 1 - src/main/java/frc/robot/OI/OperatorInterface.java | 10 ++++++---- src/main/java/frc/robot/Robot.java | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/frc/robot/OI/JoystickController.java b/src/main/java/frc/robot/OI/JoystickController.java index f59e45e..52726f1 100644 --- a/src/main/java/frc/robot/OI/JoystickController.java +++ b/src/main/java/frc/robot/OI/JoystickController.java @@ -34,7 +34,6 @@ public static synchronized JoystickController getInstance() { button11_L = new JoystickButton(leftJoy, 11); public double getZJoyStick_L() { return leftJoy.getZ(); - } public double getXJoyStick_L() { return leftJoy.getX(); diff --git a/src/main/java/frc/robot/OI/OperatorInterface.java b/src/main/java/frc/robot/OI/OperatorInterface.java index 0a8b72b..87e3275 100644 --- a/src/main/java/frc/robot/OI/OperatorInterface.java +++ b/src/main/java/frc/robot/OI/OperatorInterface.java @@ -25,18 +25,19 @@ public static synchronized OperatorInterface getInstance() { } private OperatorInterface() { - DriverController = new XboxController(Constants.Controllers.Driver.port); + DriverController = new XboxController(3); OperatorController = new NykoController(Constants.Controllers.Operator.port); joysticks = JoystickController.getInstance(); } public void setXboxInUse(boolean value) { XboxInUse = value; + System.out.println(XboxInUse); } public boolean getXboxInUse() { return XboxInUse; } public double getDriveThrottle() { - if (XboxInUse = true){ + if (XboxInUse == true){ return DriverController.getJoystick(XboxController.Side.LEFT, XboxController.Axis.Y); } else @@ -44,11 +45,12 @@ public double getDriveThrottle() { } public double getDriveTurn() { - if (XboxInUse = true) { + if (XboxInUse == true) { + return DriverController.getJoystick(XboxController.Side.RIGHT, XboxController.Axis.X); } else - {return joysticks.getXJoyStick_L();} + {return joysticks.getXJoyStick_R();} } } diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index eee3913..4469fd9 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -116,6 +116,7 @@ public void teleopInit() { mAutoModeExecutor.stop(); } Integer selectedController = mControllerModes.getSelected(); + //System.out.println(selectedController); if(selectedController == 0){ mOperatorInterface.setXboxInUse(true); } @@ -152,7 +153,6 @@ public void disabledInit() { @Override public void disabledPeriodic() { // Set Mode for the Auto Mode to use in Thread - } /** This function is called once when test mode is enabled. */ @@ -176,8 +176,8 @@ private void teleopRobotLoop(){ private void teleopDriveLoop(){ double driveThrottle = mOperatorInterface.getDriveThrottle(); double driveTurn = mOperatorInterface.getDriveTurn(); - System.out.println(mOperatorInterface.getDriveThrottle()); - System.out.println(mOperatorInterface.getDriveTurn()); + //System.out.println(mOperatorInterface.getDriveThrottle()); + //System.out.println(mOperatorInterface.getDriveTurn()); //manual drive mDrive.setDrive(driveThrottle, driveTurn, false); } From 5d2b857a83bb6234bbc3fad4686a462cfb029e57 Mon Sep 17 00:00:00 2001 From: George Date: Sat, 18 Dec 2021 08:42:03 -0500 Subject: [PATCH 03/14] added wheel --- src/main/java/frc/robot/OI/Wheel.java | 126 ++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 src/main/java/frc/robot/OI/Wheel.java diff --git a/src/main/java/frc/robot/OI/Wheel.java b/src/main/java/frc/robot/OI/Wheel.java new file mode 100644 index 0000000..9dadfd0 --- /dev/null +++ b/src/main/java/frc/robot/OI/Wheel.java @@ -0,0 +1,126 @@ +package frc.robot.OI; + +import edu.wpi.first.wpilibj.TimedRobot; +import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj.Joystick; +import edu.wpi.first.wpilibj.Joystick.ButtonType; +import edu.wpi.first.wpilibj.Joystick.AxisType; +import edu.wpi.first.wpilibj.buttons.JoystickButton; + +public class Wheel { + + private static Wheel mInstance; + + public static synchronized Wheel getInstance() { + if (mInstance == null) { + mInstance = new Wheel(); + } + return mInstance; + } + + Joystick wheel = new Joystick(5); + JoystickButton button1_W = new JoystickButton(wheel, 1), + button2_W = new JoystickButton(wheel, 2), + button3_W = new JoystickButton(wheel, 3), + button4_W = new JoystickButton(wheel, 4), + button5_W = new JoystickButton(wheel, 5), + button6_W = new JoystickButton(wheel, 6), + button7_W = new JoystickButton(wheel, 7), + button8_W = new JoystickButton(wheel, 8), + button9_W = new JoystickButton(wheel, 9), + button10_W = new JoystickButton(wheel, 10), + button11_W = new JoystickButton(wheel, 11), + button12_W = new JoystickButton(wheel, 12); + + public double getXWheel() { + return wheel.getX(); + } + public double getYWheel() { + return wheel.getY(); + } + + public boolean isButton1Pressed_W() { + if (button1_W.get()){ + return true; + } + return false; + } + + public boolean isButton2Pressed_W() { + if (button2_W.get()){ + return true; + } + return false; + } + + public boolean isButton3Pressed_W() { + if (button3_W.get()){ + return true; + } + return false; + } + + public boolean isButton4Pressed_W() { + if (button4_W.get()){ + return true; + } + return false; + } + + public boolean isButton5Pressed_W() { + if (button5_W.get()){ + return true; + } + return false; + } + + public boolean isButton6Pressed_W() { + if (button6_W.get()){ + return true; + } + return false; + } + + public boolean isButton7Pressed_W() { + if (button7_W.get()){ + return true; + } + return false; + } + + public boolean isButton8Pressed_W() { + if (button8_W.get()){ + return true; + } + return false; + } + + public boolean isButton9Pressed_W() { + if (button9_W.get()){ + return true; + } + return false; + } + + public boolean isButton10Pressed_W() { + if (button10_W.get()){ + return true; + } + return false; + } + + public boolean isButton11Pressed_W() { + if (button11_W.get()){ + return true; + } + return false; + } + + public boolean isButton12Pressed_W() { + if (button12_W.get()){ + return true; + } + return false; + } +} \ No newline at end of file From 55800982a3e9a7bafb774fc3cc28de1187140b1d Mon Sep 17 00:00:00 2001 From: George Date: Sat, 18 Dec 2021 08:44:00 -0500 Subject: [PATCH 04/14] added the rc controller thing --- .../java/frc/robot/OI/uselessController.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/frc/robot/OI/uselessController.java diff --git a/src/main/java/frc/robot/OI/uselessController.java b/src/main/java/frc/robot/OI/uselessController.java new file mode 100644 index 0000000..b32a8b1 --- /dev/null +++ b/src/main/java/frc/robot/OI/uselessController.java @@ -0,0 +1,29 @@ +package frc.robot.OI; + +import edu.wpi.first.wpilibj.TimedRobot; +import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj.Joystick; +import edu.wpi.first.wpilibj.Joystick.ButtonType; +import edu.wpi.first.wpilibj.Joystick.AxisType; +import edu.wpi.first.wpilibj.buttons.JoystickButton; + +public class uselessController { + private static uselessController mInstance; + + public static synchronized uselessController getInstance() { + if (mInstance == null) { + mInstance = new uselessController(); + } + return mInstance; + } + + Joystick controllerThing = new Joystick(4); + + public double getX_thing() { + return controllerThing.getX(); + } +public double getY_thing() { + return controllerThing.getY(); + } +} \ No newline at end of file From f62d78cc060ee5eb992aae5b2ae3436557aae80c Mon Sep 17 00:00:00 2001 From: George Date: Sat, 18 Dec 2021 09:13:05 -0500 Subject: [PATCH 05/14] Added the other 2 controllers to the switcher(untested) --- .../java/frc/robot/OI/OperatorInterface.java | 45 +++++++++++++------ src/main/java/frc/robot/Robot.java | 14 ++++-- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/src/main/java/frc/robot/OI/OperatorInterface.java b/src/main/java/frc/robot/OI/OperatorInterface.java index 87e3275..5dae5d3 100644 --- a/src/main/java/frc/robot/OI/OperatorInterface.java +++ b/src/main/java/frc/robot/OI/OperatorInterface.java @@ -12,11 +12,13 @@ public class OperatorInterface { private static OperatorInterface mInstance; - boolean XboxInUse = false; + int controllerInUse = 0; // Instances of the Driver and Operator Controller private XboxController DriverController; private NykoController OperatorController; private JoystickController joysticks; + private Wheel wheel; + private uselessController controllerThing; public static synchronized OperatorInterface getInstance() { if (mInstance == null) { mInstance = new OperatorInterface(); @@ -28,29 +30,46 @@ private OperatorInterface() { DriverController = new XboxController(3); OperatorController = new NykoController(Constants.Controllers.Operator.port); joysticks = JoystickController.getInstance(); + wheel = Wheel.getInstance(); + controllerThing = uselessController.getInstance(); } - public void setXboxInUse(boolean value) { - XboxInUse = value; - System.out.println(XboxInUse); + public void setControllerInUse(int value) { + controllerInUse = value; + System.out.println(controllerInUse); } - public boolean getXboxInUse() { - return XboxInUse; + public int getControllerInUse() { + return controllerInUse; } public double getDriveThrottle() { - if (XboxInUse == true){ + if (controllerInUse == 0){ return DriverController.getJoystick(XboxController.Side.LEFT, XboxController.Axis.Y); } - else - {return joysticks.getYJoyStick_L();} + if (controllerInUse == 1){ + return joysticks.getYJoyStick_L(); + } + if (controllerInUse == 2){ + return wheel.getYWheel(); + } + if (controllerInUse == 3){ + return controllerThing.getY_thing(); + } + return 0; } public double getDriveTurn() { - if (XboxInUse == true) { - + if (controllerInUse == 0) { return DriverController.getJoystick(XboxController.Side.RIGHT, XboxController.Axis.X); } - else - {return joysticks.getXJoyStick_R();} + if (controllerInUse == 1) { + return joysticks.getXJoyStick_R(); + } + if (controllerInUse == 2){ + return wheel.getXWheel(); + } + if (controllerInUse == 3){ + return controllerThing.getX_thing(); + } + return 0; } } diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 4469fd9..e27110a 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -44,7 +44,7 @@ public class Robot extends TimedRobot { // Autonomous Modes private SendableChooser mControllerModes; - boolean XboxInUse = false; + //int controllerInUse = 0; /** * This function is run when the robot is first started up and should be used for any * initialization code. @@ -66,6 +66,8 @@ private void populateAutonomousModes(){ mControllerModes = new SendableChooser(); mControllerModes.setDefaultOption("Xbox Controller", 0); mControllerModes.addOption("Joysticks", 1); + mControllerModes.addOption("Wheel", 2); + mControllerModes.addOption("Thing", 3); SmartDashboard.putData(mControllerModes); } /** @@ -118,10 +120,16 @@ public void teleopInit() { Integer selectedController = mControllerModes.getSelected(); //System.out.println(selectedController); if(selectedController == 0){ - mOperatorInterface.setXboxInUse(true); + mOperatorInterface.setControllerInUse(0); } if(selectedController == 1){ - mOperatorInterface.setXboxInUse(false); + mOperatorInterface.setControllerInUse(1); + } + if(selectedController == 2){ + mOperatorInterface.setControllerInUse(2); + } + if(selectedController == 3){ + mOperatorInterface.setControllerInUse(3); } // Zero Drive Sensors mDrive.zeroSensors(); From 9aebd56fcf85352f0b1b31c40d31938c30d0565d Mon Sep 17 00:00:00 2001 From: GBogonis Date: Wed, 19 Jan 2022 20:22:40 -0500 Subject: [PATCH 06/14] added some operator controller stuff including a new switcher. also added some new smart dashboard stuff including a new layout --- shuffleboard.json | 241 ++++++++++++++++++ .../java/frc/robot/OI/OperatorInterface.java | 56 ++-- src/main/java/frc/robot/Robot.java | 81 ++++-- 3 files changed, 330 insertions(+), 48 deletions(-) create mode 100644 shuffleboard.json diff --git a/shuffleboard.json b/shuffleboard.json new file mode 100644 index 0000000..47ff309 --- /dev/null +++ b/shuffleboard.json @@ -0,0 +1,241 @@ +{ + "tabPane": [ + { + "title": "Auto station", + "autoPopulate": false, + "autoPopulatePrefix": "", + "widgetPane": { + "gridSize": 64.0, + "showGrid": true, + "hgap": 16.0, + "vgap": 16.0, + "tiles": { + "6,4": { + "size": [ + 4, + 4 + ], + "content": { + "_type": "Gyro", + "_source0": "network_table:///LiveWindow/Ungrouped/ADXRS450_Gyro[0]", + "_title": "Gyro", + "Visuals/Major tick spacing": 45.0, + "Visuals/Starting angle": 180.0, + "Visuals/Show tick mark ring": true, + "Visuals/Counter clockwise": false + } + }, + "0,2": { + "size": [ + 4, + 2 + ], + "content": { + "_type": "ComboBox Chooser", + "_source0": "network_table:///SmartDashboard/SendableChooser[1]", + "_title": "Auto Mode" + } + }, + "13,2": { + "size": [ + 11, + 9 + ], + "content": { + "_type": "Camera Stream", + "_title": "Camera Stream", + "Crosshair/Show crosshair": true, + "Crosshair/Crosshair color": "#FFFFFFFF", + "Controls/Show controls": true, + "Controls/Rotation": "NONE", + "compression": -1.0, + "fps": -1, + "imageWidth": -1, + "imageHeight": -1 + } + }, + "4,4": { + "size": [ + 2, + 2 + ], + "content": { + "_type": "Boolean Box", + "_title": "In Auto", + "Colors/Color when true": "#7CFC00FF", + "Colors/Color when false": "#8B0000FF" + } + }, + "10,5": { + "size": [ + 3, + 3 + ], + "content": { + "_type": "Number Bar", + "_source0": "network_table:///SmartDashboard/encoder_right", + "_title": "Right Encoder", + "Range/Min": -1.0, + "Range/Max": 1.0, + "Range/Center": 0.0, + "Visuals/Num tick marks": 5, + "Visuals/Show text": true + } + }, + "10,8": { + "size": [ + 3, + 3 + ], + "content": { + "_type": "Number Bar", + "_source0": "network_table:///SmartDashboard/encoder_left", + "_title": "Left Encoder", + "Range/Min": -1.0, + "Range/Max": 1.0, + "Range/Center": 0.0, + "Visuals/Num tick marks": 5, + "Visuals/Show text": true + } + }, + "0,8": { + "size": [ + 10, + 3 + ], + "content": { + "_type": "Voltage View", + "_title": "Voltage", + "Range/Min": 0.0, + "Range/Max": 5.0, + "Range/Center": 0.0, + "Visuals/Orientation": "HORIZONTAL", + "Visuals/Number of tick marks": 5 + } + }, + "4,2": { + "size": [ + 6, + 2 + ], + "content": { + "_type": "Basic FMS Info", + "_title": "Match Info" + } + }, + "0,4": { + "size": [ + 4, + 2 + ], + "content": { + "_type": "ComboBox Chooser", + "_title": "Drive Controller" + } + }, + "0,6": { + "size": [ + 4, + 2 + ], + "content": { + "_type": "ComboBox Chooser", + "_title": "Operator Controller" + } + }, + "4,6": { + "size": [ + 2, + 2 + ], + "content": { + "_type": "Boolean Box", + "_title": "In Teleop", + "Colors/Color when true": "#7CFC00FF", + "Colors/Color when false": "#8B0000FF" + } + }, + "10,2": { + "size": [ + 3, + 3 + ], + "content": { + "_type": "Simple Dial", + "_title": "Speed", + "Range/Min": 0.0, + "Range/Max": 100.0, + "Visuals/Show value": true + } + } + } + } + }, + { + "title": "debug", + "autoPopulate": false, + "autoPopulatePrefix": "", + "widgetPane": { + "gridSize": 128.0, + "showGrid": true, + "hgap": 16.0, + "vgap": 16.0, + "tiles": { + "0,0": { + "size": [ + 3, + 2 + ], + "content": { + "_type": "Number Bar", + "_source0": "network_table:///SmartDashboard/encoder_left", + "_title": "Left encoder", + "Range/Min": -1.0, + "Range/Max": 1.0, + "Range/Center": 0.0, + "Visuals/Num tick marks": 5, + "Visuals/Show text": true + } + }, + "0,2": { + "size": [ + 3, + 2 + ], + "content": { + "_type": "Number Bar", + "_source0": "network_table:///SmartDashboard/encoder_right", + "_title": "Right encoder", + "Range/Min": -1.0, + "Range/Max": 1.0, + "Range/Center": 0.0, + "Visuals/Num tick marks": 5, + "Visuals/Show text": true + } + }, + "3,0": { + "size": [ + 2, + 2 + ], + "content": { + "_type": "Gyro", + "_source0": "network_table:///LiveWindow/Ungrouped/ADXRS450_Gyro[0]", + "_title": "Gyro", + "Visuals/Major tick spacing": 45.0, + "Visuals/Starting angle": 180.0, + "Visuals/Show tick mark ring": true, + "Visuals/Counter clockwise": false + } + } + } + } + } + ], + "windowGeometry": { + "x": -8.0, + "y": -8.0, + "width": 1936.0, + "height": 1056.0 + } +} \ No newline at end of file diff --git a/src/main/java/frc/robot/OI/OperatorInterface.java b/src/main/java/frc/robot/OI/OperatorInterface.java index 5dae5d3..7af6504 100644 --- a/src/main/java/frc/robot/OI/OperatorInterface.java +++ b/src/main/java/frc/robot/OI/OperatorInterface.java @@ -12,10 +12,12 @@ public class OperatorInterface { private static OperatorInterface mInstance; - int controllerInUse = 0; + int driveControllerInUse = 0; + int operatorControllerInUse = 0; // Instances of the Driver and Operator Controller - private XboxController DriverController; - private NykoController OperatorController; + private XboxController xbox1; + private XboxController xbox2; + private NykoController Nyko1; private JoystickController joysticks; private Wheel wheel; private uselessController controllerThing; @@ -27,49 +29,63 @@ public static synchronized OperatorInterface getInstance() { } private OperatorInterface() { - DriverController = new XboxController(3); - OperatorController = new NykoController(Constants.Controllers.Operator.port); + xbox1 = new XboxController(3); + xbox2 = new XboxController(2); + //Nyko1 = new NykoController(Constants.Controllers.Operator.port); joysticks = JoystickController.getInstance(); wheel = Wheel.getInstance(); controllerThing = uselessController.getInstance(); } - public void setControllerInUse(int value) { - controllerInUse = value; - System.out.println(controllerInUse); + public void setDriveControllerInUse(int value) { + driveControllerInUse = value; } - public int getControllerInUse() { - return controllerInUse; + public int getDriveControllerInUse() { + return driveControllerInUse; + } + public void setOperatorControllerInUse(int value) { + operatorControllerInUse = value; + } + public int getOperatorControllerInUse() { + return operatorControllerInUse; } public double getDriveThrottle() { - if (controllerInUse == 0){ - return DriverController.getJoystick(XboxController.Side.LEFT, XboxController.Axis.Y); + if (driveControllerInUse == 0){ + System.out.println("Xbox in use!"); + return xbox1.getJoystick(XboxController.Side.LEFT, XboxController.Axis.Y); } - if (controllerInUse == 1){ + if (driveControllerInUse == 1){ + System.out.println("Joysticks in use!"); return joysticks.getYJoyStick_L(); } - if (controllerInUse == 2){ + if (driveControllerInUse == 2){ + System.out.println("Wheel in use!"); return wheel.getYWheel(); } - if (controllerInUse == 3){ + if (driveControllerInUse == 3){ + System.out.println("RC in use!"); return controllerThing.getY_thing(); } return 0; } public double getDriveTurn() { - if (controllerInUse == 0) { - return DriverController.getJoystick(XboxController.Side.RIGHT, XboxController.Axis.X); + if (driveControllerInUse == 0) { + return xbox1.getJoystick(XboxController.Side.RIGHT, XboxController.Axis.X); } - if (controllerInUse == 1) { + if (driveControllerInUse == 1) { return joysticks.getXJoyStick_R(); } - if (controllerInUse == 2){ + if (driveControllerInUse == 2){ return wheel.getXWheel(); } - if (controllerInUse == 3){ + if (driveControllerInUse == 3){ return controllerThing.getX_thing(); } return 0; } + //Add functions for the operator controller + + + } diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index e27110a..5bbfc5f 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -4,6 +4,7 @@ package frc.robot; +import edu.wpi.first.wpilibj.RobotController; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; @@ -42,9 +43,14 @@ public class Robot extends TimedRobot { // Autonomous Modes private SendableChooser mAutoModes; - // Autonomous Modes - private SendableChooser mControllerModes; - //int controllerInUse = 0; + // Driver Controller Modes + private SendableChooser mDriverControllerModes; + + // Operator Controller Modes + private SendableChooser mOperatorControllerModes; + + private boolean inAutoMode = false; + private boolean inTeleop = false; /** * This function is run when the robot is first started up and should be used for any * initialization code. @@ -52,7 +58,8 @@ public class Robot extends TimedRobot { @Override public void robotInit() { SendableChooser mAutoModes = new SendableChooser<>(); - SendableChooser mControllerModes = new SendableChooser<>(); + SendableChooser mDriverControllerModes = new SendableChooser<>(); + SendableChooser mOperatorControllerModes = new SendableChooser<>(); // populate autonomous list populateAutonomousModes(); } @@ -63,12 +70,18 @@ private void populateAutonomousModes(){ mAutoModes.setDefaultOption("Nothing", new DoNothingMode()); mAutoModes.addOption("Test Drive", new TestDriveMode()); SmartDashboard.putData(mAutoModes); - mControllerModes = new SendableChooser(); - mControllerModes.setDefaultOption("Xbox Controller", 0); - mControllerModes.addOption("Joysticks", 1); - mControllerModes.addOption("Wheel", 2); - mControllerModes.addOption("Thing", 3); - SmartDashboard.putData(mControllerModes); + mDriverControllerModes = new SendableChooser(); + mDriverControllerModes.setDefaultOption("Xbox Controller", 0); + mDriverControllerModes.addOption("Joysticks", 1); + mDriverControllerModes.addOption("Wheel", 2); + mDriverControllerModes.addOption("Thing", 3); + SmartDashboard.putData(mDriverControllerModes); + mOperatorControllerModes = new SendableChooser(); + mOperatorControllerModes.setDefaultOption("Xbox Controller", 0); + mOperatorControllerModes.addOption("Joysticks", 1); + mOperatorControllerModes.addOption("Wheel", 2); + mOperatorControllerModes.addOption("Thing", 3); + SmartDashboard.putData(mOperatorControllerModes); } /** * This function is called every robot packet, no matter the mode. Use this for items like @@ -79,22 +92,22 @@ private void populateAutonomousModes(){ */ @Override public void robotPeriodic() { - + SmartDashboard.putBoolean("In Auto", inAutoMode); + SmartDashboard.putBoolean("In Teleop", inTeleop); + SmartDashboard.putNumber("Speed", mOperatorInterface.getDriveThrottle()); + SmartDashboard.putNumber("voltage", RobotController.getBatteryVoltage()); } - /** Called at the Start of Autonomous **/ @Override public void autonomousInit() { - // set auto mode - + inAutoMode = true; + inTeleop = false; // Get Selected AutoMode AutoModeBase selectedMode = mAutoModes.getSelected(); if(selectedMode == null){ System.out.println("Selected Auto Mode is Null"); } - - //TestDriveMode selectedMode = new TestDriveMode(); mAutoModeExecutor.setAutoMode(selectedMode); @@ -112,28 +125,40 @@ public void autonomousPeriodic() { /** This function is called once when teleop is enabled. */ @Override public void teleopInit() { - + inTeleop = true; + inAutoMode = false; // Disable Auto Thread (if running) if (mAutoModeExecutor != null) { mAutoModeExecutor.stop(); } - Integer selectedController = mControllerModes.getSelected(); - //System.out.println(selectedController); - if(selectedController == 0){ - mOperatorInterface.setControllerInUse(0); + Integer selectedDriveController = mDriverControllerModes.getSelected(); + Integer selectedOperatorController = mOperatorControllerModes.getSelected(); + if(selectedDriveController == 0){ + mOperatorInterface.setDriveControllerInUse(0); + } + if(selectedDriveController == 1){ + mOperatorInterface.setDriveControllerInUse(1); + } + if(selectedDriveController == 2){ + mOperatorInterface.setDriveControllerInUse(2); } - if(selectedController == 1){ - mOperatorInterface.setControllerInUse(1); + if(selectedDriveController == 3){ + mOperatorInterface.setDriveControllerInUse(3); } - if(selectedController == 2){ - mOperatorInterface.setControllerInUse(2); + if(selectedOperatorController == 0){ + mOperatorInterface.setOperatorControllerInUse(0); } - if(selectedController == 3){ - mOperatorInterface.setControllerInUse(3); + if(selectedOperatorController == 1){ + mOperatorInterface.setOperatorControllerInUse(1); + } + if(selectedOperatorController == 2){ + mOperatorInterface.setOperatorControllerInUse(2); + } + if(selectedOperatorController == 3){ + mOperatorInterface.setOperatorControllerInUse(3); } // Zero Drive Sensors mDrive.zeroSensors(); - } /** This function is called periodically during operator control. */ From 38981433b5e20016cae64cf3845225d229e5e656 Mon Sep 17 00:00:00 2001 From: GBogonis Date: Fri, 21 Jan 2022 19:05:15 -0500 Subject: [PATCH 07/14] . --- .SysId/sysid-window.json | 45 +++++++++++++++++++ .SysId/sysid.json | 5 +++ .../java/frc/robot/OI/OperatorInterface.java | 8 ++-- 3 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 .SysId/sysid-window.json create mode 100644 .SysId/sysid.json diff --git a/.SysId/sysid-window.json b/.SysId/sysid-window.json new file mode 100644 index 0000000..433f0f0 --- /dev/null +++ b/.SysId/sysid-window.json @@ -0,0 +1,45 @@ +{ + "MainWindow": { + "GLOBAL": { + "height": "720", + "maximized": "1", + "style": "0", + "userScale": "2", + "width": "1280", + "xpos": "0", + "ypos": "23" + } + }, + "Window": { + "###Analyzer": { + "Collapsed": "0", + "Pos": "527,18", + "Size": "606,876" + }, + "###Generator": { + "Collapsed": "0", + "Pos": "-1,18", + "Size": "531,269" + }, + "###Logger": { + "Collapsed": "0", + "Pos": "-1,286", + "Size": "530,732" + }, + "###Program Log": { + "Collapsed": "0", + "Pos": "527,893", + "Size": "605,125" + }, + "Debug##Default": { + "Collapsed": "0", + "Pos": "60,60", + "Size": "400,400" + }, + "Diagnostic Plots": { + "Collapsed": "0", + "Pos": "1131,17", + "Size": "790,1000" + } + } +} diff --git a/.SysId/sysid.json b/.SysId/sysid.json new file mode 100644 index 0000000..de74a00 --- /dev/null +++ b/.SysId/sysid.json @@ -0,0 +1,5 @@ +{ + "SysId": { + "Analysis Type": "General Mechanism" + } +} diff --git a/src/main/java/frc/robot/OI/OperatorInterface.java b/src/main/java/frc/robot/OI/OperatorInterface.java index 7af6504..baeee0b 100644 --- a/src/main/java/frc/robot/OI/OperatorInterface.java +++ b/src/main/java/frc/robot/OI/OperatorInterface.java @@ -50,19 +50,19 @@ public int getOperatorControllerInUse() { } public double getDriveThrottle() { if (driveControllerInUse == 0){ - System.out.println("Xbox in use!"); + return xbox1.getJoystick(XboxController.Side.LEFT, XboxController.Axis.Y); } if (driveControllerInUse == 1){ - System.out.println("Joysticks in use!"); + return joysticks.getYJoyStick_L(); } if (driveControllerInUse == 2){ - System.out.println("Wheel in use!"); + return wheel.getYWheel(); } if (driveControllerInUse == 3){ - System.out.println("RC in use!"); + return controllerThing.getY_thing(); } return 0; From b5314309b000cc51ed38712b6696c50b9df91946 Mon Sep 17 00:00:00 2001 From: GBogonis Date: Sun, 23 Jan 2022 09:58:35 -0500 Subject: [PATCH 08/14] Controllers work now and smartdashboard stuff is fully working --- shuffleboard.json | 15 +++++++++---- .../java/frc/robot/OI/OperatorInterface.java | 10 +++------ src/main/java/frc/robot/Robot.java | 21 +++++++++++-------- src/main/java/frc/robot/subsystems/Drive.java | 4 ++-- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/shuffleboard.json b/shuffleboard.json index 47ff309..8350acd 100644 --- a/shuffleboard.json +++ b/shuffleboard.json @@ -32,7 +32,7 @@ ], "content": { "_type": "ComboBox Chooser", - "_source0": "network_table:///SmartDashboard/SendableChooser[1]", + "_source0": "network_table:///SmartDashboard/SendableChooser[3]", "_title": "Auto Mode" } }, @@ -61,6 +61,7 @@ ], "content": { "_type": "Boolean Box", + "_source0": "network_table:///SmartDashboard/In Auto", "_title": "In Auto", "Colors/Color when true": "#7CFC00FF", "Colors/Color when false": "#8B0000FF" @@ -73,7 +74,7 @@ ], "content": { "_type": "Number Bar", - "_source0": "network_table:///SmartDashboard/encoder_right", + "_source0": "network_table:///SmartDashboard/Right Encoder", "_title": "Right Encoder", "Range/Min": -1.0, "Range/Max": 1.0, @@ -89,7 +90,7 @@ ], "content": { "_type": "Number Bar", - "_source0": "network_table:///SmartDashboard/encoder_left", + "_source0": "network_table:///SmartDashboard/Left Encoder", "_title": "Left Encoder", "Range/Min": -1.0, "Range/Max": 1.0, @@ -105,9 +106,10 @@ ], "content": { "_type": "Voltage View", + "_source0": "network_table:///SmartDashboard/voltage", "_title": "Voltage", "Range/Min": 0.0, - "Range/Max": 5.0, + "Range/Max": 20.0, "Range/Center": 0.0, "Visuals/Orientation": "HORIZONTAL", "Visuals/Number of tick marks": 5 @@ -120,6 +122,7 @@ ], "content": { "_type": "Basic FMS Info", + "_source0": "network_table:///FMSInfo", "_title": "Match Info" } }, @@ -130,6 +133,7 @@ ], "content": { "_type": "ComboBox Chooser", + "_source0": "network_table:///SmartDashboard/SendableChooser[4]", "_title": "Drive Controller" } }, @@ -140,6 +144,7 @@ ], "content": { "_type": "ComboBox Chooser", + "_source0": "network_table:///SmartDashboard/SendableChooser[5]", "_title": "Operator Controller" } }, @@ -150,6 +155,7 @@ ], "content": { "_type": "Boolean Box", + "_source0": "network_table:///SmartDashboard/In Teleop", "_title": "In Teleop", "Colors/Color when true": "#7CFC00FF", "Colors/Color when false": "#8B0000FF" @@ -162,6 +168,7 @@ ], "content": { "_type": "Simple Dial", + "_source0": "network_table:///SmartDashboard/Speed", "_title": "Speed", "Range/Min": 0.0, "Range/Max": 100.0, diff --git a/src/main/java/frc/robot/OI/OperatorInterface.java b/src/main/java/frc/robot/OI/OperatorInterface.java index baeee0b..b7b68c0 100644 --- a/src/main/java/frc/robot/OI/OperatorInterface.java +++ b/src/main/java/frc/robot/OI/OperatorInterface.java @@ -29,8 +29,8 @@ public static synchronized OperatorInterface getInstance() { } private OperatorInterface() { - xbox1 = new XboxController(3); - xbox2 = new XboxController(2); + xbox2 = new XboxController(Constants.Controllers.Operator.port); + xbox1 = new XboxController(Constants.Controllers.Driver.port); //Nyko1 = new NykoController(Constants.Controllers.Operator.port); joysticks = JoystickController.getInstance(); wheel = Wheel.getInstance(); @@ -50,19 +50,15 @@ public int getOperatorControllerInUse() { } public double getDriveThrottle() { if (driveControllerInUse == 0){ - - return xbox1.getJoystick(XboxController.Side.LEFT, XboxController.Axis.Y); + return xbox1.getJoystick(XboxController.Side.LEFT, XboxController.Axis.Y); } if (driveControllerInUse == 1){ - return joysticks.getYJoyStick_L(); } if (driveControllerInUse == 2){ - return wheel.getYWheel(); } if (driveControllerInUse == 3){ - return controllerThing.getY_thing(); } return 0; diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 5bbfc5f..a9a2c16 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -71,16 +71,16 @@ private void populateAutonomousModes(){ mAutoModes.addOption("Test Drive", new TestDriveMode()); SmartDashboard.putData(mAutoModes); mDriverControllerModes = new SendableChooser(); - mDriverControllerModes.setDefaultOption("Xbox Controller", 0); - mDriverControllerModes.addOption("Joysticks", 1); - mDriverControllerModes.addOption("Wheel", 2); - mDriverControllerModes.addOption("Thing", 3); + mDriverControllerModes.setDefaultOption("Xbox Controller(Driver)", 0); + mDriverControllerModes.addOption("Joysticks(Driver)", 1); + mDriverControllerModes.addOption("Wheel(Driver)", 2); + mDriverControllerModes.addOption("Thing(Driver)", 3); SmartDashboard.putData(mDriverControllerModes); mOperatorControllerModes = new SendableChooser(); - mOperatorControllerModes.setDefaultOption("Xbox Controller", 0); - mOperatorControllerModes.addOption("Joysticks", 1); - mOperatorControllerModes.addOption("Wheel", 2); - mOperatorControllerModes.addOption("Thing", 3); + mOperatorControllerModes.setDefaultOption("Xbox Controller(Operator)", 0); + mOperatorControllerModes.addOption("Joysticks(Operator)", 1); + mOperatorControllerModes.addOption("Wheel(Operator)", 2); + mOperatorControllerModes.addOption("Thing(Operator)", 3); SmartDashboard.putData(mOperatorControllerModes); } /** @@ -96,6 +96,8 @@ public void robotPeriodic() { SmartDashboard.putBoolean("In Teleop", inTeleop); SmartDashboard.putNumber("Speed", mOperatorInterface.getDriveThrottle()); SmartDashboard.putNumber("voltage", RobotController.getBatteryVoltage()); + SmartDashboard.putNumber("Left Encoder", mDrive.getLeftEncoderPosition()); + SmartDashboard.putNumber("Right Encoder", mDrive.getRightEncoderPosition()); } /** Called at the Start of Autonomous **/ @@ -179,7 +181,8 @@ public void disabledInit() { // create Auto Mode Executor mAutoModeExecutor = new AutoModeExecutor(); - + inAutoMode = false; + inTeleop = false; } /** This function is called periodically when disabled. */ diff --git a/src/main/java/frc/robot/subsystems/Drive.java b/src/main/java/frc/robot/subsystems/Drive.java index 2da31bd..5d892ba 100644 --- a/src/main/java/frc/robot/subsystems/Drive.java +++ b/src/main/java/frc/robot/subsystems/Drive.java @@ -420,7 +420,7 @@ public double getTurnRate() { } // Get the left encoder data in meters - private double getLeftEncoderPosition() { + public double getLeftEncoderPosition() { return CTREUnits.talonPosistionToMeters(mLeftMaster.getSelectedSensorPosition()); } @@ -428,7 +428,7 @@ private double getLeftEncoderPosition() { * Get the encoder data in meters */ // Get the right encoder data in meters - private double getRightEncoderPosition() { + public double getRightEncoderPosition() { return CTREUnits.talonPosistionToMeters(mRightMaster.getSelectedSensorPosition()); } } \ No newline at end of file From 8d7e7d9503397042613266a7e3410c94360c5ae0 Mon Sep 17 00:00:00 2001 From: GBogonis Date: Tue, 25 Jan 2022 20:15:18 -0500 Subject: [PATCH 09/14] power distribution panel smartdashboard stuff --- src/main/java/frc/robot/Robot.java | 6 ++++-- src/main/java/frc/robot/subsystems/Drive.java | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index a9a2c16..f449321 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -20,7 +20,7 @@ import frc.robot.Constants.Controllers.Operator; import frc.robot.Constants; import frc.robot.OI.XboxController.Button; - +import edu.wpi.first.wpilibj.PowerDistributionPanel; /** * The VM is configured to automatically run this class, and to call the functions corresponding to * each mode, as described in the TimedRobot documentation. If you change the name of this class or @@ -51,6 +51,7 @@ public class Robot extends TimedRobot { private boolean inAutoMode = false; private boolean inTeleop = false; + private PowerDistributionPanel powerPanel = new PowerDistributionPanel(0); /** * This function is run when the robot is first started up and should be used for any * initialization code. @@ -95,9 +96,10 @@ public void robotPeriodic() { SmartDashboard.putBoolean("In Auto", inAutoMode); SmartDashboard.putBoolean("In Teleop", inTeleop); SmartDashboard.putNumber("Speed", mOperatorInterface.getDriveThrottle()); - SmartDashboard.putNumber("voltage", RobotController.getBatteryVoltage()); + SmartDashboard.putNumber("battery", RobotController.getBatteryVoltage()); SmartDashboard.putNumber("Left Encoder", mDrive.getLeftEncoderPosition()); SmartDashboard.putNumber("Right Encoder", mDrive.getRightEncoderPosition()); + SmartDashboard.putNumber("voltage",powerPanel.getVoltage()); } /** Called at the Start of Autonomous **/ diff --git a/src/main/java/frc/robot/subsystems/Drive.java b/src/main/java/frc/robot/subsystems/Drive.java index 5d892ba..99be99c 100644 --- a/src/main/java/frc/robot/subsystems/Drive.java +++ b/src/main/java/frc/robot/subsystems/Drive.java @@ -24,6 +24,7 @@ import edu.wpi.first.wpilibj.geometry.Pose2d; import edu.wpi.first.wpilibj.RobotController; + /* import com.ctre.phoenix.motorcontrol.can.WPI_TalonFX; import com.ctre.phoenix.motorcontrol.can.TalonFX; From b64ccd9bc975aa077def478ed37d2e7b09a7533a Mon Sep 17 00:00:00 2001 From: GBogonis Date: Wed, 26 Jan 2022 20:22:24 -0500 Subject: [PATCH 10/14] power panel is working in smart dashboard :) --- shuffleboard.json | 18 +++++++++++++++--- src/main/java/frc/robot/Robot.java | 2 +- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/shuffleboard.json b/shuffleboard.json index 8350acd..6fee0e0 100644 --- a/shuffleboard.json +++ b/shuffleboard.json @@ -188,7 +188,7 @@ "hgap": 16.0, "vgap": 16.0, "tiles": { - "0,0": { + "0,1": { "size": [ 3, 2 @@ -204,7 +204,7 @@ "Visuals/Show text": true } }, - "0,2": { + "0,3": { "size": [ 3, 2 @@ -220,7 +220,7 @@ "Visuals/Show text": true } }, - "3,0": { + "3,1": { "size": [ 2, 2 @@ -234,6 +234,18 @@ "Visuals/Show tick mark ring": true, "Visuals/Counter clockwise": false } + }, + "8,1": { + "size": [ + 5, + 4 + ], + "content": { + "_type": "PDP", + "_source0": "network_table:///LiveWindow/Ungrouped/PowerDistributionPanel[0]", + "_title": "PDP", + "Visuals/Show voltage and current values": true + } } } } diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index f449321..496560d 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -99,7 +99,7 @@ public void robotPeriodic() { SmartDashboard.putNumber("battery", RobotController.getBatteryVoltage()); SmartDashboard.putNumber("Left Encoder", mDrive.getLeftEncoderPosition()); SmartDashboard.putNumber("Right Encoder", mDrive.getRightEncoderPosition()); - SmartDashboard.putNumber("voltage",powerPanel.getVoltage()); + SmartDashboard.putData("power panel",powerPanel); } /** Called at the Start of Autonomous **/ From 3ae8b092eaba25be1813c261375b19a844f1d3a3 Mon Sep 17 00:00:00 2001 From: GBogonis Date: Fri, 28 Jan 2022 20:05:28 -0500 Subject: [PATCH 11/14] added accelerometer stuff :3 --- src/main/java/frc/robot/Robot.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 496560d..23c900a 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -6,6 +6,7 @@ import edu.wpi.first.wpilibj.RobotController; import edu.wpi.first.wpilibj.TimedRobot; +import edu.wpi.first.wpilibj.interfaces.Accelerometer; import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import frc.robot.OI.OperatorInterface; @@ -20,6 +21,7 @@ import frc.robot.Constants.Controllers.Operator; import frc.robot.Constants; import frc.robot.OI.XboxController.Button; +import edu.wpi.first.wpilibj.BuiltInAccelerometer; import edu.wpi.first.wpilibj.PowerDistributionPanel; /** * The VM is configured to automatically run this class, and to call the functions corresponding to @@ -52,6 +54,7 @@ public class Robot extends TimedRobot { private boolean inAutoMode = false; private boolean inTeleop = false; private PowerDistributionPanel powerPanel = new PowerDistributionPanel(0); + private Accelerometer accelerometer = new BuiltInAccelerometer(); /** * This function is run when the robot is first started up and should be used for any * initialization code. @@ -100,6 +103,9 @@ public void robotPeriodic() { SmartDashboard.putNumber("Left Encoder", mDrive.getLeftEncoderPosition()); SmartDashboard.putNumber("Right Encoder", mDrive.getRightEncoderPosition()); SmartDashboard.putData("power panel",powerPanel); + SmartDashboard.putNumber("accel X", accelerometer.getX()); + SmartDashboard.putNumber("accel Y", accelerometer.getY()); + SmartDashboard.putNumber("accel Z", accelerometer.getZ()); } /** Called at the Start of Autonomous **/ From b94e64ef2f2616a2ebca6a590ca33c56fe78d49d Mon Sep 17 00:00:00 2001 From: GBogonis Date: Fri, 28 Jan 2022 20:06:31 -0500 Subject: [PATCH 12/14] edited layouts :3 --- shuffleboard.json | 161 +++++++++++++++++++++------------------------- 1 file changed, 72 insertions(+), 89 deletions(-) diff --git a/shuffleboard.json b/shuffleboard.json index 6fee0e0..bb80fc1 100644 --- a/shuffleboard.json +++ b/shuffleboard.json @@ -10,25 +10,10 @@ "hgap": 16.0, "vgap": 16.0, "tiles": { - "6,4": { - "size": [ - 4, - 4 - ], - "content": { - "_type": "Gyro", - "_source0": "network_table:///LiveWindow/Ungrouped/ADXRS450_Gyro[0]", - "_title": "Gyro", - "Visuals/Major tick spacing": 45.0, - "Visuals/Starting angle": 180.0, - "Visuals/Show tick mark ring": true, - "Visuals/Counter clockwise": false - } - }, "0,2": { "size": [ - 4, - 2 + 5, + 3 ], "content": { "_type": "ComboBox Chooser", @@ -36,9 +21,9 @@ "_title": "Auto Mode" } }, - "13,2": { + "5,2": { "size": [ - 11, + 14, 9 ], "content": { @@ -54,9 +39,9 @@ "imageHeight": -1 } }, - "4,4": { + "19,9": { "size": [ - 2, + 5, 2 ], "content": { @@ -67,69 +52,21 @@ "Colors/Color when false": "#8B0000FF" } }, - "10,5": { - "size": [ - 3, - 3 - ], - "content": { - "_type": "Number Bar", - "_source0": "network_table:///SmartDashboard/Right Encoder", - "_title": "Right Encoder", - "Range/Min": -1.0, - "Range/Max": 1.0, - "Range/Center": 0.0, - "Visuals/Num tick marks": 5, - "Visuals/Show text": true - } - }, - "10,8": { + "19,2": { "size": [ - 3, - 3 - ], - "content": { - "_type": "Number Bar", - "_source0": "network_table:///SmartDashboard/Left Encoder", - "_title": "Left Encoder", - "Range/Min": -1.0, - "Range/Max": 1.0, - "Range/Center": 0.0, - "Visuals/Num tick marks": 5, - "Visuals/Show text": true - } - }, - "0,8": { - "size": [ - 10, + 5, 3 ], - "content": { - "_type": "Voltage View", - "_source0": "network_table:///SmartDashboard/voltage", - "_title": "Voltage", - "Range/Min": 0.0, - "Range/Max": 20.0, - "Range/Center": 0.0, - "Visuals/Orientation": "HORIZONTAL", - "Visuals/Number of tick marks": 5 - } - }, - "4,2": { - "size": [ - 6, - 2 - ], "content": { "_type": "Basic FMS Info", "_source0": "network_table:///FMSInfo", "_title": "Match Info" } }, - "0,4": { + "0,5": { "size": [ - 4, - 2 + 5, + 3 ], "content": { "_type": "ComboBox Chooser", @@ -137,10 +74,10 @@ "_title": "Drive Controller" } }, - "0,6": { + "0,8": { "size": [ - 4, - 2 + 5, + 3 ], "content": { "_type": "ComboBox Chooser", @@ -148,9 +85,9 @@ "_title": "Operator Controller" } }, - "4,6": { + "19,7": { "size": [ - 2, + 5, 2 ], "content": { @@ -161,18 +98,16 @@ "Colors/Color when false": "#8B0000FF" } }, - "10,2": { + "19,5": { "size": [ - 3, - 3 + 5, + 2 ], "content": { - "_type": "Simple Dial", - "_source0": "network_table:///SmartDashboard/Speed", - "_title": "Speed", - "Range/Min": 0.0, - "Range/Max": 100.0, - "Visuals/Show value": true + "_type": "Boolean Box", + "_title": "Auto steer", + "Colors/Color when true": "#7CFC00FF", + "Colors/Color when false": "#8B0000FF" } } } @@ -238,7 +173,7 @@ "8,1": { "size": [ 5, - 4 + 5 ], "content": { "_type": "PDP", @@ -246,6 +181,54 @@ "_title": "PDP", "Visuals/Show voltage and current values": true } + }, + "3,3": { + "size": [ + 2, + 2 + ], + "content": { + "_type": "Number Bar", + "_source0": "network_table:///SmartDashboard/accel X", + "_title": "SmartDashboard/accel X", + "Range/Min": -1.0, + "Range/Max": 1.0, + "Range/Center": 0.0, + "Visuals/Num tick marks": 5, + "Visuals/Show text": true + } + }, + "5,3": { + "size": [ + 2, + 2 + ], + "content": { + "_type": "Number Bar", + "_source0": "network_table:///SmartDashboard/accel Y", + "_title": "SmartDashboard/accel Y", + "Range/Min": -1.0, + "Range/Max": 1.0, + "Range/Center": 0.0, + "Visuals/Num tick marks": 5, + "Visuals/Show text": true + } + }, + "5,1": { + "size": [ + 2, + 2 + ], + "content": { + "_type": "Number Bar", + "_source0": "network_table:///SmartDashboard/accel Z", + "_title": "SmartDashboard/accel Z", + "Range/Min": -1.0, + "Range/Max": 1.0, + "Range/Center": 0.0, + "Visuals/Num tick marks": 5, + "Visuals/Show text": true + } } } } From 7bf086c5df195b015d1245faea327429b099dba3 Mon Sep 17 00:00:00 2001 From: GBogonis Date: Wed, 2 Feb 2022 20:15:26 -0500 Subject: [PATCH 13/14] small change to shuffle board layout --- shuffleboard.json | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/shuffleboard.json b/shuffleboard.json index bb80fc1..be3efaa 100644 --- a/shuffleboard.json +++ b/shuffleboard.json @@ -21,27 +21,9 @@ "_title": "Auto Mode" } }, - "5,2": { - "size": [ - 14, - 9 - ], - "content": { - "_type": "Camera Stream", - "_title": "Camera Stream", - "Crosshair/Show crosshair": true, - "Crosshair/Crosshair color": "#FFFFFFFF", - "Controls/Show controls": true, - "Controls/Rotation": "NONE", - "compression": -1.0, - "fps": -1, - "imageWidth": -1, - "imageHeight": -1 - } - }, - "19,9": { + "5,9": { "size": [ - 5, + 19, 2 ], "content": { @@ -52,9 +34,9 @@ "Colors/Color when false": "#8B0000FF" } }, - "19,2": { + "5,2": { "size": [ - 5, + 19, 3 ], "content": { @@ -85,9 +67,9 @@ "_title": "Operator Controller" } }, - "19,7": { + "5,7": { "size": [ - 5, + 19, 2 ], "content": { @@ -98,9 +80,9 @@ "Colors/Color when false": "#8B0000FF" } }, - "19,5": { + "5,5": { "size": [ - 5, + 19, 2 ], "content": { From 5d55b0362002a79431467db624f9b5966d0273ca Mon Sep 17 00:00:00 2001 From: GBogonis Date: Thu, 3 Feb 2022 19:48:15 -0500 Subject: [PATCH 14/14] Big changes to the smartdashboard layout --- shuffleboard.json | 188 +++++++++++++++++------------ src/main/java/frc/robot/Robot.java | 19 ++- 2 files changed, 124 insertions(+), 83 deletions(-) diff --git a/shuffleboard.json b/shuffleboard.json index be3efaa..45a7099 100644 --- a/shuffleboard.json +++ b/shuffleboard.json @@ -21,30 +21,6 @@ "_title": "Auto Mode" } }, - "5,9": { - "size": [ - 19, - 2 - ], - "content": { - "_type": "Boolean Box", - "_source0": "network_table:///SmartDashboard/In Auto", - "_title": "In Auto", - "Colors/Color when true": "#7CFC00FF", - "Colors/Color when false": "#8B0000FF" - } - }, - "5,2": { - "size": [ - 19, - 3 - ], - "content": { - "_type": "Basic FMS Info", - "_source0": "network_table:///FMSInfo", - "_title": "Match Info" - } - }, "0,5": { "size": [ 5, @@ -67,27 +43,38 @@ "_title": "Operator Controller" } }, - "5,7": { + "5,8": { "size": [ - 19, - 2 + 7, + 3 ], "content": { "_type": "Boolean Box", - "_source0": "network_table:///SmartDashboard/In Teleop", - "_title": "In Teleop", + "_title": "Auto steer", "Colors/Color when true": "#7CFC00FF", "Colors/Color when false": "#8B0000FF" } }, "5,5": { "size": [ - 19, - 2 + 7, + 3 ], "content": { "_type": "Boolean Box", - "_title": "Auto steer", + "_title": "Ball in sight", + "Colors/Color when true": "#7CFC00FF", + "Colors/Color when false": "#8B0000FF" + } + }, + "5,2": { + "size": [ + 7, + 3 + ], + "content": { + "_type": "Boolean Box", + "_title": "In climbing mode", "Colors/Color when true": "#7CFC00FF", "Colors/Color when false": "#8B0000FF" } @@ -105,42 +92,32 @@ "hgap": 16.0, "vgap": 16.0, "tiles": { - "0,1": { + "0,2": { "size": [ 3, - 2 + 1 ], "content": { - "_type": "Number Bar", - "_source0": "network_table:///SmartDashboard/encoder_left", - "_title": "Left encoder", - "Range/Min": -1.0, - "Range/Max": 1.0, - "Range/Center": 0.0, - "Visuals/Num tick marks": 5, - "Visuals/Show text": true + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Left Encoder", + "_title": "Left encoder" } }, - "0,3": { + "0,1": { "size": [ 3, - 2 + 1 ], "content": { - "_type": "Number Bar", - "_source0": "network_table:///SmartDashboard/encoder_right", - "_title": "Right encoder", - "Range/Min": -1.0, - "Range/Max": 1.0, - "Range/Center": 0.0, - "Visuals/Num tick marks": 5, - "Visuals/Show text": true + "_type": "Text View", + "_source0": "network_table:///SmartDashboard/Right Encoder", + "_title": "Right encoder" } }, - "3,1": { + "6,1": { "size": [ - 2, - 2 + 3, + 3 ], "content": { "_type": "Gyro", @@ -152,27 +129,26 @@ "Visuals/Counter clockwise": false } }, - "8,1": { + "9,1": { "size": [ - 5, + 4, 5 ], "content": { "_type": "PDP", - "_source0": "network_table:///LiveWindow/Ungrouped/PowerDistributionPanel[0]", - "_title": "PDP", + "_source0": "network_table:///SmartDashboard/power panel", + "_title": "Power panel", "Visuals/Show voltage and current values": true } }, - "3,3": { + "0,4": { "size": [ - 2, - 2 + 3, + 1 ], "content": { "_type": "Number Bar", - "_source0": "network_table:///SmartDashboard/accel X", - "_title": "SmartDashboard/accel X", + "_title": "Climber", "Range/Min": -1.0, "Range/Max": 1.0, "Range/Center": 0.0, @@ -180,15 +156,14 @@ "Visuals/Show text": true } }, - "5,3": { + "0,3": { "size": [ - 2, - 2 + 3, + 1 ], "content": { "_type": "Number Bar", - "_source0": "network_table:///SmartDashboard/accel Y", - "_title": "SmartDashboard/accel Y", + "_title": "Arm (In \u0026 Out)", "Range/Min": -1.0, "Range/Max": 1.0, "Range/Center": 0.0, @@ -196,20 +171,75 @@ "Visuals/Show text": true } }, - "5,1": { + "3,1": { "size": [ - 2, - 2 + 3, + 3 ], "content": { - "_type": "Number Bar", - "_source0": "network_table:///SmartDashboard/accel Z", - "_title": "SmartDashboard/accel Z", - "Range/Min": -1.0, - "Range/Max": 1.0, + "_type": "Gyro", + "_title": "Shoulder", + "Visuals/Major tick spacing": 45.0, + "Visuals/Starting angle": 180.0, + "Visuals/Show tick mark ring": true, + "Visuals/Counter clockwise": false + } + }, + "3,4": { + "size": [ + 3, + 1 + ], + "content": { + "_type": "Boolean Box", + "_source0": "network_table:///SmartDashboard/In Auto", + "_title": "/SmartDashboard/In Auto", + "Colors/Color when true": "#7CFC00FF", + "Colors/Color when false": "#8B0000FF" + } + }, + "6,4": { + "size": [ + 3, + 1 + ], + "content": { + "_type": "Boolean Box", + "_source0": "network_table:///SmartDashboard/In Teleop", + "_title": "/SmartDashboard/In Teleop", + "Colors/Color when true": "#7CFC00FF", + "Colors/Color when false": "#8B0000FF" + } + }, + "0,5": { + "size": [ + 3, + 1 + ], + "content": { + "_type": "Voltage View", + "_source0": "network_table:///SmartDashboard/battery", + "_title": "battery", + "Range/Min": 0.0, + "Range/Max": 15.0, "Range/Center": 0.0, - "Visuals/Num tick marks": 5, - "Visuals/Show text": true + "Visuals/Orientation": "HORIZONTAL", + "Visuals/Number of tick marks": 5 + } + }, + "3,5": { + "size": [ + 6, + 1 + ], + "content": { + "_type": "3-Axis Accelerometer", + "_source0": "network_table:///LiveWindow/Ungrouped/BuiltInAccel[0]", + "_title": "3-Axis Accelerometer", + "Accelerometer/Range": "k16G", + "Visuals/Show value": true, + "Visuals/Precision": 2, + "Visuals/Show tick marks": false } } } diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 23c900a..5abbd47 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -55,6 +55,10 @@ public class Robot extends TimedRobot { private boolean inTeleop = false; private PowerDistributionPanel powerPanel = new PowerDistributionPanel(0); private Accelerometer accelerometer = new BuiltInAccelerometer(); + + private double accelX = accelerometer.getX(); + private double accelY = accelerometer.getY(); + private double accelZ = accelerometer.getZ(); /** * This function is run when the robot is first started up and should be used for any * initialization code. @@ -96,16 +100,23 @@ private void populateAutonomousModes(){ */ @Override public void robotPeriodic() { + if (accelX < 0.10 && accelX > -0.10){accelX=0;} + if (accelY < 0.10 && accelY > -0.10){accelY=0;} + if (accelZ < 0.10 && accelZ > -0.10){accelZ=0;} + SmartDashboard.putBoolean("In Auto", inAutoMode); SmartDashboard.putBoolean("In Teleop", inTeleop); SmartDashboard.putNumber("Speed", mOperatorInterface.getDriveThrottle()); SmartDashboard.putNumber("battery", RobotController.getBatteryVoltage()); - SmartDashboard.putNumber("Left Encoder", mDrive.getLeftEncoderPosition()); + SmartDashboard.putNumber("Left Encoder", mDrive.getLeftEncoderPosition()*-1); SmartDashboard.putNumber("Right Encoder", mDrive.getRightEncoderPosition()); SmartDashboard.putData("power panel",powerPanel); - SmartDashboard.putNumber("accel X", accelerometer.getX()); - SmartDashboard.putNumber("accel Y", accelerometer.getY()); - SmartDashboard.putNumber("accel Z", accelerometer.getZ()); + SmartDashboard.putNumber("accel X", accelX); + SmartDashboard.putNumber("accel Y", accelY); + SmartDashboard.putNumber("accel Z", accelZ); + //Ball targeting stuff + //SmartDashboard.putBoolean("Value Target", ___); + //SmartDashboard.putNumber("Target angle", ___) } /** Called at the Start of Autonomous **/