February 3, 2025

Build Season Week 5 | REEFSCAPE℠ 2025

2025 Build Season Week 5


Build Season Week 5 | REEFSCAPE℠ 2025  cover

Business & Media:

IMG_7093.jpg

This week, the business team focused on key logistics and outreach efforts. We worked on hotel arrangements to ensure smooth travel plans and continued refining the Impact script to strengthen our presentation.


Mech:

IMG_7108.jpg

This week, we made great progress on several key components of our build. The elevator is fully assembled after fixing a few issues, and we decided to switch the intake design to a static system instead of a rotating arm. The reef is almost complete, with its CAD and shovel design finished. We also put in some solid work on the swerve treads and started prototyping the algae intake. On top of that, we’ve officially begun building the actual coral and algae intake, making significant progress on our robot.


Programming:

leftMotor = new SparkMax(16, MotorType.kBrushless);
rightMotor = new SparkMax(17, MotorType.kBrushless);

configLeft = new SparkMaxConfig();
configRight = new SparkMaxConfig();

configLeft.idleMode(IdleMode.kBrake);

configRight.idleMode(IdleMode.kBrake);
configRight.follow(leftMotor, true);

leftMotor.configure(configLeft, com.revrobotics.spark.SparkBase.ResetMode.kResetSafeParameters, PersistMode.kPersistParameters);
rightMotor.configure(configRight, com.revrobotics.spark.SparkBase.ResetMode.kResetSafeParameters, PersistMode.kPersistParameters);

cancoder = new CANcoder(15);

m_sysIdRoutine =
    new SysIdRoutine(
        new SysIdRoutine.Config(Volts.of(.25).per(Second), Volts.of(3), Second.of(30)),
        new SysIdRoutine.Mechanism(
            voltage -> {
            leftMotor.setVoltage(voltage);
            },
            log -> {
            log.motor("pivotMotor")
                .voltage(
                    m_appliedVoltage.mut_replace(
                        leftMotor.getAppliedOutput() * leftMotor.getBusVoltage(), Volts))
                .angularPosition(m_angle.mut_replace(cancoder.getAbsolutePosition().getValueAsDouble(), Rotations))
                .angularVelocity(
                    m_velocity.mut_replace(cancoder.getVelocity().getValueAsDouble(), RotationsPerSecond));
            },
            this));

This week, programming tackled a mix of software updates and hardware improvements. We updated the RoboRIO, SparkMaxes, and other REV components to 2025 standards while continuing work on the Reefscape 2025 project. Swerve errors were fixed, and we finished chaining and wiring the arm—now equipped with a through-bore encoder! On the coding side, we completed the Sys ID code for the new MaxSpline arm (just needs testing) and created a dedicated branch for Sys ID to avoid constant rewrites. We also worked with ClosedLoopControl and MaxMotion for REV, making steady progress on our control systems.