Git Product home page Git Product logo

2024-crescendo's Introduction

CurtinFRC 2024 Codebase

Our code for the 2024 FRC game, CRESCENDO, using GradleRIO, Wombat, and probably other stuff. Contains two key sections, src/ where all our robot code is stored and wombat/ where our teams library Wombat is stored. To get started follow the setup instructions and read more in CONTRIBUTING.md.

Setup

First install WPILib and if running Windows the FRC game tools. Instructions can be found here.

Fork this repository then open up a terminal and run :

git clone https://github.com/*yourusernamehere*/2024-Crescendo.git
cd 2024-Crescendo
chmod +x init.sh
./init.sh

Now look in CONTRIBUTING.md before continuing!

Windows

Fork this repository then open up a terminal and run :

git clone https:\\github.com\*yourusernamehere*\2024-Crescendo.git
cd 2024-Crescendo
.\init

Now look in CONTRIBUTING.md before continuing!

Quick Commands

These commands can be used in a variety of combinations, feel free to experiment!

Build

./gradlew build Build will compile your code without deploying it. It will also run all automated tests, which is great for testing code before it runs on a robot.

./gradlew :wombat:build Will compile and build the Wombat library. Also runs all of Wombat's inbuilt tests.

Deploy

./gradlew deploy Deploying will build your code (as above), and deploy it to the robot. You have to be connected to the robot for this to work. Just keep in mind that deploying does not run any automated tests

Clean

./gradlew clean Cleaning removes caches of your compiled code. If you do not understand an error it can often help to clean before getting help. Clean building is slower so you should not generally use it.

Simulation

Release ./gradlew :simulateNative Runs a simulation of your code at highest optimisation.

Debug ./gradlew :simulateNativeDebug Runs a debug simulation of your code, including a variety of debugging tools similar to glass but at lower optimisation.

Documentation

Our documentation for Wombat and each years codebase can be found here. It is a powerful reference for writing code using Wombat going over how to use and the implementation for everything within Wombat. It also has a variety of guides to teach you how to use a variety of things in a more tutorial style way.

2024-crescendo's People

Contributors

dependabot[bot] avatar goanna247 avatar hazzer890 avatar joystickmaster-race avatar spacey-sooty avatar sturrockpeter avatar superbro525alt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

2024-crescendo's Issues

LEDs

Is your feature request related to a problem? Please describe.
I'm always upset when people ruin my auto routine by placing the robot wrong.

Describe the solution you'd like
We could fix this by adding LEDs to the robot which start as one colour then change when vision detects we are in the correct position.

Describe alternatives you've considered
We could also have a calibration period at the beginning of auto but this wastes lots of time.

Shooter

