Utilisation de librairies externes avec le code du robot

Avertissement

L’utilisation de librairies externes peut avoir un comportement inattendue avec votre code robot! Il n’est pas recommandé à moins que vous ne sachiez ce que vous faites!

Souvent, une équipe peut vouloir ajouter des librairies externes Java ou C++ pour une utilisation avec son code robot. Cet article met l’emphase sur l’ajout de librairies Java à vos dépendances Gradle, ou les options disponibles pour les équipes C++.

Java

Note

Toutes les dépendances externes qui dépendent des librairies natives (JNI) ne fonctionneront probablement pas.

Il est assez simple d’ajouter des dépendances externes avec Java. Il vous suffit d’ajouter les repositories (référentiels) et les dependencies (dépendances) requises.

Les projets de robot par défaut n’ont pas de bloc repositories {} dans le fichier build.gradle. Vous devrez les ajouter vous-même. Au-dessus du bloc dependencies {}, veuillez ajouter ce qui suit :

repositories {
   mavenCentral()
   ...
}

mavenCentral() peut être remplacé par n’importe quel référentiel que la librairie que vous souhaitez importer utilise. Maintenant, vous devez ajouter la dépendance à la librairie elle-même. Ceci est fait en ajoutant la ligne nécessaire à votre bloc dependencies {}. L’exemple ci-dessous présente l’ajout d’Apache Commons à votre projet Gradle.

dependencies {
   implementation 'org.apache.commons:commons-lang3:3.6'
   ...
}

Maintenant, vous lancez une compilation et assurez-vous que les dépendances sont téléchargées. Intellisense peut ne pas fonctionner correctement jusqu’à ce qu’une compilation soit en cours d’exécution!

C++

L’ajout de dépendances C++ à votre projet de robot n’est pas une tâche triviale en raison de la nécessité de compiler pour le roboRIO. Vous avez deux options.

  1. Copiez le code source de la librairie souhaitée dans votre projet de robot.

  2. Utilisez le modèle vendordep comme exemple et créez un vendordep.

Copie du code source

Il vous suffit de copier la source et/ou les en-têtes nécessaires dans votre projet de robot. Vous pouvez alors configurer toutes les args plate-forme nécessaires comme ci-dessous:

nativeUtils.platformConfigs.named("linuxx86-64").configure {
   it.linker.args.add('-lstdc++fs') // links in C++ filesystem library
}

Création d’un Vendordep

Veuillez suivre les instructions dans le référentiel vendordep.