Nuevo para 2025

Un gran numero de mejoras se han hecho para el ® Software del sistema del control de 2025 para FRC. Este articulo describirá y proveerá un breve resumen de los nuevos cambios y funcionalidades, también un changelog más completo para los cambios de Java/C++ WPILib changes. Este documento solo incluye los cambios más relevantes para los usuarios, la lista completa de cambios puede ser vista en los repositorios de GitHub WPILib

Se recomienda revisar también la lista de known issues.

Importar proyectos de años anteriores

Due to internal GradleRIO changes, it is necessary to update projects from previous years. After Installing WPILib for 2025, any 2024 projects must be imported to be compatible.

Cambios importantes (Java/C++)

Estos cambios contienen algunos de los principales cambios en la biblioteca que es importante que el usuario reconozca. Esto no incluye todos los cambios de ruptura, ver las otras secciones de este documento para más cambios.

  • El Manager de Dependencias de VS Code ayudara a equipos descubrir e instalar vendordeps.

  • Añadido Elastic Dashboard una dashboard enfocada para los drivers.

  • Agregado Loggeo basado en anotación (Epilogue) para Java

  • Agregado WPIcal herramienta para calibrar Apriltags de FRC para corregir la configuración de la cancha

  • La Librería de unidades de Java  ha sido refactorizado para tener clases de medidas especificas de unidades, en vez una clase genérica Measure. La nueva clase de medida tiene nombres más claros(Distance en vez de Measure<Distance>, o LinearAcceleration en lugar de Measure<Velocity<Velocity<Distance>>>), e implementadas operaciones matemáticas para que regresen los resultamos más especificos posibles en vez de uno aleatorio Measure<?>.

  • Agregado API de alertas persistentes. Las alertas son mostradas y tienen soporte de dashboards, tales como Shuffleboard y Elastic

  • Add LED pattern API for easily animating addressable LEDs

  • Se debe utilizar Java 17 ya que la compatibilidad de origen y destino de Java se ha ampliado a Java 17. Java 17 se utiliza desde 2023.

Sistemas operativos y arquitecturas compatibles:
  • Windows 10 y 11, solo de 64 bits. No son compatibles 32 bits y Arm.

  • Ubuntu 22.04 & 24.04, 64 bit. Otras distribuciones de Linux con glibc >= 2.34 pueden funcionar, pero no tienen soporte

  • macOS 13.3 o superior, tanto Intel como Arm.

Advertencia

Los siguientes sistemas operativos ya no tendrán soporte: macOS 12 o anteriores, Ubuntu 18.04 & 20.04, Windows 7, Windows 8.1, y cualquier 32-bit Windows.

Nota

Soporte de Windows 10 de Microsoft terminara en Octubre del 2025. Tenemos la intención de continuar el soporte de Windows 10 por la temporada de 2026, pero es posible que tengamos que dejar de brindar soporte en 2027. Los equipos deberían empezar a actualizar a Windows 11.

WPILib

Librería General

  • Agregado API de alertas persistentes. Las alertas se muestran en dashboards como Shuffleboard o Elastic.

  • Agregado API de patrón de LED para animar fácilmente las LEDs

  • Importante: Eliminada la interfaz deprecada de Gyro y``Accelerometer``

  • Importante: Eliminada la función deprecada Notifier.SetHandler

  • Removido el uso de RobotInit en ejemplos. Use el constructor en vez. RobotInit puede que sea deprecada en el futuro.

  • Deprecada AxisCamera

  • C++: Agregado FRC_ReportWarning

  • Implementado Sendable para clases HID

  • Include sendable type information in topic metadata

  • GenericHID.setRumble: Arreglado Java integer overflow

  • Renombrado ejemplo SysId a SysIdRoutine

  • Agregado método Timer.isRunning

  • Agregado soporte para Java unit para RobotController

  • Agregada una interfaz funcional para MecanumDriveMotorVoltages y la interfaz vieja fue deprecada

  • Agregado controlador de motor Koors40

  • 2025.2.1: Agregada imagen de la cancha 2025 y mapa de las April Tags

  • 2025.3.1: Add april tag map for AndyMark field. See Team Update 12 for more information.

