Windows support included
This commit is contained in:
81
windows/generate-drive-subsystem.bat
Normal file
81
windows/generate-drive-subsystem.bat
Normal file
@@ -0,0 +1,81 @@
|
||||
@echo off
|
||||
REM Generate Drive.java subsystem
|
||||
setlocal
|
||||
|
||||
set "PROJECT_DIR=%~1"
|
||||
|
||||
(
|
||||
echo package robot.subsystems;
|
||||
echo.
|
||||
echo import robot.Pose2d;
|
||||
echo.
|
||||
echo /**
|
||||
echo * Drive subsystem - business logic only.
|
||||
echo * Hardware interface defined as inner interface.
|
||||
echo * Tests use inline mocks - no FTC SDK needed.
|
||||
echo */
|
||||
echo public class Drive {
|
||||
echo private final Hardware hardware;
|
||||
echo private Pose2d pose;
|
||||
echo.
|
||||
echo public Drive^(Hardware hardware^) {
|
||||
echo this.hardware = hardware;
|
||||
echo this.pose = new Pose2d^(^);
|
||||
echo }
|
||||
echo.
|
||||
echo /**
|
||||
echo * Drive using field-centric controls.
|
||||
echo * @param forward Forward/backward speed ^(-1.0 to 1.0^)
|
||||
echo * @param strafe Left/right speed ^(-1.0 to 1.0^)
|
||||
echo * @param rotate Rotation speed ^(-1.0 to 1.0^)
|
||||
echo */
|
||||
echo public void drive^(double forward, double strafe, double rotate^) {
|
||||
echo // Your drive logic here
|
||||
echo double heading = hardware.getHeading^(^);
|
||||
echo.
|
||||
echo // Example: field-centric conversion
|
||||
echo double cos = Math.cos^(heading^);
|
||||
echo double sin = Math.sin^(heading^);
|
||||
echo.
|
||||
echo double rotatedForward = forward * cos - strafe * sin;
|
||||
echo double rotatedStrafe = forward * sin + strafe * cos;
|
||||
echo.
|
||||
echo hardware.setPowers^(rotatedForward, rotatedStrafe, rotate^);
|
||||
echo }
|
||||
echo.
|
||||
echo /**
|
||||
echo * Stop all drive motors.
|
||||
echo */
|
||||
echo public void stop^(^) {
|
||||
echo hardware.setPowers^(0, 0, 0^);
|
||||
echo }
|
||||
echo.
|
||||
echo /**
|
||||
echo * Get current estimated pose.
|
||||
echo */
|
||||
echo public Pose2d getPose^(^) {
|
||||
echo return pose;
|
||||
echo }
|
||||
echo.
|
||||
echo /**
|
||||
echo * Hardware interface - implement this for real robot.
|
||||
echo */
|
||||
echo public interface Hardware {
|
||||
echo /**
|
||||
echo * Get robot heading in radians.
|
||||
echo */
|
||||
echo double getHeading^(^);
|
||||
echo.
|
||||
echo /**
|
||||
echo * Set drive motor powers.
|
||||
echo * @param forward Forward power
|
||||
echo * @param strafe Strafe power
|
||||
echo * @param rotate Rotation power
|
||||
echo */
|
||||
echo void setPowers^(double forward, double strafe, double rotate^);
|
||||
echo }
|
||||
echo }
|
||||
) > "%PROJECT_DIR%\src\main\java\robot\subsystems\Drive.java"
|
||||
|
||||
endlocal
|
||||
exit /b 0
|
||||
Reference in New Issue
Block a user