From 32feae48c01b554b0ba253bc2f4e63854aee9e18 Mon Sep 17 00:00:00 2001 From: Arkm20 Date: Mon, 23 Mar 2026 19:09:42 -0500 Subject: [PATCH] docs --- doc/ftc-lib/docs.md | 146 ++++++++++++++++++ doc/legal/AudioBlocksSounds.txt | 21 --- ...A - LEGO Open Source License Agreement.txt | 15 -- doc/legal/LEGO Open Source License.pdf | Bin 34100 -> 0 bytes doc/media/PullRequest.PNG | Bin 19655 -> 0 bytes 5 files changed, 146 insertions(+), 36 deletions(-) create mode 100644 doc/ftc-lib/docs.md delete mode 100644 doc/legal/AudioBlocksSounds.txt delete mode 100644 doc/legal/Exhibit A - LEGO Open Source License Agreement.txt delete mode 100644 doc/legal/LEGO Open Source License.pdf delete mode 100644 doc/media/PullRequest.PNG diff --git a/doc/ftc-lib/docs.md b/doc/ftc-lib/docs.md new file mode 100644 index 0000000..98ed4b2 --- /dev/null +++ b/doc/ftc-lib/docs.md @@ -0,0 +1,146 @@ +# 📦 ftc-lib Documentation + +Welcome to **ftc-lib**, a high-performance, asynchronous framework designed for FTC robotics. This library focuses on clean architecture, hardware write-optimization (caching), and powerful motion control. + +--- + +## 🏗️ 1. Subsystem Architecture +The library uses a **Subsystem-based architecture**. Every major part of your robot (Drive, Lift, Intake) should be its own class extending `Subsystem`. + +### `Subsystem` Base Class +Each subsystem must implement: +- `init()`: Hardware mapping and initial states. +- `update()`: Periodic logic (PID loops, state transitions). +- `isHealthy()`: Returns `false` if a critical sensor or motor fails. + +### `SubsysManager` +The manager coordinates all subsystems so your OpMode stays clean. +```java +SubsysManager manager = new SubsysManager(); +manager.register(drive, lift, claw); + +manager.initAll(hardwareMap); // Call in init() +manager.updateAll(); // Call in every loop() +manager.health(telemetry); // Shows [ OK ] or [ ERROR ] for all parts +``` + +--- + +## 🎬 2. Routines & Actions (Asynchronous Logic) +The **Routines** system allows you to write complex, multi-step scripts (like an Auto-Score macro) **without using `sleep()`** or freezing your robot. + +### Building Blocks +Use the `Routine` factory to create `Action` objects: + +| Method | Description | +| :--- | :--- | +| `Routine.instant(() -> ...)` | Runs code once and finishes immediately. | +| `Routine.wait(ms)` | Pauses the sequence for a set time (non-blocking). | +| `Routine.waitUntil(() -> ...)` | Pauses until a condition is met (e.g., sensor triggered). | +| `Routine.sequence(a, b)` | Runs actions one after another. | +| `Routine.parallel(a, b)` | Runs actions at the same time. | + +### Running in TeleOp +```java +// Inside your loop +if (gamepad.yWasPressed() && !routines.isBusy()) { + routines.run( + Routine.sequence( + Routine.instant(() -> lift.setTarget(1000)), + Routine.waitUntil(() -> lift.atTarget()), + Routine.instant(() -> claw.open()), + Routine.wait(250), + Routine.instant(() -> lift.setTarget(0)) + ) + ); +} +routines.updateAll(); // Actually runs the active actions +``` + +--- + +## ⚙️ 3. Optimized Hardware (`CMotor` & `CServo`) +Standard FTC hardware commands (like `setPower`) are expensive. `ftc-lib` uses **Cached Wrappers** to ensure hardware writes only happen when values actually change. + +- **`CMotor` / `CMotorEx`**: Caches power, mode, direction, and target position. +- **`CServo` / `CServoEx`**: Caches position and PWM state. + +*Benefit: Significantly higher loop frequencies (Hz) and smoother PID control.* + +--- + +## 📈 4. Control Theory & PIDF +The library includes a robust hierarchy of controllers in the `lib.pid` package. + +### Features +1. **Voltage Compensation**: Automatically scales power based on battery voltage (e.g., your lift moves the same at 14V as it does at 12V). +2. **Low-Pass Filtering**: Smooths out noisy encoder data for more stable D-term calculations. +3. **Anti-Windup**: Prevents the Integral (I) term from growing out of control. +4. **Feedforward (PIDF)**: + - `kG`: Gravity compensation for vertical lifts. + - `kCos`: Gravity compensation for rotating arms. + - `kS`: Static friction (Stiction) override. + - `kV`: Velocity feedforward. + +### Example: Lift PIDF +```java +PIDFController controller = new PIDFController(kP, kI, kD); +controller.kG = 0.1; // Holds the lift against gravity +double power = controller.calculate(currentTicks); +motor.setPower(power); +``` + +--- + +## 🏎️ 5. Motion Profiling (`smooth`) +For smooth, "robotic" movement, use the `smooth` class to generate **Trapezoidal Motion Profiles**. This prevents jerky movements that snap belts or tip the robot. + +```java +smooth profile = new smooth(maxVel, maxAccel); +profile.generate(startPos, targetPos); + +// In update loop +State state = profile.calculate(); +liftController.setTarget(state.pos); +// state.vel can be used for kV feedforward! +``` + +--- + +## 🎮 6. Enhanced Gamepad +`EnhancedGamepad` wraps the standard `Gamepad` to provide essential features for driver control: +- **Rising Edge Detection**: `aWasPressed()` (True only on the exact frame the button is clicked). +- **Falling Edge Detection**: `aWasReleased()`. +- **Stick Scaling**: Automatically applies a cubic curve and deadbands to sticks for finer precision. +- **Trigger Buttons**: Use `left_trigger_btn()` to treat a trigger like a digital button. + +--- + +## 👁️ 7. Vision Utilities (`LLUtil`) +A wrapper for the **Limelight 3A** that simplifies targeting: +- **Distance Estimation**: Includes two methods: + 1. `getTrigDistance()`: Uses mounting angle and trigonometry. + 2. `getAreaDistance()`: Uses a power-regression curve based on target area (`ta`). +- **Data Freshness**: `isDataFresh()` checks if the target was lost recently to prevent "snapping" to old data. + +--- + +## 🛠️ 8. Health Monitoring +The `health` utility allows any part of the code to report a hardware fault. +```java +// Inside a subsystem +if (motor.getCurrentAmps() > 10.0) { + health.reportFault("LIFT_STALL"); +} + +// In Telemetry +telemetry.addData("Faults", health.getFaults()); +``` + +--- + +## 💡 Best Practices +1. **Never use `Thread.sleep()`**: Use `Routines` instead. +2. **Update the Manager**: Ensure `subsysManager.updateAll()` and `routineManager.updateAll()` are called at the very end of your loop. +3. **Use States**: Subsystems should have internal Enums (e.g., `LiftState.INTAKING`, `LiftState.SCORING`) rather than just taking raw numbers. +4. **Voltage Comp**: Always set `BaseController.currentSystemVoltage` once per loop from your hardware map. \ No newline at end of file diff --git a/doc/legal/AudioBlocksSounds.txt b/doc/legal/AudioBlocksSounds.txt deleted file mode 100644 index 4eab3bc..0000000 --- a/doc/legal/AudioBlocksSounds.txt +++ /dev/null @@ -1,21 +0,0 @@ -The sound files listed below in this SDK were purchased from www.audioblocks.com under the -following license. - - http://support.audioblocks.com/customer/en/portal/topics/610636-licensing-faq-s/articles - - How am I allowed to use your content? - Last Updated: Aug 11, 2016 01:51PM EDT - Our content may be used for nearly any project, commercial or otherwise, including feature - films, broadcast, commercial, industrial, educational video, print projects, multimedia, - games, and the internet, so long as substantial value is added to the content. (For example, - incorporating an audio clip into a commercial qualifies, while reposting our audio clip on - YouTube with no modification or no visual component does not.) Once you download a file it is - yours to keep and use forever, royalty- free, even if you change your subscription or cancel - your account. - -List of applicable sound files - - chimeconnect.wav - chimedisconnect.wav - errormessage.wav - warningmessage.wav \ No newline at end of file diff --git a/doc/legal/Exhibit A - LEGO Open Source License Agreement.txt b/doc/legal/Exhibit A - LEGO Open Source License Agreement.txt deleted file mode 100644 index 10c13b9..0000000 --- a/doc/legal/Exhibit A - LEGO Open Source License Agreement.txt +++ /dev/null @@ -1,15 +0,0 @@ -EXHIBIT A - LEGO® Open Source License Agreement - -The contents of the file 'nxtstartupsound.wav' contained in this SDK are subject to the -LEGO® Open Source License Agreement Version 1.0 (the "License"); you may not use this -file except in compliance with the License. You may obtain a copy of the License -at "LEGO Open Source License.pdf" contained in the same directory as this exhibit. - -Software distributed under the License is distributed on an "AS IS" basis, WITHOUT -WARRANTY OF ANY KIND, either express or implied. See the License for the specific -language governing rights and limitations under the License. - -The Original Code is \AT91SAM7S256\Resource\SOUNDS\!Startup.rso. -LEGO is the owner of the Original Code. Portions created by Robert Atkinson are -Copyright (C) 2015. All Rights Reserved. -Contributor(s): Robert Atkinson. \ No newline at end of file diff --git a/doc/legal/LEGO Open Source License.pdf b/doc/legal/LEGO Open Source License.pdf deleted file mode 100644 index 9188498471221a53237117c43b1630ed8c605358..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34100 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≪93VoD#r=U^w|{NX(M#v$3KBH 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 QlVhh4X4WvG$sO!}02-HC^Z)<=