Comandos

  • Importante: Eliminada la función deprecada CommandBase

  • Eliminada la API deprecada TrapzoidProfileCommand

  • Importante: Eliminado el método C++ deprecado TransferOwnership

  • Deprecado PIDCommand, PIDSubsystem, ProfiledPIDCommand, ProfiledPIDSubsystem, TrapezoidProfileSubsystem

  • Deprecado TrapezoidProfileCommand. Utilize TrapezoidProfile directamente

  • Controlador de cache BooleanEvents / Triggers y constructor Triggers, arreglando problemas si BooleanEvents / Triggers son creadas en loops

  • Agregado método trigger deadband a CommandGenericHID

  • Hecho requisitos privados

  • Agregado setRumble y isConnected a CommandGenericHID

  • Agregado StartRun a la fabrica de comandos

  • Renombrado deadlineWith a deadlineFor

  • Arreglado el truncamiento de mensajes de error de doble composición

  • Agregado modificador withDeadline

NetworkTables

  • Server round robin message processing

  • Cliente: Solo se conecta a direcciones IPv4

  • Deprecado setNetworkTablesFlushEnabled

  • Seteado identidad del cliente de NetworkTables 3

Registro de datos

  • Agregado Loggeo basado en anotación (Epilogue) para Java

  • Registro de consola puede ser habilitado con DatalogManager.logConsoleOutput

  • DataLog: Agregado ultimo valor y detección de cambio

  • DataLogManager: Arreglada conducta cuando se tiene espacio bajo

  • Epilogue: Autogenera mejores nombres de datos por default, no solo nombres crudos de elementos

  • 2025.3.2: Epilogue: Make nonloggable type warnings configurable

Interfaces de hardware

  • Importante: Reescrito DutyCycleEncoder y AnalogEncoder para simplificar y quitar detección de vuelco que estaba rota

  • Agregado getVoltage a PWMMotorController

  • Agregado soporte para sensores Sharp IR

  • Arreglado casos de validación de CAN ID y reportaje para dispositivos CTRE y REV

  • Reporte de estado de las LEDS de la Radio

  • Corregida la longitud máxima de la consola de la DS

  • C++: Refactorizado AnalogTrigger para usar shared_ptr

  • Agregado RobotController.GetCommsDisableCount()

  • Expose sticky hardware and firmware faults in PDH and PH

  • Fix potential race in CANAPI

  • Arreglado REV PH lista de solenoides desabilidata

  • Eliminado CANDeviceInterface

  • Refactorizada y limpieza de clases ADIS IMU

  • Propagado PWMMotorController stopMotor() y disable() a seguidores

  • Compressor: Agregada más datos enviables

  • Arreglado PowerDistribution.GetAllCurrents()

  • Arreglado AsynchronousInterrupt

  • 2025.3.1: AddressableLED: add support for other color orders

