Welcome to the FRC-2024 project repository! This project is designed to provide a comprehensive software solution for our competitive robot, incorporating advanced control systems, vision processing, strategic gameplay functionalities, and utilizing the command-based framework for organizing robot operations.
The project is structured into several directories, each serving a specific purpose in the robot's software architecture:
commands: Contains command classes that define operations for the robot.subsystems: Houses subsystem classes that represent different parts of the robot, such as the elevator and intake shooter.utils: Includes utility classes and enums for various functionalities.vision: Contains classes related to vision processing and interaction with the Limelight camera.
To get started with the FRC-2024 project, follow these steps:
- Clone the repository to your local machine.
- Install the required software dependencies, including WPILib and vendor libraries.
- Configure your development environment according to the WPILib documentation.
- Build the project using Gradle to verify the setup.
For comprehensive documentation on WPILib and the command-based framework, refer to WPILib Documentation.
We welcome contributions from all team members! To contribute, please adhere to our coding standards and review process, detailed in CONTRIBUTING.md.
This project relies on several external libraries and tools:
- WPILib Suite
- PathPlanner for autonomous path planning
- REVLib for interfacing with REV Hardware
Refer to the build.gradle file for specific version requirements.
- SmartDashboard/Shuffleboard: Used for real-time data visualization and control interface.
- Limelight Camera: Provides vision processing capabilities for target detection and alignment.
- PathPlanner: Path visualization software for autonomous path planning.
The command framework is a powerful feature of WPILib that simplifies robot programming by allowing complex robot operations to be broken down into simpler, reusable, and modular tasks. This framework encourages a clean separation between the robot's subsystems and the commands that operate on them, enhancing code maintainability and team collaboration.
Benefits of using the command framework include:
- Ease of Use: Simplifies the programming model, making it more accessible to new team members.
- Modularity: Encourages modular design, allowing teams to develop, test, and debug different parts of the robot software independently.
- Reusability: Commands and subsystems can be reused across different parts of the robot or in future projects, saving development time.
By leveraging the command framework, teams can focus on strategic gameplay and robot functionality, rather than getting bogged down in the complexities of low-level robot control.
This project is licensed under the MIT License. See LICENSE for more information.