Skip to content

Latest commit

 

History

History

our-features

Our Features

Documentation

{% embed url="https://broncbotz3481.github.io/YAGSL/" %} Javadocs for YAGSL {% endembed %}

{% embed url="https://broncbotz3481.github.io/YAGSL-Example/" %} Tuning webpage to create configurations {% endembed %}

{% embed url="https://github.com/BroncBotz3481/YAGSL-Example" %} Example code repository {% endembed %}

Easy installation

Just download all of the vendordeps from WPILib online with this list.#vendor-urls

{% embed url="https://docs.wpilib.org/en/stable/docs/software/vscode-overview/3rd-party-libraries.html#rd-party-libraries" %}

Hardware Support

Motors

Absolute Encoders

IMUs (Gyroscopes)

ALL GYROSCOPES MUST BE COUNTER-CLOCKWISE POSITIVE!

Simulation

  • There is full simulation support out of the box in YAGSl-Example.

Control

  • PathPlanner is supported and there is a example in YAGSL-Example
  • Control can be based entirely off of desired angle compared to current angle (SwerveController.getTargetSpeeds) or passed directly to the SwerveDrive in the correct units.
  • The function SwerveDrive.lockPose moves all of the wheels to face inwards making the robot nearly impossible to move.
  • Drive motors can be set to coast or brake using the function SwerveDrive.setMotorIdleMode
  • Swerve Module drive motor feedforwards can be replaced using the function SwerveDrive.replaceSwerveModuleFeedforward
  • Slew rate limiters can be added to SwerveController.getTargetSpeeds with SwerveController.addSlewRateLimiters to improve control of the robot.
  • Momentum calculator using objects in space represented by Matter class to limit velocity of the robot and prevent tipping.
  • CAN frames are limited to updated angles and velocities which differ from the previous angle and velocity.
  • Ability to overwrite maximum speeds via SwerveDrive.setMaximumSpeed and SwerveController.setMaximumAngularVelocity or utility functions SwerveDrive.setMaximumSpeeds.
  • Ability to use Chassis Velocity Correction using SwerveDrive.chassisVelocityCorrection only affecting the SwerveDrive.drive functions.
  • Ability to control using different center of rotation with SwerveDrive.drive.
  • Push the offsets to the motor controllers via SwerveDrive.pushOffsetsToControllers
  • Control over ChassisSpeeds.discretize via SwerveDrive.setChassisSpeedsDisctretization
  • Cosine compensation via SwerveDrive.setCosineCompensator
  • Heading correction with SwerveDrive.setHeadingCorrection
  • Auto-centering modules allows for modules to center to 0 whenever no input is given. This can be controlled by SwerveDrive.setAutoCenteringModules

Safety Features

  • The absolute encoder readings fall back to the relative encoder readings if the absolute encoder encountered a resolvable reading error.
  • Angle motors are default in coast mode to help take care of the motors.
  • Motor angle's are optimized to turn to the closest equivalent angle.
  • You can limit your velocity given your robot weight and center of gravity in SwerveMath.limitVelocity.
  • Current limits in the JSON configuration.
  • Ramp rate limits in the JSON configuration.
  • Closed-loop PID on motor controllers exclusively for SparkMAX's and TalonFX's.
  • The absolute encoders and relative encoders are synchronized when the robot is not moving for 100ms.
  • PID inputs are continuous or emulated to be continuous from -180 to 180.

Odometry

  • SwerveDrive.updateOdometry is called every 20ms, the period can be changed via SwerveDrive.setOdometryPeriod.
  • To stop the odometry thread use SwerveDrive.stopOdometryThread and update odometry in a periodic.
  • To zero the gyroscope call SwerveDrive.zeroGyro
  • Robot centric velocity can be fetched via SwerveDrive.getRobotVelocity and field-centric is SwerveDrive.getFieldVelocity.
  • Robot pose can be fetched via SwerveDrive.getPose
  • Robot gyroscope readings can be fetched via SwerveDrive.getGyroRotation3d or SwerveDrive.getYaw, SwerveDrive.getPitch, SwerveDrive.getRoll.
  • Robot pose can be updated with vision inputs through SwerveDrive.addVisionMeasurement optional standard deviation pass through.
  • Gyroscope offset can be configured via SwerveDrive.setGyroOffset and should be used for pathplanner.
  • If your translational odometry is off but controls are correct you can invert you translational odometry with the attribute SwerveDrive.invertOdometry

Telemetry

  • Swerve telemetry is updated to work with frc-web-components app.
  • Every module angle is reported for both relative and absolute encoders.
  • Every module velocity is reported.
  • The desired chassis speed is reported.
  • There is a Field2d which is created and updated continuously to represent the robots current position and orientation on the field.
  • You can add trajectories to the field with SwerveDrive.postTrajectory when testing.