From 7cbf3f805d4ea2cc1f497b615e53a91dcaa0e578 Mon Sep 17 00:00:00 2001 From: jizelda <70440778+jizelda@users.noreply.github.com> Date: Tue, 22 Feb 2022 20:07:17 +0200 Subject: [PATCH 1/2] first commit --- src/main/java/frc/robot/Robot.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 763b065c..2a02006d 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -5,6 +5,12 @@ package frc.robot; +import org.opencv.core.Mat; + +import edu.wpi.first.cameraserver.CameraServer; +import edu.wpi.first.cscore.CvSink; +import edu.wpi.first.cscore.CvSource; +import edu.wpi.first.cscore.UsbCamera; import edu.wpi.first.wpilibj.TimedRobot; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.CommandScheduler; @@ -19,6 +25,8 @@ public class Robot extends TimedRobot { private Command m_autonomousCommand; private RobotContainer m_robotContainer; + + private Thread m_visionThread; /** * This function is run when the robot is first started up and should be used for any * initialization code. @@ -28,6 +36,20 @@ public void robotInit() { // Instantiate our RobotContainer. This will perform all our button bindings, and put our // autonomous chooser on the dashboard. m_robotContainer = new RobotContainer(); + m_visionThread = new Thread( + () -> { + UsbCamera visionCamera = CameraServer.startAutomaticCapture(); + visionCamera.setResolution(1920, 1080); + CvSink image = CameraServer.getVideo(); + CvSource outputStream = CameraServer.putVideo("video test", 1920, 1080); + Mat imageMat = new Mat(); + while (!Thread.interrupted()) { + image.grabFrame(imageMat); + outputStream.putFrame(imageMat); + } + }); + m_visionThread.setDaemon(true); + m_visionThread.start(); } /** From 4d81f5ee2cd5fd8e77f5cadbe54075dc422faf34 Mon Sep 17 00:00:00 2001 From: jizelda <70440778+jizelda@users.noreply.github.com> Date: Sat, 26 Feb 2022 20:16:32 +0200 Subject: [PATCH 2/2] reformat robot.java --- src/main/java/frc/robot/Robot.java | 207 ++++++++++++++++------------- 1 file changed, 112 insertions(+), 95 deletions(-) diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 2a02006d..7327ee85 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -4,7 +4,6 @@ package frc.robot; - import org.opencv.core.Mat; import edu.wpi.first.cameraserver.CameraServer; @@ -16,108 +15,126 @@ import edu.wpi.first.wpilibj2.command.CommandScheduler; /** - * 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 - * the package after creating this project, you must also update the build.gradle file in the + * 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 + * the package after creating this project, you must also update the + * build.gradle file in the * project. */ public class Robot extends TimedRobot { - private Command m_autonomousCommand; - - private RobotContainer m_robotContainer; - - private Thread m_visionThread; - /** - * This function is run when the robot is first started up and should be used for any - * initialization code. - */ - @Override - public void robotInit() { - // Instantiate our RobotContainer. This will perform all our button bindings, and put our - // autonomous chooser on the dashboard. - m_robotContainer = new RobotContainer(); - m_visionThread = new Thread( - () -> { - UsbCamera visionCamera = CameraServer.startAutomaticCapture(); - visionCamera.setResolution(1920, 1080); - CvSink image = CameraServer.getVideo(); - CvSource outputStream = CameraServer.putVideo("video test", 1920, 1080); - Mat imageMat = new Mat(); - while (!Thread.interrupted()) { - image.grabFrame(imageMat); - outputStream.putFrame(imageMat); - } - }); - m_visionThread.setDaemon(true); - m_visionThread.start(); - } - - /** - * This function is called every robot packet, no matter the mode. Use this for items like - * diagnostics that you want ran during disabled, autonomous, teleoperated and test. - * - *
This runs after the mode specific periodic functions, but before LiveWindow and - * SmartDashboard integrated updating. - */ - @Override - public void robotPeriodic() { - // Runs the Scheduler. This is responsible for polling buttons, adding newly-scheduled - // commands, running already-scheduled commands, removing finished or interrupted commands, - // and running subsystem periodic() methods. This must be called from the robot's periodic - // block in order for anything in the Command-based framework to work. - CommandScheduler.getInstance().run(); - } - - /** This function is called once each time the robot enters Disabled mode. */ - @Override - public void disabledInit() { - m_robotContainer.disableInit(); - } - - @Override - public void disabledPeriodic() {} - - /** This autonomous runs the autonomous command selected by your {@link RobotContainer} class. */ - @Override - public void autonomousInit() { - m_robotContainer.calibrateDrivetrainSteering(); - m_autonomousCommand = m_robotContainer.getAutonomousCommand(); - // schedule the autonomous command (example) - if (m_autonomousCommand != null) { - m_autonomousCommand.schedule(); + private Command m_autonomousCommand; + + private RobotContainer m_robotContainer; + + private Thread m_visionThread; + + /** + * This function is run when the robot is first started up and should be used + * for any + * initialization code. + */ + @Override + public void robotInit() { + // Instantiate our RobotContainer. This will perform all our button bindings, + // and put our + // autonomous chooser on the dashboard. + m_robotContainer = new RobotContainer(); + m_visionThread = new Thread( + () -> { + UsbCamera visionCamera = CameraServer.startAutomaticCapture(); + visionCamera.setResolution(1920, 1080); + CvSink image = CameraServer.getVideo(); + CvSource outputStream = CameraServer.putVideo("video test", 1920, 1080); + Mat imageMat = new Mat(); + while (!Thread.interrupted()) { + image.grabFrame(imageMat); + outputStream.putFrame(imageMat); + } + }); + m_visionThread.setDaemon(true); + m_visionThread.start(); + } + + /** + * This function is called every robot packet, no matter the mode. Use this for + * items like + * diagnostics that you want ran during disabled, autonomous, teleoperated and + * test. + * + *
+ * This runs after the mode specific periodic functions, but before LiveWindow + * and + * SmartDashboard integrated updating. + */ + @Override + public void robotPeriodic() { + // Runs the Scheduler. This is responsible for polling buttons, adding + // newly-scheduled + // commands, running already-scheduled commands, removing finished or + // interrupted commands, + // and running subsystem periodic() methods. This must be called from the + // robot's periodic + // block in order for anything in the Command-based framework to work. + CommandScheduler.getInstance().run(); + } + + /** This function is called once each time the robot enters Disabled mode. */ + @Override + public void disabledInit() { + m_robotContainer.disableInit(); + } + + @Override + public void disabledPeriodic() { } - } - - /** This function is called periodically during autonomous. */ - @Override - public void autonomousPeriodic() {} - - @Override - 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 (m_autonomousCommand != null) { - m_autonomousCommand.cancel(); + + /** + * This autonomous runs the autonomous command selected by your + * {@link RobotContainer} class. + */ + @Override + public void autonomousInit() { + m_robotContainer.calibrateDrivetrainSteering(); + m_autonomousCommand = m_robotContainer.getAutonomousCommand(); + // schedule the autonomous command (example) + if (m_autonomousCommand != null) { + m_autonomousCommand.schedule(); + } } - m_robotContainer.calibrateDrivetrainSteering(); + /** This function is called periodically during autonomous. */ + @Override + public void autonomousPeriodic() { + } - } + @Override + 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 (m_autonomousCommand != null) { + m_autonomousCommand.cancel(); + } + m_robotContainer.calibrateDrivetrainSteering(); - /** This function is called periodically during operator control. */ - @Override - public void teleopPeriodic() { - } + } - @Override - public void testInit() { - // Cancels all running commands at the start of test mode. - CommandScheduler.getInstance().cancelAll(); - } + /** This function is called periodically during operator control. */ + @Override + public void teleopPeriodic() { + } - /** This function is called periodically during test mode. */ - @Override - public void testPeriodic() {} + @Override + public void testInit() { + // Cancels all running commands at the start of test mode. + CommandScheduler.getInstance().cancelAll(); + } + + /** This function is called periodically during test mode. */ + @Override + public void testPeriodic() { + } }