{"id":30577835,"url":"https://github.com/yet-another-software-suite/yams","last_synced_at":"2026-03-06T07:03:50.860Z","repository":{"id":284817898,"uuid":"955963918","full_name":"Yet-Another-Software-Suite/YAMS","owner":"Yet-Another-Software-Suite","description":"Yet Another Mechanism System for FRC and FTC","archived":false,"fork":false,"pushed_at":"2025-08-26T02:05:08.000Z","size":1183,"stargazers_count":8,"open_issues_count":6,"forks_count":11,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-26T04:16:20.097Z","etag":null,"topics":["frc","ftc","wpilib","yagsl","yass"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yet-Another-Software-Suite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-27T13:35:02.000Z","updated_at":"2025-08-26T02:05:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"79f567bf-704e-4dc8-a6b7-9534198f35b3","html_url":"https://github.com/Yet-Another-Software-Suite/YAMS","commit_stats":null,"previous_names":["thenetworkgrinch/yams","yet-another-software-suite/yams"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Yet-Another-Software-Suite/YAMS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yet-Another-Software-Suite%2FYAMS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yet-Another-Software-Suite%2FYAMS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yet-Another-Software-Suite%2FYAMS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yet-Another-Software-Suite%2FYAMS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yet-Another-Software-Suite","download_url":"https://codeload.github.com/Yet-Another-Software-Suite/YAMS/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yet-Another-Software-Suite%2FYAMS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272617736,"owners_count":24965400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-29T02:00:10.610Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["frc","ftc","wpilib","yagsl","yass"],"created_at":"2025-08-29T03:00:50.928Z","updated_at":"2026-01-02T21:15:31.301Z","avatar_url":"https://github.com/Yet-Another-Software-Suite.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YAMS - Yet Another Mechanism System\n[![Documentation](https://github.com/Yet-Another-Software-Suite/YAMS/actions/workflows/build-pdf.yml/badge.svg)](https://github.com/Yet-Another-Software-Suite/YAMS/actions/workflows/build-pdf.yml) [![CI](https://github.com/Yet-Another-Software-Suite/YAMS/actions/workflows/ci.yml/badge.svg)](https://github.com/Yet-Another-Software-Suite/YAMS/actions/workflows/ci.yml) [![Release](https://github.com/Yet-Another-Software-Suite/YAMS/actions/workflows/release.yml/badge.svg)](https://github.com/Yet-Another-Software-Suite/YAMS/actions/workflows/release.yml)\n\n\u003e ✨ A flexible, extensible FRC mechanism library built for elevators, arms, turrets, and more — with simulation and telemetry included.\n\n**YAMS** is a WPILib-compatible library that provides a **unified and extensible interface** for common FRC mechanisms like **elevators**, **arms**, and **pivots** (e.g., turrets). It emphasizes clean separation of control, simulation, and configuration, while offering first-class support for **telemetry**, **feedforward**, and **tuning**.\n\n---\n\n## 📖 Documentation\n\n[YAMS Gitbook](https://yagsl.gitbook.io/yams/documentation)\n\n[YASS Website](https://yetanothersoftwaresuite.com)\n\n---\n\n## 🔧 Key Features\n\n- 🧠 Unified interfaces for `Arm`, `Elevator`, and `Pivot` mechanisms  \n- ⚙️ CTRE-style configuration: familiar and readable  \n- 🛠️ SmartMotorController abstraction: consistent API for different motor vendors (REV, CTRE, etc.)  \n- 🧪 Physics-based simulation support (`simIterate()`)  \n- 📊 Built-in telemetry (works with AdvantageKit, NT, and custom logging)  \n- 🔁 Composable and declarative configuration style  \n\n---\n\n## 📦 Installation (WPILib Vendordep)\n\n1. In **VS Code** with WPILib extension:\n   - Open Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`)\n   - Select: `WPILib: Manage Vendor Libraries`\n   - Choose `Install new library (online or offline)`\n   - Select **Online**\n   - Paste the URL to the YAMS vendordep JSON file, e.g.:  \n     `https://yet-another-software-suite.github.io/YAMS/yams.json`\n   - Press Enter to install\n\n---\n\n\n## 📂 Examples\n\nThe repository contains several example projects under the `/examples` folder demonstrating how to use YAMS for arms, elevators, pivots, and combined subsystems.\n\nThese example projects do **not** include YAMS as a dependency via Maven or vendordep directly. Instead, they use a modified `build.gradle` that links the YAMS source code located in the `/yams` folder relative to the example.\n\nThis is done by adding the following snippet to the `sourceSets` block in each example’s `build.gradle`:\n\n```groovy\nsourceSets {\n    main {\n        java {\n            srcDirs 'src/main/java'\n            srcDirs '../../yams/'\n        }\n    }\n}\n```\n\n---\n## 🚀 Quick Example\n\nHere’s a simplified `ArmSubsystem` using a wrapped `TalonFX`:\n\n```java\npublic class ArmSubsystem extends SubsystemBase {\n  private final TalonFXS armMotor = new TalonFXS(1);\n  private final SmartMotorController motor = new TalonFXSWrapper(armMotor, DCMotor.getNEO(1),\n      new SmartMotorControllerConfig(this)\n          .withClosedLoopController(4, 0, 0, DegreesPerSecond.of(180), DegreesPerSecondPerSecond.of(90))\n          .withSoftLimit(Degrees.of(-30), Degrees.of(100))\n          .withGearing(gearing(gearbox(3, 4)))\n          .withIdleMode(MotorMode.BRAKE)\n          .withTelemetry(\"ArmMotor\", TelemetryVerbosity.HIGH)\n          .withStatorCurrentLimit(Amps.of(40))\n          .withFeedforward(new ArmFeedforward(0, 0, 0, 0))\n          .withControlMode(ControlMode.CLOSED_LOOP)\n  );\n\n  private final Arm arm = new Arm(new ArmConfig(motor)\n      .withLength(Meters.of(0.135))\n      .withHardLimit(Degrees.of(-100), Degrees.of(200))\n      .withStartingPosition(Degrees.of(0))\n      .withTelemetry(\"ArmExample\", TelemetryVerbosity.HIGH)\n  );\n\n  @Override\n  public void periodic() {\n    arm.updateTelemetry();\n  }\n\n  @Override\n  public void simulationPeriodic() {\n    arm.simIterate();\n  }\n\n  public Command setAngle(Angle angle) {\n    return arm.setAngle(angle);\n  }\n}\n````\n\nMore detailed examples for **Elevator** and **Pivot** mechanisms can be found in the `/examples` folder (or your team’s repo if it includes all three like above).\n\n---\n\n## 🧪 Simulation\n\nJust call `simIterate()` inside `simulationPeriodic()` to simulate the mechanism’s physical behavior — based on voltage inputs, mass, length, and more.\n\n---\n\n## 📊 Telemetry\n\nYAMS supports telemetry via its internal telemetry interfaces and `SmartMotorControllerTelemetryConfig`.\n\nIt integrates with:\n\n* [AdvantageKit](https://github.com/Mechanical-Advantage/AdvantageKit)\n* Custom logging tools\n* NetworkTables `/Mechanisms` and `/Tuning`\n\n---\n\n## 📜 License\n\n**This project is licensed under the Lesser GNU General Public License v3.0**.\nYou are free to use, modify, and redistribute the software, provided that any derivative work is also licensed under LGPLv3.\n\nSee [`LICENSE`](./LICENSE.txt) for full details.\n\n---\n\n## 🤝 Contributing\n\nWe welcome feedback and contributions!\nOpen an issue for bug reports or feature requests, or fork and open a pull request to contribute.\n\nInspired by [Manip-Lib](https://github.com/frc5517/Manip-Lib). \n\n---\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyet-another-software-suite%2Fyams","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyet-another-software-suite%2Fyams","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyet-another-software-suite%2Fyams/lists"}