81 lines
2.3 KiB
Batchfile
81 lines
2.3 KiB
Batchfile
@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 |