Robot Name: Metal Melody
- Hardware Software Specification
The robot source code can be found in this repository: Competition Robot Code
This document describes the interface between the hardware and software of the competition robot for the 2024 Crescendo FRC Season. The robot consists of a swerve drive chassis, an elevator mechanism, and an intake. The swerve drive uses the Swerve Drive Specialties MK4i module arranged on a square chassis. The elevator mechanism, known as the lift, consists of two telescoping lifts that support the Touch It, Own It (TITO) intake mechanism. The lift also includes a pair of hooks that can allow the robot to climb the chain in the end game. The intake uses horizontal rollers that grab and hold on to the game piece. The intake pivots between a retracted position inside the frame perimeter and a deployed position that reaches over the bumper.
The swerve drive utilizes the Swerve Drive Specialties MK4i module. The steering gear ratio of the MK4i is 150/7:1. The drive gear ratio of the MK4i is 27/4:1. This is the V2, or medium speed, version of the module. Each steering mechanism includes a CANcoder absolute position encoder.
The game piece handling portion of the robot consists of the lift and the intake. Game piece handling is managed through three degrees of freedom (DoF).
The lift is an elevator system that supports the intake mechanism and serves as the climber mechanism. The lift consists of a pair of telescoping booms that extend vertically. Each vertical boom is driven by a motor and a 15.31:1 gearbox. The intake is suspended between the booms. Each boom hosts a hook that can snag the chain on the stage so the robot can climb at the end of the match.
Each boom is spring-loaded. The springs extend each boom to its maximum height with approximately 20 lbs (89 N) of force. Each boom is retracted using a 3 mm Dyneema (or equivalent) rope attached to a spindle. The booms are mechanically linked together through a continuous piece of hex shaft located between the gearboxes. The total extension force experienced by the motor at the spindles is approximately 180 N.
The home position of the lift is the fully retracted position. However, the's starting configuration is the fully extended position. A hard stop exists at the lift's home position. To prevent the lift from tripping its circuit breakers, a supply current limit is required in case the lift is driven into its hard stop.
The intake rotates around a pivot at the top of the lift. The pivot is driven by a single motor and 50:1 gearbox. The pivot will rotate the intake to a predetermined rotation position along its range of motion. The retracted, or parked, position is at one extreme of the pivot's range of motion where the intake is fully inside the robot's frame perimeter. The extended, or deployed, position is at the other extreme of the pivot's range of motion. The extended position is used when capturing game pieces directly off the floor. A secondary retracted position is used when scoring game pieces into the amp. A hard stop exists at the fully retracted position. To prevent the lift from tripping its circuit breakers, a supply current limit is required in case the lift is driven into its hard stop. In the preferred control implementation, the control algorithm can rotate the pivot to an arbitrary angle and hold the intake in that position for the duration of a match. The home position of the pivot is the fully retracted position. The robot will start the match in the fully retracted position, so the robot code can set this as the home position during robot initialization.
The intake feeder will be driven by a single motor and a 5:1 gearbox. A beam break sensor will detect when the intake is populated with a game piece.
The various robot capabilities will be developed using the following priority list. This list should be used to guide trade off decisions to ensure that lower priority subsystems are not preventing progress on higher priority subsystems.
- Drivetrain, Chassis & Bumpers
- Touch It, Own It (TIOI) Intake
- Amplifier Lift
- Climber
- Other
"Other" development efforts include scoring in the TRAP and utilizing vision to improve teleop performance.
The high level motion control rules describe the allowed interactions between the various robot subsystems.
These rule govern the interaction between the lift and intake mechanisms.
- Only move one mechanism at a time.
- Only move the intake pivot when the lift is in the low position.
- Only raise the lift when the intake is not in the retracted position.
- Automatically retract the intake when a game piece is captured by the intake.
- Run the feeder in the in capture direction when the intake is empty and not in the retracted position.
The robot implements a CTRE style robot control system. A generic CTRE control system is shown below.
This robot uses a single roboRIO 2 as the only robot controller. The robot code is implemented in Python using the 2024 RobotPy framework. Major software versions are shown in the following table. Motor controller and sensor software versions are listed elsewhere in this document.
Software Component | Version |
---|---|
RobotRIO Image | 2024 v2.1 |
Python | 3.11.7 |
Power Distribution Module | 1.4 |
OpenMesh Radio | TBD |
CTRE Motion Control | Phoenix 6 Pro |
Python Packages | Version |
---|---|
robotpy | 2024.3.1.0 |
frc6343 | 0.2 |
Installed Robotpy Modules: commands2, navx, pathplannerlib, phoenix6
The following table lists all the motor controllers used in the robot.
Function | Controller | FW | Motor | CAN Addr | PDP Port | Breaker |
---|---|---|---|---|---|---|
Drive Front Left | Talon FX | 2024.2.0.0 | Kraken X60 | 1 | 13 | 40 A |
Drive Rear Left | Talon FX | 2024.2.0.0 | Kraken X60 | 2 | 14 | 40 A |
Drive Front Right | Talon FX | 2024.2.0.0 | Kraken X60 | 3 | 12 | 40 A |
Drive Rear Right | Talon FX | 2024.2.0.0 | Kraken X60 | 4 | 15 | 40 A |
Direction Front Left | Talon FX | 2024.2.0.0 | Kraken X60 | 5 | 10 | 30 A |
Direction Rear Left | Talon FX | 2024.2.0.0 | Kraken X60 | 6 | 9 | 30 A |
Direction Front Right | Talon FX | 2024.2.0.0 | Kraken X60 | 7 | 11 | 30 A |
Direction Rear Right | Talon FX | 2024.2.0.0 | Kraken X60 | 8 | 8 | 30 A |
Lift Right | Talon FX | 2024.2.0.0 | Kraken X60 | 11 | 1 | 40 A |
Lift Left | Talon FX | 2024.2.0.0 | Kraken X60 | 12 | 0 | 40 A |
Intake Pivot | Talon FX | 2024.2.0.0 | Falcon 500 | 9 | 3 | 40 A |
Intake Feeder | Talon FX | 2024.2.0.0 | Falcon 500 | 10 | 2 | 40 A |
The following table lists all the sensors used in the robot.
Function | Sensor | FW | Associated Motor | CAN Addr | PDP / VRM |
---|---|---|---|---|---|
Steer Front Left Swerve | CANcoder | 2024.1.0.0 | Front Left Direction | 10 | VRM 12V/500mA |
Steer Rear Left Swerve | CANcoder | 2024.1.0.0 | Rear Left Direction | 11 | VRM 12V/500mA |
Steer Front Right Swerve | CANcoder | 2024.1.0.0 | Front Right Direction | 12 | VRM 12V/500mA |
Steer Rear Right Swerve | CANcoder | 2024.1.0.0 | Rear Right Direction | 13 | VRM 12V/500mA |
Intake Feeder Beam Break | Adafruit Beam Break | --- | Intake Feeder | --- | VRM 5V/500mA |
Notes:
- The VRM is powered through a 20 A breaker at PDP Port 5.
- Integrated sensors built into Falcon 500 motors are not included in this list.
A custom PCB assembly connects the two halves of the beam break sensor to a 5V port of the VRM and the forward limit switch of the intake feeder motor. An LED on the PCB illuminates when 5V power is applied to the circuit and the beam is blocked. The beam is blocked when a game piece is acquired by the intake.
Sensor Product Page & Datasheet
The following PDP ports are allocated to miscellaneous power devices
Device | PDP Port | Breaker / Fuse | Notes |
---|---|---|---|
Ethernet Switch | 5 | 20 A | Not Used (Reserved for Future Use) |
Limelight 3 | 6 | 20 A | Not Used (Reserved for Future Use) |
navX2-MXP | --- | --- | Powered by roboRIO USB port |
Camera | --- | --- | Powered by roboRIO USB port |
OpenMesh Radio | Vbat VRM PCM PWR | 20 A |
The OpenMesh radio is connected directly to the Radio Power Module through an Ethernet cable. Similarly, the Radio Power Module is connected directly to the RoboRIO. The PDP's "Vbat VRM PCM PWR" output is connected to a Radio Power Module (RPM) with provides power to the radio through the Ethernet cable.
A navX2-MXP Inertial Measurement Unit is used in conjunction with the swerve drive control system. The module is attached to the roboRIO's MXP port and mounted directly to the roboRIO. To improve brown out resistance, the navX2 is powered through a USB cable attached to the roboRIO.
A forward-looking Microsoft HD-3000 USB camera is suspended between the arms of the lift and connected to a USB port on the RoboRIO.