Math

  • Importante: Eliminado constructor TrapezoidProfile deprecado

  • Importante: Eliminado MatBuilder factory deprecado

  • Deprecado RamseteController. Use LTVUnicycleController en vez

  • Eliminado: Elimado constructor deprecado MatBuilder. Use MatBuilder.fill en vez

  • Discretizado SimpleMotorFeedForward, ArmFeedForward y ElevatorFeedForward

  • SwerveDrivePoseEstimator: Arreglado modulo estacionario emitiendo error calculando ángulo

  • Agregada sobrecarga DCMotor.getCurrent() aceptando torque

  • Agregado método cosineScale a SwerveModuleState para optimizar instancias

  • Hecho que limitantes de trayectorias usen Rectangle2d y Ellipse2d

  • Agregado soporte para Protobuf y Struct para muchas más clases

  • Agregado getAccumulatedError() a PIDController

  • Eliminado WheelPositions interfaz/concepto

  • Agregado kinematics.copyInto()

  • Agregada clases geométrica para Rectangle2d y Ellipse2d

  • Agregado métodos de reinicio a Odometry y PoseEstimator

  • Agregado ArmFeedforward calculate() sobrecarga que toma la corriente y la siguiente velocidad en vez de la aceleración

  • Arreglada la inicialización de poseEstimate del estimador de pose de C++

  • Fix PIDController error tolerance getters

  • Agregado variador de tiempo RKDP

  • Agregados constructores de geometría 2D a 3D

  • 2025.2.1: Implementada Translation3d.RotateAround

  • 2025.3.1: Add Pose2d and Pose3d RotateAround

  • 2025.3.1: Fix infinite loop in ArmFeedforward::Calculate(xₖ, vₖ, vₖ₊₁)

  • 2025.3.1: Add setters for Feedforward gains

  • 2025.3.2: Make LinearSystemSim setState() update output

  • 2025.3.2: Fix another infinite loop in ArmFeedforward

  • 2025.3.2: Add Translation2d/Translation3d slew rate limiter

  • 2025.3.2: Fix feedforward returning NaN when kᵥ = 0

  • 2025.3.2: Add Debouncer type and time setters

  • 2025.3.2: Fix singularities in Ellipse2d::Nearest()

  • 2025.3.2: Fix UnscentedKalmanFilter and improve math docs

Simulación

  • Importante: Eliminado input de gearing de FlywheelSim y DCMotorSim y calculate de las entradas LinearSystem y DCMotor

  • Agregado SendableChooserSim

  • Arreglado timing de simulación de Java en Windows

  • Arreglado que los bordes de interrupción sean volteados en sim

  • No envía datos del joystick en autónomo

  • Inicializar DIO a verdadero en simulación

  • Clamp battery voltage to 0

  • Arreglado: Actualizado widget FMS cuando la DS real este conectada

  • Fix DS GUI System Joysticks window auto-hiding

Romi/XRP

  • XRP: Agregado GetRotation2d a Gyro

  • XRP: Agregado soporte para Encoder periódico

  • XRP: Agregada GetLED a OnBoardIO

  • XRP y Romi: Cambiado métodos aplicables de C++ para utilizar unidades de la librería

Unidades de Java

  • The units library has been refactored to have unit-specific measurement classes instead of a single generic Measure class. The new measurement classes have clearer names (Distance instead of Measure<Distance>, or LinearAcceleration instead of Measure<Velocity<Velocity<Distance>>>), and implement math operations to return the most specific result types possible instead of a wildcard Measure<?>.

  • Añadidas unidades de resistencia

  • Utilice div en lugar de divide

  • Add absolute value and copy sign functionality

  • 2025.3.1: Add Measure.per overloads for all known unit types

CameraServer

  • Actualice a OpenCV 4.10.0

  • Wake up even if no frames received

  • Fix wakeup on sink destruction

  • HttpCamera: Send width/height/fps stream settings

  • HttpCamera: Modo de auto detección del stream si no esta puesto

  • Sink: add ability to get most recent frame instead of waiting

  • 2025.2.1: Use frame time in Linux UsbCameraImpl

Util

  • Importante: Eliminado RuntimeLoader

  • Deprecado RuntimeDetector

  • Add a simple web server for serving files. Example: WebServer.start(5800, Filesystem.getDeployDirectory());

Branding

  • WPILib tiene un nuevo logo

Logo de WPILib

Shuffleboard

  • Expuesta propiedad de orientación para NumberSlider

  • Agregado widget the alertas persistentes

  • Corregida FieldData de/serialization

  • 2025.2.1: Agregada imagen de la cancha de 2025

  • 2025.3.1: After many reports of a variety of issues, many of the resource optimations have been reverted. Performance should be similar to 2024 Shuffleboard.

SmartDashboard

Importante

