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.

Caractère chinois apparaissant dans la fenêtre du journal de l'application Driver Station.

Solution de contournement: Il existe deux solutions de contournement connues:

  1. Copiez et collez les caractères chinois dans le bloc-notes, et le texte anglais sera affiché.

  2. 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:

  1. Fermez tous les fichiers dans VS Code, mais laissez VS Code ouvert

  2. Supprimer le fichier c_cpp_properties.json dans le dossier .vscode, s’il existe

  3. Run the « Refresh C++ Intellisense » command in VS Code.

  4. 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)

  5. Attendez ~ 1 min

  6. 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));