Tracking issue for the shooter (double flywheel so Wom in built won't be used)

Improve vision

The vision code right now was copied from last year and is kinda shaky. Improvements would be appreciated

Rare Edgecase with Behaviours System

Describe the bug
In a rare edgecase the tests for behaviours fail due to an exception where tick returns false instead of true.

Environment
The only environment I have seen this occur on are Ubuntu based Linux distributions

To Reproduce
This cannot be consistently reproduced but in order to attempt it run ./gradlew build on an Ubuntu based LInux distribution

Expected behavior
This test should never fail

Additional context
image

Tracking Issue: Relevant Subsystems to store in Wombat

Over the course of this year we have constructed a variety of different subsystems for our robot and we've discarded a lot of the prebuilt stuff within Wombat. In some places this has been justified and in others it has caused a lot of wasted time. A good example of somewhere this has been justified has been the shooter. Due to the way the shooter is designed in Wombat right now when creating a double flywheel shooter we split it out of the Wombat shooter. On the other hand we have split the Arm out in a way which is not useful and has wasted a large amount of time.

Intake

Tracking issue for the intake

Climber

Is your feature request related to a problem? Please describe.
I want to code a new climber

Describe the solution you'd like
This code implements the climber

behaviour tests consistently failing on some device

Describe the bug
One test is failing for Windows users

To Reproduce
Steps to reproduce the behavior: I wish I could

Expected behavior
The tests pass

Additional context
At lest 2 people are having this issues

Vision Tracking using Limelight

Is your feature request related to a problem? Please describe.
We need an efficient method for modular Vision Tracking within Wombat

Describe the solution you'd like
Implement Vision tracking using Limelight

Intake manual fixes

Is your feature request related to a problem? Please describe.
I would like to add a autonomous-ish manual control to the intake to make it more user friendly.

Describe the solution you'd like
It will make the intake easier to control as a codriver.

Add a formatter

Is your feature request related to a problem? Please describe.
Im always frustrated when people format there code wrong

Describe the solution you'd like
we add a formatter probably wpiformat

Describe alternatives you've considered
clang format could also work

Actions don't run after the formatter action pushes

Describe the bug
After the workflow to format code runs the GitHub Actions bot makes a push with it's token. Due to using the GitHub actions runner token this doesn't cause the on pull request or on push to trigger again.

To Reproduce
Steps to reproduce the behavior:

  1. Open a pull request with failing formatting.
  2. comments /format
  3. See runs not triggering

Expected behavior
on pull request and on push are triggered.

Additional context
This is an intentional choice by GitHub to work around it we have to make a custom auth token for the actions runner.

Add a VoltageControllerGroup class

Is your feature request related to a problem? Please describe.
We need a good way to control a group of motors in a gearbox through Voltage.

Describe the solution you'd like
We create a VoltageControllerGroup class

Describe alternatives you've considered
We migrate over to WPILib MotorControllers, though this will lose us the GetVoltage function until 2025

Additional context
Could be useful in creation of Double Flywheel Shooter

Swerve

Full rewrite and optimisation of swerve code for the 2024 Season

Phoenix warnings

Where we use Phoenix is giving us a ton of warnings from within Phoenix. Hopefully this is fixed in stable but if not we need to keep that in mind

Updating to 2024 beta breaks

Describe the bug
When I bump the version to 2024.1.1-beta-3 I get the error

FAILURE: Build failed with an exception.

* What went wrong:
com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: org/gradle/api/flow/FlowAction
> java.lang.NoClassDefFoundError: org/gradle/api/flow/FlowAction

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 347ms

To Reproduce
Steps to reproduce the behavior:

  1. clone the repository
  2. bump the version to 2024.1.1-beta3
  3. attempt to use a gradlew task
  4. See error

Expected behavior
It succesfully executes the task

Environment
OS: Linux Mint
Caching: None (manually deleted)
Commit: 4dc4d7b
Shell: Bash in TMUX

Additional context
image

Swerve browning out battery

Swerve draws a large amount of power and right now to avoid the battery browning out the driver needs to put in a fair amount of work.

NOTE: this could just be cause the batteries we are testing with have no charge but its probably an issue anyways cause we aren't doing super long testing

Double Arm

Tracking issue for double arm development

Auto

Is your feature request related to a problem? Please describe.
I want to code Auto.

Describe the solution you'd like
This will run the auto for the robot.

Improve encoder Abstraction

Is your feature request related to a problem? Please describe.
The current encoder abstraction is confusing and complicated. We could simplify and improve it.

Describe the solution you'd like
We could do a rewrite of the encoder abstraction. As of now I'm thinking we keep an encoder class that either uses generics for the encoder type or you can inherit from to create each encoder.

Describe alternatives you've considered
We could keep the current one but it should probably be rewritten

Additional context
Mirror Issue here

Cancoder can bus name

add a variable for the cancoder can bus name so it can be changed from outside of wombat

Refactor and possibly optimise PID

PID is implemented in an inneficient way causing longer compile times. It should be refactored to split into a PID.h file and PID.cpp file.
This would allow us to reduce compile times.

We can possible also optimise what its actually doing under the hood, but not sure

Git hangs when cherry picking

Describe the bug
Git fails to fetch and apply commit. Succesfully fetches diff but hangs when trying to apply it.

To Reproduce
Steps to reproduce the behavior:

  1. Clone and cd into the repo
  2. add https://github.com/Superbro525Alt/2024-Crescendo.git as a remote
  3. fetch the simulation branch from that remote
  4. Run git cherry-pick e2854e33f7ad978bc3f014c897fef54108946785
  5. See hang

Expected behavior
Git doesn't hang and applies commit

Additional context
This is greatly slowing development. Guessing this isn't a Git bug but me stuffing something up here

Standardise Encoder Usage

We should be using Encoders through inherited classes from the Encoder class but in some places we directly call them. This should be standardised

Remove VoltageController class in favour of just using MotorVoltageController (Potentially renaming MotorVoltageController to VoltageController)

The obsessive usage of abstractions is good for us in many cases but comes with a performance cost so shouldnt't be used without good reason. VoltageController is designed to be able to create a lot of different voltage controllers which inherit from it but we only have MotorVoltageController and I don't see any obvious reason to have any other VoltageControllers. To this end I'd suggest just removing it entirely and creating the MotorVoltageController as an individual class.

Pathplanner

Integrate pathplanner libraries in order to be able to create autonomous routines quickly

Mag

Tracking issue for the magazine

Complete Wombat Documentation for Usage

Is your feature request related to a problem? Please describe.
This will help students who have not used Wombat before, or would like to increase their understanding of Wombat learn more.

Describe the solution you'd like
Complete usage documentation here here

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.