SmartDashboard no es compatible con Macs Apple Silicon (Arm64).

Advertencia

SmartDashboard esta deprecada y será eliminada para 2027 debido a su uso de Network Tables v3. Usuarios pueden encontrar opciones modernas de dashboard aqui

  • No han habido cambios mas que actualizaciones de compilador fueron creados para la SmartDashboard

Glass / OutlineViewer / Simulation GUI

  • Save input after clicking away

  • Check for struct descriptor size 0

  • Alineado borde de Field2d e relleno de imagen para imágenes personalizadas

  • Agregado widget de alertas

  • Arreglado ancho mínimo del widget

  • 2025.2.1: Agregada imagen de la cancha de 2025

  • 2025.2.1: Hecho seleccionar una cancha de Field2d JSON mas obvio

  • 2025.3.2: Update default field to 2025 for Field2D

GradleRIO

  • Utilice Gradle 8.11

  • Utilize scripts de shell para lanzar herramientas en Linux / macOS, desde que macOS ya no incluye python

  • Agregado método para borrar archivos en la roboRIO que han sido borrados en el directorio deploy Coloque deleteOldFiles a verdadero en el bloque frcStaticFileDeploy

  • Gradle ahora consolida errores del compilador de Java en la parte inferior de la terminal para ayudar a su descubrimiento https://docs.gradle.org/8.11/release-notes.html#error-warning

  • 2025.3.1: Warn if multiple versions of the same vendordep is found

  • 2025.3.2: Disable code reboot while killing robot process, which was causing high CPU usage every other code reboot for some teams

Instalador de WPILib todo en uno

  • Actualización a VS Code 1.96.2

  • Actualizaciones de las extensiones de VS Code: cpptools 1.23.2, javaext 1.38

  • Utilize scripts de shell para lanzar herramientas en Linux / macOS, desde que macOS ya no incluye python

  • Solo instale scripts si estos son utilizados por una plataforma especifica

  • Haga atajos usando el icono de la app

  • Agregado archivo AppArmor para apps de electron para Ubuntu 24.04, las cuales deben ser instaladas manualmente

Visual Studio Code Extension

  • Agregada Extensión de control de dependencias para encontrar fácilmente y actualizar librerías de terceros

  • Agregado comando de limpieza de gradle

  • Utilize scripts de shell para lanzar herramientas en Linux / macOS, desde que macOS ya no incluye python

  • Agregada opción para importar proyectos XRP

  • Importador: Actualizado para cambios de Units Java

  • Extraída Utilidad WPIlib en mac

  • Definida java.configuration.runtimes en settings.json para asegurarse que JDK de WPILib sea usada

  • Mejorada IntelliSense al esconder útiles que son improbables de ser utilizados en programas de robot

RobotBuilder

  • Removido robotInit en favor de constructor de Robot

SysId

  • Arreglado el crasheo cuando todos los datos se filtran durante el análisis.

  • Removido ajustes preestablecidos obsoletos de WPILib y CTRE, renombrado a preestablecidos CTRE

  • Retardo de medición de retroalimentación de fijación a cero o superior

  • 2025.3.2: Refactor feedback analysis

PathWeaver

Advertencia

PathWeaver es deprecado y sera removido para 2027. Usuarios quiza encuentren Choreo o PathPlanner más útil. Los dos tienen una buena interfaz de usuario y soporte para swerve.

  • Se arreglo la búsqueda del directorio de implementación cuando el directorio de salida estaba en blanco

  • 2025.2.1: Agregada imagen de la cancha de 2025

AdvantageScope

Elastic

¡Elastic esta incluido en el instalador! Elastic es una dashboard simple y moderna Lea más aquí.

WPIcal

WPIcal es una nueva herramienta de WPILib para calibrar Apiltags para corregir el errror de la posición de la cancha Lea más aquí.

  • 2025.2.1: Agregado combinador de JSON que permite a los usuarios combinar mutiles layouts de AprilTag