Coder Social home page Coder Social logo

chargedup2023's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chargedup2023's Issues

Auto climb potential future issues

To quote bobtseattle from #17,

"How will the robot stop from driving off the charge station if another robot partially tips the ramp?
How will the robot handle the possibility of running into the charge station when the other side is down and we are facing a 71.5 degree slope (I am assuming digging our wheels into the carpet will be frowned upon again this year.)?"

Path switcher w/ "section"-based path switching

Last year, I created our autonomous chooser system. Which was nice, and should be replicated this year. However, there are some reasons to believe that just an auto chooser where you just choose the entire auto at once might not cut it. With so many potential paths for the robot to go, there's not many easy ways to predict just how our alliance members are going to code their own paths. The worst thing would be for us to have no path possible because alliance member's paths conflict with ours.

So, we use a "section"-based path switcher this year (name suggestions welcome). Instead of choosing the entire auto all at once, you break the autos up into little sections. Each auto has, say, 3 sections, and instead of picking the auto, you pick which section fits in for the beginning, middle, and end! This way, the drive team can sort of "build" out the path as they are discussing with alliance members.

Here's what's needed for this to be effective:

  • Some sort of way to blend the sections together, whether that be having the beginning/middle sections end/start in the same spot, or some other way of getting the robot to the next section
  • A visualization of their built path for drive team. Last year I experimented with using this team's library https://github.com/Arctos6135/StdPlug for displaying images in shuffleboard. It might be interesting to try and build my own widget for shuffleboard this year.
  • We'll still need a lot of variety in what sections are offered

At the end of the day, this will be a "nice to have" feature. We should focus on getting everything else working before starting on this.

School laptops can't support Java 17

#29 changed the sourceCompatibility and targetCompatibility in build.gradle to Java 17 instead of Java 11. However, on the school laptops, this causes compileJava to fail with "error: invalid source release: 17".

Improve logging usefulness with AdvantageScope & other viewers

Several things to fix/improve:

  • ArmSubsystem.java logs many numeric values as strings (search for "StringPublisher"), which makes it impossible to graph the values without custom post-processing. Instead of writing a string to elbowPositionPublisher with both the rotation & degrees values, either log two separate values ("Elbow Pos Rotations" and "Elbow Pos Degrees"), or just log whatever the code uses (rotations I think).
  • robotInit() should log the command initialize / interrupt / finish updates to network tables with StringPublisher in addition to writing it to the console output. That'd make it easy to visualize the command state changes in the same view with other data (like elbow position).
  • Look at all the https://github.com/robototes/ChargedUp2023/search?q=System.out.println instances and add Network tables logging for them if they look like something we'd want to view alongside other data in a chart or other view

Drivebase is not simulated correctly in sim

DrivebaseSubsystem needs to be fixed so that the motors accurately move in sim. Currently, poses can be correctly set, but you cannot drive the robot in teleop nor auto in the simulator because the motors aren't being configured/used correctly in sim. Requires further investigation.

Intaking out intakes in instead

In IntakeSubsystem.java on line 16:

public static final double INTAKE_OUT_SPEED = 0.3;

Later, this value is used on line 72

public void intakeOut() {
		setSpeed(INTAKE_OUT_SPEED);
	}

and line 10 of IntakeSetOutCommand.java

super(intakeSubsystem, INTAKE_OUT_SPEED);

With this code, intaking out with just intake in but at a slower speed. INTAKE_OUT_SPEED needs to be negative

Drive module target & velocity value use very different scales

Looking at the logs, the reported 'actual velocity' values are from -223 to 216, but the 'target' values are between exactly -4.420 and 4.420. To make them easily comparable when tuning PIDF, they should report with the same scale

frontLeftActualVelocityPublisher.set(
moduleDriveMotors[0].getVelocity() / DRIVE_VELOCITY_COEFFICIENT);

frontLeftTargetVelocityPublisher.set(states[0].speedMetersPerSecond);

Formatting isn't enforced

When check is run on the CI, it formats the code. However, this does not affect the repository code (just the local copy for the CI).
As KangarooKoala#1 verified, the check passes despite the code having (and continuing to have) a formatting error (in that case an unused import).

Fix issues in arm subsystem code

See comments on #52
Key things are:

  • Lots of dead code or constants should be removed to reduce confusion to people reading the code
  • Arm feedforward is still broken. It's likely the values it's returning are now small enough that they don't matter. So you might try just deleting it entirely & just using PID. Only the middle position (0.415) would have a non-zero feedforward value, and that's close to the top so it would be pretty small.
  • isArmNearGoal() uses a very loose definition of 'near', which is great for the SetFullArmCommand (as it can start moving the wrist before the arm is actually at its goal) but bad for autonomous (as the arm is about 30 degrees short of the goal when the auto code moves on to the next thing).

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.