Problèmes connus
Cet article détaille les problèmes connus (et les solutions de contournement) relatifs à la partie logicielle du système de contrôle FRC®.
Questions ouvertes
Port I2C intégré provoquant des blocages du système
Problème : L’utilisation du port I2C intégré, dans n’importe quelle langage de programmation, peut entraîner des blocages du système. La fréquence de ces blocages semble dépendre du matériel spécifique (c’est-à-dire que différents roboRIO se comporteront différemment) ainsi que de la façon dont le bus est utilisé.
Workaround: The only surefire mitigation is to use the MXP I2C port or another device to read the I2C data. Accessing the device less frequently and/or using a different roboRIO may significantly reduce the likelihood/frequency of lockups, it will be up to each team to assess their tolerance of the risk of lockup. This lockup can not be definitively identified on the field and a field fault will not be called for a match where this behavior is believed to occur. This lockup is a CPU/kernel hang, the roboRIO will completely stop responding and will not be accessible via the DS, webpage or SSH. If you can access your roboRIO via any of these methods, you are experiencing a different issue.
Several alternatives exist for accessing the REV color sensor without using the roboRIO I2C port. A similar approach could be used for other I2C sensors.
Use a Raspberry Pi Pico. Supports up to 2 REV color sensors, sends data to the roboRIO via serial. The Pi Pico is low cost (less than $10) and readily available.
Use a Raspberry Pi. Supports 1-4 color sensors, sends data to the roboRIO via NetworkTables. Primarily useful for teams already using a Raspberry Pi as a coprocessor.
La mise à jour des propriétés du roboRIO 2.0 peut être lente ou bloquée
Problème: La mise à jour des propriétés d’un roboRIO 2.0 sans avoir à le reformatter à l’aide de l’outilitaire Imaging Tool (par exemple, la configuration du numéro d’équipe) peut être lente ou bloquée.
Solution: Après quelques minutes d’attente pendant l’exécution de l’outilitaire Imaging Tool, le roboRIO devrait pouvoir être redémarré et les nouvelles propriétés devraient être configurées.
Simulation crashes on Mac after updating WPILib
Issue: On macOS, after updating the project to use a newer version of WPILib, running simulation immediately crashes without the GUI appearing.
Workaround: In VS Code, run WPILib | Run a command in Gradle, clean
. Alternatively, run ./gradlew clean
in the terminal or delete the build directory.
Compilation invalide en raison de l’absence de GradleRIO
Problème: Très rare, le cache Gradle d’un utilisateur sera brisé et ils recevront des erreurs similaires à ce qui suit:
Could not apply requested plugin [id: ‘edu.wpi.first.GradleRIO’, version: ‘2020.3.2’] as it does not provide a plugin with id ‘edu.wpi.first.GradleRIO’
Solution de contournement:
Supprimez votre cache Gradle situé sous ~$USER_HOME/.gradle
. Les machines Windows peuvent avoir besoin d’activer la possibilité de voir les fichiers cachés. Jusqu’à présent, ce problème n’est observé que sous Windows. S’il vous plaît signaler ce problème si vous l’observer sous un système d’exploitation alternatif.
Caractères chinois dans le journal du poste de conduite
Problème: Rarement, le journal du poste de conduite affichera des caractères chinois au lieu du texte anglais. Cela semble se produire uniquement lorsque Windows est défini sur une langue autre que l’anglais.

Solution de contournement: Il existe deux solutions de contournement connues:
Copiez et collez les caractères chinois dans le bloc-notes, et le texte anglais sera affiché.
Changez temporairement la langue de Windows en anglais.
C++ Intellisense - Les fichiers ouverts au lancement ne fonctionnent pas correctement
Problème: En C++, les fichiers ouverts au lancement de VS Code auront des problèmes avec Intellisense affichant les suggestions de toutes les options d’une unité de compilation et pas seulement celles appropriées ou ne trouvant pas de fichiers d’en-tête. Il s’agit d’un bogue dans VS Code.
Solution de contournement:
Fermez tous les fichiers dans VS Code, mais laissez VS Code ouvert
Supprimer le fichier c_cpp_properties.json dans le dossier .vscode, s’il existe
Run the « Refresh C++ Intellisense » command in VS Code.
En bas à droite, vous devriez voir quelque chose qui ressemble à une plate-forme (linuxathena ou windowsx86-64, etc.). S’il ne s’agit pas de linuxathena, cliquez dessus et définissez-le sur linuxathena (version)
Attendez ~ 1 min
Ouvrez le fichier cpp principal (pas un fichier d’en-tête avec extension .h). Intellisense devrait maintenant fonctionner
Problèmes avec les Dashboards WPILib et de simulation sur les éditions Windows N
Problème : Le code WPILib utilisant CSCore (dashboards et code robot simulé) aura des problèmes sur les versions Education N de Windows.
Le shuffleboard fonctionnera, mais ne chargera pas les caméras
Smartdashbard va planter au démarrage
La simulation de robot va planter au démarrage
Solution: Installez le Media Feature Pack
Fixed in Game Tools 2023.1.0
Driver Station does not detect joysticks at startup
Issue: The Driver Station application does not detect already connected joysticks when it starts up. Connecting joysticks after it is already running works.
Workaround: Connect joysticks after starting the DS, or use the joystick rescan button or the F1 shortcut to rescan for joysticks.
Fixed in WPILib 2023.2.1
SysId - Robot program crash on startup when using CAN Spark Maxes
Issue: SysId 2023.1.1’s deployed robot program crashes on startup if it was configured to use CAN Spark Maxes.
Solution: Install WPILib 2023.2.1 or newer.
Manually flushing a client NetworkTableInstance does not work
Issue: Calling flush()
on a NetworkTableInstance
does not cause the data to be flushed to remote subscribers immediately. This issue will be fixed in an upcoming WPILib release.
Workaround: Set the periodic
option on the NetworkTable publishers that need a faster update rate:
// Get a DoubleEntry for myTopic and update it with a 10ms period.
DoubleEntry myEntry = table.getDoubleTopic("myTopic").getEntry(0, PubSubOption.periodic(0.01));
// Get a DoubleEntry for myTopic and update it with a 10ms period.
nt::DoubleEntry entry = table.GetDoubleTopic("myTopic").GetEntry(0, { .periodic = 0.01 });