APERÇU C++ & JAVA Aperçu des changements à la librairie WPILib pour C++ et Java
PRÉSENTATEURS Minh Nhat Bui minhnhat.bui@ Mentor depuis 2012 Équipe Logiciel & Équipe Génie industriel B. Sc. Sciences économiques (Université de Montréal & étudiant universitaire, génie logiciel (ÉTS Montréal) 2
ORDRE DU JOUR 1. Spécifications logicielles du roborio 2. Nouvel environnement de développement pour C++ & Java 3. Compatibilité 4. Nouveautés dans WPILib 5. Prochaines étapes recommandées 3
1. SPÉCIFICATIONS LOGICIELLES DU ROBORIO Informations sur la plateforme et NI Linux Real-Time OS. 4
PLATEFORME Plateforme Processeur Mémoire système Mémoire de stockage Système d'exploitation Langages de programmation acceptées Xilinx Zynq -7020 ARM Cortex -A9 double coeur, cadencé à 667 MHz 256 Mo RAM 512 Mo Flash Linux RTOS LabVIEW, C++, Java 5
PLATEFORME (SUITE ) NI Linux Real-Time Extensions OS (NI Linux RTOS) avec PREEMPT_RT Java SE Embedded 8 supporté sur le roborio C++11 pas encore supporté sur le roborio, mais c est dans les plans Fonctionnalités complètes avec le terminal Apprenez le SSH dès maintenant! Windows: apprenez PuTTY! Transferts de fichiers via WebDAV et SFTP via SSH Package manager: opkg Détails sur http://wiki.openwrt.org/doc/techref/opkg 6
PERFORMANCES REAL-TIME DU NI LINUX RTOS Real-time scheduler pour les tâches critiques en temps réel Non-critical scheduler (CFS) pour les tâches non critiques Permet de diviser les tâches avec des priorités inférieures Détails: http://www.ibm.com/developerworks/library/l-completely-fair-scheduler/ Multithread Optimisation multicore sur LabVIEW: http://zone.ni.com/reference/en-xx/help/371361j-01/lvconcepts/ con_config_adv_timed_seq_set/ 7
NI LINUX REAL-TIME OS Introduction to NI Linux Real-Time: http://www.ni.com/white-paper/14627/en/ Under the Hood of NI Linux Real-Time: http://www.ni.com/white-paper/14626/en/ 8
2. NOUVEL ENVIRONNEMENT DE DÉVELOPPEMENT POUR C++ & JAVA Eclipse pour Java & C++ 9
LABVIEW FOR FRC 2015 Basé sur LabVIEW 2014 Même environnement pour les équipes LabVIEW 10
ECLIPSE POUR JAVA & C++ Nouvel environnement de développement unifié pour les équipes programmant en Java & C++ WPILib disponibles via un plugin FRC dans Eclipse Wind River Workbench basé sur Eclipse Changement complet par rapport à NetBeans Compilateur: FRC Toolchains (Windows, OS X, Linux) basé sur GCC 4.4.1 Debugging & target deployment directement dans Eclipse 11
DÉPLOYER LE CODE Aucun redémarrage du roborio nécessaire! Intégration Java & C++ dans le roborio On peut développer du code C++, le déployer, puis développer du code Java immédiatement après, puis le déployer, et ça reste fonctionnel Pas besoin de réimager le roborio pour spécifier le langage de programamtion 12
3. COMPATIBILITÉ 13
COMPATIBILITÉ C++ non compatible pour le crio dès janvier 2015 Ça veut aussi dire qu il sera impossible de programmer les crio en C++ dès le 1 er janvier 2015 Wind River n est plus partenaire pour 2015 La communauté FRC, WPI et FIRST sont en train de trouver une solution pour ce problème Java encore compatible pour le crio, à condition d émuler le même environnement de développement 2014 avec NetBeans Équipes Java, faites vos sauvegardes! LabVIEW reste compatible sur le crio 14
4. NOUVEAUTÉS DANS WPILIB 15
MODULES ET INDEX DES E/S (I/O) MODULES Il n y a plus de modules sur le roborio Plus besoin de spécifier le module dans les constructeurs/destructeurs INDEX DES E/S (I/O) Les entrées/sorties (I/O) sont maintenant indexés à 0 10 ports PWM indexés de 0 à 9; 10 ports DIO indexés de 0 à 9; 4 ports analogues indexés de 0 à 3; Manettes (joysticks); etc. 16
INTÉGRATION CAN Le support CAN est «natif» dans WPILib Pas besoin de savoir comment utiliser CAN pour accéder aux données des capteurs du PDP et du PCM Instancier un objet PDP pour accéder aux capteurs de courant et de température Plus besoin d utiliser l interface RS232 pour utiliser la fonctionnalité CAN du Jaguar 17
PDP ET PCM Données disponibles dans la classe PowerDistributionPanel: Le courant sur chaque sortie 40 ampères et les cours-circuits potentiels Le courant sur chaque sortie 30 ampères et les cours-circuits potentiels La tension de la batterie La température interne du PDP Données disponibles dans la classe Compressor: Statut du solénoïde Valeur du pressostat (expérimental) Courant au compresseur Données rafraîchies toutes les 25 ms 18
CONTRÔLE DU COMPRESSEUR ET PRESSOSTAT Contrôle automatique du compresseur et du pressostat (pressure switch) par le PCM Instantier un objet Compressor devient non nécessaire, mais reste possible Par exemple, pour vérifier l état du compresseur Appeler un objet de type Solenoid va de toute manière démarrer le compresseur si nécessaire 19
AUCUN SUPPORT POUR MICROSOFT KINECT Les classes pour la Kinect sont retirées de WPILib Pour les équipes qui utilisaient la Kinect, voir la SDK fournie par Microsoft: http://www.microsoft.com/en-us/kinectforwindows/develop/ 20
MANETTES (JOYSTICKS) Tous les boutons et les axes sont réindexés à 0. Faire attention aux nouvelles valeurs des axes L axe 4 pour les triggers de la manette Xbox donne maintenant des valeurs de 0 à 1 Possibilité d avoir des valeurs en degrés et radians 21
PORTS MXP Les ports PWM, DIO et analogues sur le MXP sont accessibles via les classes habituelles Leur numérotation continue après celle des ports dédiés 0 à 9 pour les 10 PWM dédiés 10, 11, 12 pour les ports partagés sur le MXP Attention aux ports partagés PWM/DIO Dans la boucle Disabled() les ports partagés PWM/DIO sur le MXP seront désactivés puisque tous les ports PWM sont désactivés dans cette boucle Faire attention à ne pas mettre de capteurs sur ces ports, à moins que ça soit l effet désiré 22
AUTRES CHANGEMENTS DANS WPILIB GYROSCOPE ET ENCODEURS Les méthodes start et stop n existent plus Démarrage automatique lors de l instanciation de ces classes On peut toujours remettre à zéro en utilisant la méthode reset ACCÉLÉROMÈTRE Nouvelle classe BuiltInAccelerometer pour accéder à l accéléromètre intégré au roborio 23
AUTRES CHANGEMENTS DANS WPILIB (SUITE ) POTENTIOMÈTRES AnalogPotentiometer retourne des degrés et non la tension DRIVER STATION LCD DriverStationLCD n existe plus! Il faudra désormais se fier complètement aux différents dashboard pour avoir des données (LabVIEW Dashboard, SmartDashboard/SFX ) 24
5. ACTIONS D ICI JANVIER 2015 25
ÉTAPES FORTEMENT SUGGÉRÉES AVANT JANVIER 2015 POUR LES ÉQUIPES EN JAVA Faire une sauvegarde de l environnement de développement 2014 avec NetBeans Apprendre Java 8 et ses fonctionnalités (fonctions lambdas, generics, etc.) POUR LES ÉQUIPES EN C++ ET EN JAVA Apprendre à utiliser Eclipse ssh, sftp via ssh, bash et autres fonctionnalités de base Linux 26
Une vision. Une motivation. Une énergie. Équipe de robotique du Collège Regina Assumpta Montréal, Québec 27