AVIS
Ce référentiel contient le SDK public FTC pour la saison de compétition INTO THE DEEP (2024-2025).
Accueillir!
Ce référentiel GitHub contient le code source utilisé pour créer une application Android permettant de contrôler un robot de compétition FIRST Tech Challenge. Pour utiliser ce SDK, téléchargez/clonez l'intégralité du projet sur votre ordinateur local.
Exigences
Pour utiliser ce projet Android Studio, vous aurez besoin d'Android Studio 2021.2 (nom de code Chipmunk) ou version ultérieure.
Pour programmer votre robot dans Blocks ou OnBot Java, vous n'avez pas besoin d'Android Studio.
Commencer
Si vous êtes nouveau en robotique ou nouveau dans le FIRST Tech Challenge, vous devriez envisager de consulter le didacticiel FTC Blocks pour vous familiariser avec l'utilisation du système de contrôle :
Tutoriel en ligne sur les blocs FTC
Même si vous êtes un programmeur Java avancé, il est utile de commencer par le didacticiel FTC Blocks, puis de migrer ensuite vers l'outil Java OnBot ou vers Android Studio.
Téléchargement du projet
Si vous êtes un programmeur Android Studio, il existe plusieurs façons de télécharger ce dépôt. Notez que si vous utilisez Blocks ou OnBot Java Tool pour programmer votre robot, vous n'avez pas besoin de télécharger ce référentiel.
- Si vous êtes un utilisateur git, vous pouvez cloner la version la plus récente du référentiel :
clone git https://github.com/FIRST-Tech-Challenge/FtcRobotController.git
Ou, si vous préférez, vous pouvez utiliser le bouton « Télécharger Zip » disponible sur la page principale du référentiel. Le téléchargement du projet sous forme de fichier .ZIP permettra de conserver une taille de téléchargement gérable.
Vous pouvez également télécharger le dossier du projet (sous forme de fichier d'archive .zip ou .tar.gz) à partir de la sous-section Téléchargements de la page Versions de ce référentiel.
La page Versions contient également des APK prédéfinis.
Une fois que vous avez téléchargé et décompressé (si nécessaire) votre dossier, vous pouvez utiliser Android Studio pour importer le dossier (« Importer un projet (Eclipse ADT, Gradle, etc.) »).
Obtenir de l'aide
Documentation utilisateur et didacticiels
FIRST maintient une documentation en ligne contenant des informations et des didacticiels sur la façon d'utiliser le logiciel FIRST Tech Challenge et le système de contrôle du robot. Vous pouvez accéder à cette documentation en utilisant le lien suivant :
Documentation du PREMIER défi technologique
Notez que la documentation en ligne est un document « permanent » qui est constamment mis à jour et édité. Il contient les informations les plus récentes sur le logiciel et le système de contrôle FIRST Tech Challenge.
Matériel de référence Javadoc
La documentation de référence Javadoc pour le SDK FTC est désormais disponible en ligne. Cliquez sur le lien suivant pour afficher la documentation Javadoc du SDK FTC sous forme de site Web en direct :
Documentation Javadoc FTC
Forum des utilisateurs en ligne
Pour toute question technique concernant le système de contrôle ou le SDK FTC, veuillez visiter le site communautaire FIRST Tech Challenge :
Communauté FIRST Tech Défi
Exemples de modes opérationnels
Ce projet contient une large sélection d'exemples d'OpModes (exemples de code de robot) qui peuvent être coupés et collés dans votre dossier /teamcode pour être utilisés tels quels ou modifiés pour répondre aux besoins de votre équipe.
Dossier d'échantillons : /FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples
Le fichier readme.md situé dans le dossier /TeamCode/src/main/java/org/firstinspires/ftc/teamcode contient une explication de la convention de dénomination des exemples et des instructions sur la façon de les copier dans votre propre espace de projet.
Informations sur la version
Version 10.1 (20240919-122750)
Améliorations
- Ajoute de nouveaux
VisionProcessor
basés sur OpenCV (qui peuvent être attachés à un VisionPortal en Java ou en Blocks) pour aider les équipes à mettre en œuvre le traitement des couleurs via la vision par ordinateur dans le jeu INTO THE DEEP.-
ColorBlobLocatorProcessor
implémente la détection de "blob" de couleur OpenCV. Un nouvel exemple de programme ConceptVisionColorLocator
démontre son utilisation.- Un choix est proposé entre des gammes de couleurs prédéfinies ou la création d'une gamme personnalisée dans l'espace colorimétrique RVB, HSV ou YCrCb.
- Il est possible de restreindre la détection à une région d'intérêt spécifiée sur l'écran.
- Des fonctions permettant d'appliquer un morphing d'érosion/dilatation au masque de seuil sont fournies
- Des fonctions de tri et de filtrage des données renvoyées sont fournies
-
PredominantColorProcessor
permet d'utiliser une région de la caméra comme « capteur de couleur longue portée » pour déterminer la couleur prédominante de cette région. Un nouvel exemple de programme ConceptVisionColorSensor
démontre son utilisation.- La couleur prédominante déterminée est sélectionnée parmi un ensemble discret d'« échantillons » de couleur, similaire au capteur de couleur MINDSTORMS NXT.
- La documentation sur cette fonctionnalité de traitement des couleurs peut être trouvée ici : https://ftc-docs.firstinspires.org/color-processing
- Ajout d'exemples de programmes de blocs pour les capteurs de couleur : RobotAutoDriveToLine et SensorColor.
- Auto-inspection mise à jour pour identifier les versions logicielles RC/DS incompatibles comme une « mise en garde » plutôt qu'un « échec ».
Corrections de bugs
- Corrige la régression de conversion AngularVelocity
Version 10.0 (20240828-111152)
Changements révolutionnaires
- Les classes Java et les blocs pour la détection d'objets TensorFlow ont été supprimés.
-
AngularVelocity.unit
qui était de type AngleUnit
a été renommé AngularVelocity.angleUnit
de type UnnormalizedAngleUnit
Améliorations
- Un échantillon pour l'indicateur numérique REV a été ajouté - ConceptRevLED
- Ajoute la prise en charge du bâton LED Sparkfun QWIIC
- Pour le connecter directement, vous avez besoin de ce câble
- Ajoute ConceptLEDStick OpMode
- Ajoute des blocs pour les couleurs noir, bleu, cyan, gris foncé, gris, vert, gris clair, magenta, rouge, blanc et jaune.
- Ajoute un bloc « évaluer mais ignorer le résultat » qui exécute le bloc connecté et ignore le résultat. Vous permet d'appeler une fonction et d'ignorer la valeur de retour.
- Ajoute un pilote I2C pour le télémètre sonar Maxbotix Maxsonar I2CXL
- Ajoute des blocs pour setPwmEnable, setPwmDisable et isPwmEnabled pour les servos et les servos CR.
- Dans l'éditeur de blocs : un n dans le champ de commentaire de l'annotation ExportToBlocks est affiché sous forme de saut de ligne.
- La télémétrie a une nouvelle méthode setNumDecimalPlaces
- La télémétrie formate désormais les doubles et les flottants (pas à l'intérieur des objets, juste par eux-mêmes)
- Ajoute la prise en charge du Limelight 3A.
- Ajoute un support initial pour le REV Servo Hub
- Le contrôleur du robot et la station de pilotage doivent être mis à jour vers la version 10.0 pour que les servohubs soient configurables en tant que servohubs. Si l'application sur l'un ou l'autre des appareils est obsolète, le Servo Hub apparaîtra comme un Hub d'extension et certaines fonctionnalités ne fonctionneront pas comme prévu. Vous devez attendre pour créer une configuration incluant un servo hub jusqu'à ce que les applications Driver Station et Robot Controller aient été mises à jour vers la version 10.0.
- La mise à jour du micrologiciel du Servo Hub et la modification de son adresse ne peuvent être effectuées qu'à l'aide du REV Hardware Client pour le moment.
- Ajoute la prise en charge de l'IMU REV 9 axes (REV-31-3332)
- L'IMU REV 9 axes est uniquement pris en charge par l'interface Universal IMU.
- Ajoute la classe Java
Rev9AxisImuOrientationOnRobot
. - Si vous remplacez mentalement le port I2C de cette IMU par les ports USB du Control Hub,
RevHubOrientationOnRobot
est également compatible avec ce capteur - Ajoute des blocs pour Rev9AxisImuOrientationOnRobot, notamment RevHubImuOrientationOnRobot.xyzOrientation et RevHubImuOrientationOnRobot.zyxOrientation.
- Ajoute des échantillons de blocs SensorRev9AxisIMUOrthogonal et SensorRev9AxisIMUNonOrthogonal.
- Améliore la prise en charge des blocs pour RevHubImuOrientationOnRobot.
- Ajoute des blocs pour RevHubImuOrientationOnRobot.xyzOrientation et RevHubImuOrientationOnRobot.zyxOrientation.
- Ajoute des échantillons de blocs SensorHubIMUOrthogonal (remplace SensorIMU) et SensorHubIMUNonOrthogonal.
- Mises à jour des versions EasyOpenCV, AprilTag, OpenCV et
libjpeg-turbo
- Ajoute des blocs pour max et min qui prennent deux nombres.
- Ajoute les blocs OpModes ConceptRevSPARKMini, RobotAutoDriveByEncoder, RobotAutoDriveByGyro, RobotAutoDriveByTime, RobotAutoDriveToAprilTagOmni et RobotAutoDriveToAprilTagTank.
- Deux OpModes portant le même nom sont désormais automatiquement renommés avec le nom suivi d'un "-" et du nom de classe leur permettant d'être tous les deux sur l'appareil.
- Affiche le nom de la configuration active sur la page Gérer de la console du contrôleur du robot.
- Mise à jour de la bibliothèque AprilTag pour INTO THE DEEP. Notamment,
getCurrentGameTagLibrary()
renvoie désormais les balises INTO THE DEEP. - Ajoute des blocs pour Telemetry.setMsTransmissionInterval et Telemetry.getMsTransmissionInterval.
- Ajoute un exemple de blocs SensorOctoQuad.
Corrections de bugs
- Corrige un bug où les blocs RevBlinkinLedDriver se trouvaient sous Actuateurs dans la boîte à outils de l'éditeur de blocs. Ce sont désormais d'autres appareils.
- Corrige un bug où
Exception
lancées dans le code utilisateur après qu'un arrêt a été demandé par la Driver Station seraient silencieusement mangées - Correction d'un bug où si vous demandiez
AngularVelocity
dans une unité différente de celle dans laquelle l'appareil l'avait signalé, il la normaliserait entre -PI et PI pour les radians, et -180 et 180 pour les degrés.
Version 9.2 (20240701-085519)
Remarques importantes
- Les classes et blocs Java pour la détection d'objets TensorFlow sont obsolètes et seront supprimés dans la version 10.0.
- Les exemples qui utilisent la détection d'objets TensorFlow ont été supprimés.
Améliorations
- Ajoute un texte explicatif aux éléments ayant échoué lors des activités d'inspection. Pour afficher le texte explicatif, appuyez sur l'icône d'avertissement rouge pour un élément ayant échoué.
- Dans l'éditeur de blocs : ajout d'un nouveau type de bloc de jeu de variables qui définit la variable et renvoie également la nouvelle valeur.
- Modifie le comportement des commandes de caméra pour une SwitchableCamera. Désormais, chaque méthode (telle que getExposure, getMinExposure, getMaxExposure, setExposure pour ExposureControl) agit sur la caméra actuellement active.
- Ajoute la prise en charge de la manette de jeu compatible REV USB PS4 (REV-31-2983)
- Ajoute ConceptAprilTagMultiPortal OpMode
- Ajoute la prise en charge de l'encodeur en quadrature OctoQuad et du module d'interface de largeur d'impulsion
- Ajoute l'annotation ExportAprilTagLibraryToBlocks qui indique qu'une méthode statique qui renvoie une AprilTagLibrary est exportée vers l'environnement de programmation Blocks. Le bloc correspondant apparaîtra dans la boîte à outils Blocs avec les bibliothèques de balises intégrées.
- Ajoute des blocs OpMode ConceptAprilTagOptimizeExposure.
- Ajoute la prise en charge du capteur d'odométrie de suivi optique SparkFun.
Corrections de bugs
- Corrige #942 où visionPortal.close() peut provoquer une IndexOutOfBoundsError.
- Corrige un bug dans l'éditeur de blocs où les blocs de fonction réduits affichent un avertissement "Les blocs réduits contiennent des avertissements." lorsque le mode opérationnel des blocs est rouvert.
- Corrige un bug où l'éditeur de blocs ne vous avertissait pas que vous avez des modifications non enregistrées lorsque vous essayez de quitter. Ce bug a été introduit en raison d'un changement de comportement dans Chrome 119.
- Problème n° 764 : Obtenir le contrôle de gain renvoie un pointeur nul pour une caméra commutable
- Corrige un bug où la zone morte correcte pour certaines manettes de jeu n'était pas appliquée lorsque les fonctionnalités avancées de la manette de jeu étaient activées
Version 9.1 (20240215-115542)
Améliorations
- Corrige un problème avec les Blocs : si l'utilisateur ferme la bulle d'avertissement d'un Bloc, celui-ci sera toujours fermé la prochaine fois que le projet sera ouvert dans l'éditeur de Blocs.
- Dans l'éditeur de blocs, une alerte concernant les périphériques matériels manquants n'est pas affichée si tous les blocs qui utilisent les périphériques matériels manquants sont désactivés.
- Ajoute des blocs pour prendre en charge la comparaison des valeurs de propriété CRServo.Direction, DCMotor.Direction, DCMotor.Mode, DCMotor.ZeroPowerBehavior, DigitalChannel.Mode, GyroSensor.HeadingMode, IrSeekerSensor.Mode et Servo.Direction au bloc enum correspondant.
- Améliore l'importation automatique OnBotJava pour importer correctement les classes lorsqu'elles sont utilisées dans certaines situations.
- Améliore la saisie semi-automatique OnBotJava pour fournir de meilleures options de complétion dans la plupart des cas.
- Cela résout un problème où la saisie semi-automatique échouait si une méthode avec deux paramètres formels ou plus était définie.
- Dans OnBotJava, la prise en charge du pliage de code a été ajoutée pour développer et réduire les sections de code.
- Dans OnBotJava, l'en-tête du copyright est désormais automatiquement réduit lors du chargement de nouveaux fichiers
- Pour tous les exemples Blocks OpMode, les commentaires d’introduction ont été déplacés vers la bulle de commentaires RunOpMode.
- La commande Nettoyer les blocs dans l'éditeur de blocs positionne désormais les blocs de fonction de manière à ce que leurs bulles de commentaires ne chevauchent pas d'autres blocs de fonction.
- Ajout de l'exemple SensorTouch de blocs OpMode.
- Ajout de l'exemple Java OpMode SensorDigitalTouch.
- Plusieurs améliorations à VisionPortal
- Ajoute une option pour contrôler si le flux est automatiquement démarré suite à un appel
.build()
sur un VisionPortal Builder - Ajoute une option pour contrôler si la superposition des statistiques de traitement de la vision est rendue ou non
- VisionPortals implémente désormais l'interface
CameraStreamSource
, permettant aux utilisateurs multiportaux de sélectionner quel portail est acheminé vers le DS dans INIT en appelant CameraStreamServer.getInstance().setSource(visionPortal). Peut être sélectionné via la manette de jeu, entre les sessions Camera Stream. - Ajouter une option à
AprilTagProcessor
pour supprimer les avertissements d'étalonnage - Améliore les avertissements d'étalonnage de la caméra
- Si un étalonnage est mis à l'échelle, la résolution à partir de laquelle il a été mis à l'échelle sera répertoriée.
- S'il existe des calibrages avec le mauvais rapport hauteur/largeur, les résolutions calibrées seront répertoriées
- Corrige la condition de concurrence qui provoquait le crash de l'application lors de l'appel
stopStreaming()
immédiatement suivi de close()
sur un VisionPortal - Corrige IllegalStateException lors de l'appel
stopStreaming()
immédiatement après la création d'un VisionPortal - Ajout des équivalents des blocs FTC aux nouvelles méthodes Java :
- VisionPortal.Builder.setAutoStartStreamOnBuild
- VisionPortal.Builder.setShowStatsOverlay
- AprilTagProcessor.Builder.setSuppressCalibrationWarnings
- CameraStreamServer.setSource
Corrections de bugs
- Résout un problème où OnBotJava n'applique pas les paramètres de taille de police à l'éditeur.
- Met à jour la dépendance EasyOpenCV vers la version 1.7.1
- Corrige l’impossibilité d’utiliser EasyOpenCV CameraFactory dans OnBotJava
- Corrige le crash complet de l'application RC lorsque le pipeline utilisateur lève une exception
- Corrige le crash complet de l'application RC lorsque l'annotateur du canevas de l'utilisateur lève une exception
- Utilisez l'affichage moderne de stacktrace lors de la gestion des exceptions utilisateur au lieu de l'ancien message de télémétrie ESTOP.
Version 9.0.1 (20230929-083754)
Améliorations
- Met à jour les échantillons AprilTag pour inclure la décimation et des commentaires supplémentaires. Corrige également les avertissements trompeurs concernant les identifiants de balises.
- Augmente la taille maximale des commentaires en ligne des blocs à 140 caractères
- Ajoute un exemple de blocs BasicOmniOpMode.
- Bibliothèque CENTERSTAGE mise à jour quaternions d'orientation AprilTag
- Mise à jour de l'exemple Java ConceptTensorFlowObjectDetection.java pour inclure les éléments manquants nécessaires à la prise en charge du modèle personnalisé.
Corrections de bugs
- Résout un problème où, après le 1er octobre, la Driver Station sera signalée comme obsolète sur la version 9.0 et invitera l'utilisateur à effectuer la mise à jour.
Version 9.0 (20230830-154348)
Changements révolutionnaires
- Supprime Vuforia
- Les champs des objets
AprilTagDetection
et AprilTagPose(ftc/raw)
sont désormais final
- La méthode du générateur VisionPortal
setCameraMonitorViewId()
a été renommée en setLiveViewContainerId()
et enableCameraMonitoring()
a été renommée en enableLiveView()
Améliorations
- Ajoute la prise en charge du capteur de vision DFRobot HuskyLens.
- Les équipes de blocs peuvent désormais effectuer l'étalonnage de la webcam.
- Ajout d'un bloc pour System.currentTimeMillis (sous Utilitaires/Heure)
- Ajout d'un bloc pour VisionPortal.saveNextFrameRaw (sous Vision/VisionPortal)
- Ajout d'un nouvel exemple de blocs OpMode appelé UtilityCameraFrameCapture.
- L'exemple RobotDriveByGyro a été mis à jour pour utiliser la nouvelle interface IMU universelle. Il prend désormais en charge les deux types d'IMU.
- Suppression de certains blocs ElapsedTime sujets aux erreurs de la boîte à outils de l'éditeur de blocs. Il ne s'agit pas d'un changement radical : les anciens OpModes de blocs qui utilisent ces blocs fonctionneront toujours, à la fois dans l'éditeur de blocs et au moment de l'exécution.
- Normalise sous la forme "OpMode" pour le terme OpMode.
- La manière préférée de faire référence aux OpModes qui étendent spécifiquement
LinearOpMode
(y compris les blocs OpModes) est « OpMode linéaire ». - La manière préférée de faire référence aux OpModes qui étendent spécifiquement
OpMode
directement est « OpMode itératif ».
- Révise les commentaires Javadoc
OpMode
et LinearOpMode
pour être plus faciles à lire et inclure plus de détails. - Apporte des améliorations mineures aux exemples Java
- Les commentaires Javadoc dans les exemples qui pourraient être mal rendus dans Android Studio ont été convertis en commentaires multilignes standard
- La cohérence entre les échantillons a été améliorée
- L'exemple SensorDigitalTouch a été remplacé par un nouvel exemple SensorTouch qui utilise l'interface
TouchSensor
au lieu de DigitalChannel
. - Les échantillons ConceptCompassCalibration, SensorMRCompass et SensorMRIRSeeker ont été supprimés, car ils ne sont pas utiles pour les compétitions FTC modernes.
Corrections de bugs
- Corrige un bug qui empêchait l'utilisation des manettes de jeu PlayStation en mode Bluetooth. Le Bluetooth n'est PAS légal pour la compétition, mais peut être utile pour permettre à un appareil DS d'être utilisé pendant le chargement ou lors d'un événement de sensibilisation.
- Corrige un bug où la valeur de date de modification d'un OpMode de blocs peut changer au 31 décembre 1969, si le Control Hub est redémarré pendant que l'OpMode de blocs est en cours de modification.
- Corrige la fonctionnalité de présélection automatique de TeleOp (a été interrompue dans la version 8.2)
- Corrige un bug où le passage d'un nombre entier tel que 123 au bloc Telemetry.addData qui prend un nombre apparaît comme 123,0 dans la télémétrie.
- Résout les problèmes de saisie semi-automatique OnBotJava :
- La saisie semi-automatique fournirait de manière incorrecte des valeurs pour la classe actuelle lors de la saisie semi-automatique d'une variable locale
- La saisie semi-automatique
hardwareMap
inclurait de manière incorrecte les entrées de classe lambda
- Corrige OnBotJava n’important pas automatiquement les classes.
- Corrige les onglets OnBotJava qui ne se ferment pas lorsque leur fichier est supprimé.
- Corrige une actualisation de la vue du projet qui ne se produit pas lorsqu'un fichier est renommé dans OnBotJava.
- Corrige l'élément de menu contextuel "Télécharger" pour les bibliothèques externes dans l'interface OnBotJava.
- Résout le problème où la télémétrie de Driver Station se bloquait par intermittence lorsqu'elle était réglée en mode Monospace.
- Corrige la régression des performances pour certaines opérations REV Hub introduites dans la version 8.2.
- Corrige la logique de comparaison TagID dans les exemples DriveToTag.
Version 8.2 (20230707-131020)
Changements révolutionnaires
- Les OpModes non linéaires (itératifs) ne sont plus autorisés à manipuler les actionneurs dans leur méthode
stop()
. Les tentatives en ce sens seront ignorées et enregistrées.- Lorsqu'un OpMode tente de manipuler illégalement un actionneur, le contrôleur du robot imprime un message de journal comprenant le texte
CANCELLED_FOR_SAFETY
. - De plus, les LinearOpModes ne sont plus en mesure de retrouver la possibilité de manipuler les actionneurs en supprimant l'interruption de leur thread ou en utilisant un autre thread.
- Supprime la prise en charge d'Android version 6.0 (Marshmallow). La minSdkVersion est désormais 24.
- Augmente la version Robocol.
- Cela signifie qu'un contrôleur de robot ou une station de pilotage version 8.2 ou ultérieure ne pourra pas communiquer avec une station de pilotage ou un contrôleur de robot version 8.1 ou antérieure.
- Si vous oubliez de mettre à jour les deux applications en même temps, un message d'erreur s'affichera expliquant quelle application est la plus ancienne et doit être mise à jour.
- FTC_FieldCoordinationSystemDefinition.pdf a été déplacé. Il est toujours dans l'historique de git, mais a été supprimé de l'instantané git correspondant à la balise 8.2. La version officielle se trouve désormais sur Field Cooperative System.
-
LynxUsbDevice.addConfiguredModule()
et LynxUsbDevice.getConfiguredModule()
ont été remplacés par LynxUsbDevice.getOrAddModule()
. - Les anciens blocs pour Vuforia et TensorFlow Object Detection sont obsolètes et ont été supprimés de la boîte à outils de l'éditeur de blocs. Les OpModes de blocs existants qui contiennent les anciens blocs pour Vuforia ou TensorFlow Object Detection peuvent être ouverts dans l'éditeur de blocs, mais leur exécution ne fonctionnera pas.
Nouvelles fonctionnalités
- Ajoute une nouvelle API
VisionPortal
pour la vision par ordinateur- Cette API peut être sujette à modification pour la version finale de lancement !
- Plusieurs nouveaux échantillons ajoutés.
- Ajoute la prise en charge de la détection des AprilTags.
-
VisionPortal
est le nouveau point d'entrée pour le traitement AprilTag et TFOD. - Vuforia sera supprimé dans une prochaine version.
- Dépendances TensorFlow mises à jour.
- Ajout de la prise en charge des commandes de caméra webcam aux blocs.
- La boîte à outils de l'éditeur de blocs comporte désormais une catégorie Vision, directement au-dessus de la catégorie Utilitaires.
- La documentation connexe pour les technologies associées peut être trouvée à l'adresse
- Présentation du tag avril
- Guide du SDK AprilTag
- Valeurs de détection AprilTag
- Images de test AprilTag
- Calibrage de la caméra
- Ajoute la prise en charge de Driver Station pour les manettes de jeu Logitech Dual Action et Sony PS5 DualSense.
- Cela n’inclut pas la prise en charge de la manette de jeu Sony PS5 DualSense Edge.
- Référez-vous toujours au manuel de jeu 1 pour déterminer la légalité de la manette de jeu en compétition.
- Ajoute la prise en charge du streaming de charge utile MJPEG au pilote UVC (routine de décompression JPEG externe requise pour l'utilisation).
- Affiche un indice sur l'interface utilisateur de Driver Station sur la manière de lier une manette de jeu lorsque des boutons sont enfoncés ou que les sticks sont déplacés sur une manette de jeu non liée.
- Ajoute une option pour l'affichage en plein écran de "Camera Stream" sur Driver Station.
- Le code source d'OnBotJava est automatiquement enregistré sous forme de fichier ZIP à chaque build avec une fenêtre déroulante des 30 dernières builds conservées ; permet de récupérer le code source des versions précédentes si le code est accidentellement supprimé ou corrompu.
- Ajoute la prise en charge de la modification des adresses des hubs d'extension qui ne sont pas connectés directement via USB.
- L'écran Changement d'adresse du hub d'extension comporte désormais un bouton Appliquer qui modifie les adresses sans quitter l'écran.
- Les adresses attribuées à d'autres hubs connectés à la même connexion USB ou Control Hub ne peuvent plus être sélectionnées.
- Augmente la taille maximale des commentaires en ligne des blocs à 100 caractères
- Enregistre la position des bulles de commentaires des blocs ouverts
- Ajoute de nouveaux échantillons de conduite AprilTag : RobotDriveToAprilTagTank et RobotDriveToAprilTagOmni
- Ajoute un exemple pour illustrer l'optimisation de l'exposition de la caméra pour AprilTags : ConceptAprilTagOptimizeExposure
Corrections de bugs
- Corrige l'écran d'inspection pour signaler la version de l'application en utilisant la version du SDK définie dans les bibliothèques au lieu de la version spécifiée dans
AndroidManifest.xml
. Cela corrige le cas où l'application pouvait afficher les numéros de versions correspondants à l'utilisateur tout en indiquant que les versions ne correspondaient pas.- Si la version spécifiée dans
AndroidManifest.xml
ne correspond pas à la version du SDK, une entrée de version du SDK sera affichée sur la page Web Gérer.
- Corrige aucune erreur affichée lors de l’enregistrement d’un fichier de configuration avec des noms en double depuis la Driver Station.
- Corrige un blocage dans le pilote UVC qui s'est manifesté dans OpenFTC/EasyOpenCV#57.
- Corrige un blocage dans le pilote UVC qui pouvait survenir lors du branchement à chaud de caméras.
- Corrige la compatibilité du pilote UVC avec la caméra à obturateur global Arducam OV9281.
- Corrige la condition d'arrêt d'urgence lorsqu'une build OnBotJava avec des noms OpMode en double se produit.
- Corrige les causes connues du spam de journalisation « Tentative d'utilisation d'une instance LynxModule fermée ».
- Corrige le modèle de LED d'identification visuelle lors de la configuration des hubs d'extension connectés via RS-485.
Version 8.1.1 (20221201-150726)
Il s'agit d'une version de correction de bogues uniquement pour résoudre les quatre problèmes suivants.
- Problème n°492 : Impossible de créer de nouveaux modes d'opération de blocs.
- Problème n° 495 : supprimez le modificateur final de l'objet télémétrie d'OpMode.
- Problème n° 500 : certains appareils ne peuvent pas être configurés lorsque l'application Driver Station a été mise à jour vers la version 8.1.
- La mise à jour de l'application Robot Controller ou de l'application Driver Station vers la version 8.1.1 ou ultérieure résoudra ce problème.
- Le capteur tactile de Modern Robotics était configurable en tant qu'appareil numérique. Il ne peut être utilisé que comme appareil analogique.
Version 8.1 (20221121-115119)
Changements révolutionnaires
- Déprécie les champs
OpMode
msStuckDetectInit
, msStuckDetectInitLoop
, msStuckDetectStart
, msStuckDetectLoop
et msStuckDetectStop
.- Les OpModes n'ont plus de limite de temps pour
init()
, init_loop()
, start()
ou loop()
, donc les champs correspondant à ces méthodes ne sont plus utilisés. -
stop()
a toujours une limite de temps, mais elle est désormais codée en dur pour être de 1 seconde et ne peut pas être modifiée à l'aide de msStuckDetectStop
.
- Déprécie les méthodes
OpMode
internalPreInit()
, internalPostInitLoop()
et internalPostLoop()
.-
OpMode
itératifs continueront à appeler ces méthodes au cas où elles seraient remplacées. - Ces méthodes ne seront pas du tout appelées pour
LinearOpMode
.
- Déprécie (et cesse de respecter)
DeviceProperties.xmlTagAliases
.
Améliorations
- Ajoute une nouvelle interface
IMU
à Blocks et Java qui peut être utilisée à la fois avec l'IMU BNO055 d'origine incluse dans tous les anciens hubs de contrôle et hubs d'extension, et avec la nouvelle IMU alternative BHI260AP.- Vous pouvez déterminer quel type d'IMU se trouve dans votre Control Hub en accédant à la page Gérer de l'interface Web.
- Pour savoir comment utiliser la nouvelle interface
IMU
, consultez https://ftc-docs.firstinspires.org/programming_resources/imu/imu.html. L'exemple SensorIMU
Blocks a également été mis à jour pour utiliser la nouvelle interface IMU
, et les exemples Java suivants ont été ajoutés :-
SensorIMUOrthogonal
- Utilisez cet exemple si votre REV Hub est monté de manière à ce qu'il soit parallèle ou perpendiculaire au bas de votre robot.
-
SensorIMUNonOrthogonal
- Utilisez cet exemple si votre REV Hub est monté sur votre robot dans une autre orientation
-
ConceptExploringIMUOrientations
- Cet OpMode est un outil pour vous aider à comprendre comment fonctionnent les orientations orthogonales et laquelle s'applique à votre robot.
- L'IMU BHI260AP n'est accessible que via la nouvelle interface
IMU
. Le BNO055 IMU peut être programmé à l'aide de la nouvelle interface IMU
, ou vous pouvez continuer à le programmer à l'aide de l'ancienne interface BNO055IMU
. Si vous souhaitez pouvoir passer rapidement à un nouveau Control Hub pouvant contenir l'IMU BHI260AP, vous devez migrer votre code pour utiliser la nouvelle interface IMU
. - Contrairement à l'ancienne interface
BNO055IMU
, qui ne fonctionnait correctement que lorsque le REV Hub était monté à plat sur votre robot, l'interface IMU
vous permet de préciser l'orientation du REV Hub sur votre robot. Il en tiendra compte et vous donnera votre orientation dans un système de coordonnées de robot, au lieu d'un système de coordonnées spécial pour le REV Hub. Par conséquent, votre tangage et votre lacet seront de 0 lorsque votre robot est de niveau, au lieu de lorsque le REV Hub est de niveau, ce qui se traduira par des valeurs d'angle d'orientation beaucoup plus fiables pour la plupart des orientations de montage. - En raison du nouveau système de coordonnées centré sur le robot, les angles de tangage et de roulis renvoyés par l'interface
IMU
seront différents de ceux renvoyés par l'interface BNO055IMU
. Lorsque vous migrez votre code, portez une attention particulière à la documentation. - Si vous avez calibré votre BNO055, vous pouvez fournir ces données d'étalonnage à la nouvelle interface
IMU
en transmettant une instance BNO055IMUNew.Parameters
à IMU.initialize()
. - L'interface
IMU
convient également à la mise en œuvre par des fournisseurs tiers pour les IMU prenant en charge la fourniture de l'orientation sous la forme d'un quaternion.
-
OpMode
itératifs (par opposition aux LinearOpMode
) s'exécutent désormais sur un thread dédié.- Les temps de cycle ne devraient pas être autant affectés par tout ce qui se passe dans le système.
- Les
OpMode
lents ne peuvent plus augmenter le temps nécessaire au traitement des commandes réseau, et vice versa. - Les méthodes
init()
, init_loop()
, start()
et loop()
n'ont plus besoin de revenir dans un certain laps de temps.
- Pilote hérité BNO055 IMU : restaure la possibilité d'initialiser dans un OpMode, puis de demander à un autre OpMode de réutiliser cette initialisation. Cela vous permet de maintenir la position de lacet 0 entre les OpModes, si vous le souhaitez.
- Permet aux versions personnalisées des pilotes de périphérique du SDK FTC d'utiliser la même balise XML.
- Avant, si vous souhaitiez personnaliser un pilote de périphérique, vous deviez le copier dans une nouvelle classe et lui attribuer une nouvelle balise XML. Lui donner une nouvelle balise XML signifiait que pour changer le pilote utilisé, vous deviez modifier votre fichier de configuration.
- Désormais, pour utiliser votre pilote personnalisé, tout ce que vous avez à faire est de spécifier la classe de votre pilote personnalisé lors de l'appel de
hardwareMap.get()
. Pour revenir au pilote d'origine, spécifiez la classe du pilote d'origine. Si vous spécifiez une interface implémentée à la fois par le pilote d'origine et par le pilote personnalisé, il n'y a aucune garantie quant à l'implémentation qui sera renvoyée.
Corrections de bugs
- Corrections de l'accès aux liens « Gérer les modèles TensorFlow Lite » et « Gérer les sons » et d'exécution des téléchargements de blocs et d'OnBotJava OpMode à partir du client matériel REV.
- Résout le problème où un pilote de périphérique I2C serait automatiquement initialisé à l'aide des paramètres attribués lors d'une exécution précédente d'OpMode.
- Améliore le placement du menu contextuel de Driver Station dans la disposition paysage.
- Corrige NullPointerException lors de la tentative d'obtention d'une IMU BNO055 non configurée dans un mode opérationnel de blocs sur un téléphone RC.
- Résout le problème avec les blocs si une variable est nommée
orientation
.
Version 8.0 (20220907-131644)
Changements révolutionnaires
- Augmente la version Robocol.
- Cela signifie qu'un contrôleur de robot ou une station de pilotage version 8.0 ou ultérieure ne pourra pas communiquer avec une station de pilotage ou un contrôleur de robot version 7.2 ou antérieure.
- Si vous oubliez de mettre à jour les deux applications en même temps, un message d'erreur s'affichera expliquant quelle application est la plus ancienne et doit être mise à jour.
- L'initialisation des appareils I2C se produit désormais lorsque vous les récupérez du
HardwareMap
pour la première fois.- Auparavant, tous les appareils I2C étaient initialisés avant même que l'OpMode ne commence à s'exécuter, que vous alliez réellement les utiliser ou non. Cela pourrait entraîner une réduction des performances et des avertissements inutiles.
- Avec ce changement, il est très important pour les utilisateurs Java de récupérer tous les périphériques nécessaires à partir du
HardwareMap
pendant la phase Init de l'OpMode . À savoir, déclarez une variable pour chaque périphérique matériel que l'OpMode utilisera et attribuez une valeur à chacun. Ne faites pas cela pendant la phase d'exécution, sinon votre OpMode pourrait se bloquer brièvement pendant que les appareils que vous récupérez sont initialisés. - Les OpModes qui n'utilisent pas tous les périphériques I2C spécifiés dans le fichier de configuration devraient prendre moins de temps à s'initialiser. Les OpModes qui utilisent tous les appareils I2C spécifiés devraient prendre le même temps que précédemment.
- Résout le problème n°251 en modifiant l'ordre dans lequel les taux de rotation des axes sont lus à partir du vecteur de vitesse angulaire dans le pilote IMU BNO055.
- Déprécie
pitchMode
dans BNO055IMU.Parameters
.- Définir
pitchMode
sur PitchMode.WINDOWS
briserait les conventions de coordonnées utilisées par le pilote.
- Déplace
OpModeManagerImpl
vers le package com.qualcomm.robotcore.eventloop.opmode
.- Cela rompt les bibliothèques tierces EasyOpenCV (version 1.5.1 et antérieures) et FTC Dashboard (version 0.4.4 et antérieures).
- Supprime la méthode
OpMode
obsolète resetStartTime()
(utilisez plutôt resetRuntime()
). - Supprime la classe protégée
LinearOpMode.LinearOpModeHelper
(qui n'était pas destinée à être utilisée par OpModes). - Supprime le type de configuration de périphérique I2C (synchrone) (obsolète depuis 2018)
Améliorations
- Les exceptions non interceptées dans les OpModes ne nécessitent plus de redémarrage du robot
- Un écran bleu apparaissant avec une trace de pile n'est pas une erreur du SDK ; cela remplace le texte rouge dans la zone de télémétrie.
- Depuis la toute première version du SDK, les plantages d'OpMode ont mis le robot dans l'état « ARRÊT D'URGENCE », affichant uniquement la première ligne de l'exception et obligeant l'utilisateur à appuyer sur « Redémarrer le robot » pour continuer.
- Les exceptions lors d'un OpMode ouvrent désormais une fenêtre contextuelle avec le même jeu de couleurs que la visionneuse de journaux, contenant 15 lignes de stacktrace d'exception pour permettre de retrouver facilement la ligne incriminée sans avoir besoin de se connecter pour afficher les journaux via ADB ou faire défiler de grandes quantités de journaux. dans la visionneuse de journaux.
- Le texte d'exception dans la fenêtre contextuelle est à la fois zoomable et défilant, tout comme une page Web.
- En appuyant sur le bouton « OK » dans la fenêtre contextuelle, vous reviendrez à l'écran principal de la Driver Station et permettra de relancer immédiatement un OpMode, sans qu'il soit nécessaire d'effectuer un « Redémarrage du robot ».
- Ajoute un nouvel exemple Java pour démontrer l'utilisation d'une classe matérielle pour résumer les actionneurs de robot et les partager sur plusieurs OpModes.
- L'exemple d'OpMode est ConceptExternalHardwareClass.java
- La classe matérielle abstraite est RobotHardware.java
- Met à jour l’exemple Java RobotAutoDriveByGyro_Linear pour utiliser l’IMU du hub de contrôle/expansion REV.
- Met à jour les échantillons Vuforia pour référencer les ressources PowerPlay et avoir les noms et emplacements de champs corrects des cibles d'image.
- Met à jour les exemples TensorFlow pour référencer les ressources PowerPlay.
- Ajoute la prise en charge facultative des fonctionnalités du langage Java 8 à l'éditeur OnBotJava.
- Pour vous inscrire, ouvrez les paramètres OnBotJava et cochez
Enable beta Java 8 support
. - Notez que le code Java 8 ne sera compilé que lorsque le Robot Controller exécute Android 7.0 Nougat ou une version ultérieure.
- Veuillez signaler les problèmes ici.
- Dans OnBotJava, cliquer sur les erreurs de construction permet désormais d'accéder correctement au bon emplacement.
- Améliore le comportement de saisie semi-automatique d'OnBotJava, pour fournir de meilleures options de saisie semi-automatique dans la plupart des cas.
- Ajoute un code QR au rapport d'inspection du contrôleur du robot lorsqu'il est consulté depuis la station de pilote pour la numérisation par les inspecteurs lors de la compétition.
- Améliore les performances et la fiabilité I2C dans certains scénarios.
Version 7.2 (20220723-130006)
Changements de rupture
- Met à jour l'outillage de construction. Pour les utilisateurs d'Android Studio, ce changement nécessite Android Studio Chipmunk 2021.2.1.
- Supprime la prise en charge des appareils qui ne sont pas légaux en compétition, y compris les modules de contrôle de base de la robotique moderne, le contrôleur matriciel et les contrôleurs et capteurs HiTechnic / NXT. Le soutien reste pour les capteurs modernes de la robotique I2C.
Améliorations
- Augmente la hauteur de la zone de contact du menu du paysage à 3 points sur la station de conduite, ce qui le rend beaucoup plus facile à sélectionner.
- Ajoute la méthode
terminateOpModeNow()
pour permettre aux opmodes d'auto-s'auto-s'auto-s'auto-s'auto-s'auto-s'auto-s'auto-s'auto. - Ajoute la méthode
opModeInInit()
à LinearOpMode
pour faciliter les boucles d'initiés. Similaire à opModeIsActive()
mais pour la phase d'initiation. - Avertit l'utilisateur s'ils ont un GamePad Logitech F310 connecté qui est défini sur le mode DirectInput.
- Permet aux contrôleurs de moteur Sparkmini de réagir plus rapidement pour accélérer les changements.
- Cache le numéro de version de l'application sœur mal installée (c'est-à-dire DS installée sur le périphérique RC ou vice-versa) sur l'écran d'inspection.
- Ajoute une prise en charge pour permettre à l'utilisateur de modifier le commentaire du bloc RunOpMode.
- Ajoute un champ de paramètredEfaultValues à @ExportToblocks. Cela offre la possibilité d'une méthode Java avec une annotation @ExportToBlocks pour spécifier les valeurs par défaut pour les paramètres de la méthode lorsqu'il est affiché dans l'éditeur de blocs.
- Rendre les blocs LinearopMode plus lisibles. Le nom OPMode s'affiche sur le bloc RunOpMode, mais pas sur les autres blocs LinearOpMode.
- Ajout de la prise en charge à la détection d'objets TensorFlow pour l'utilisation d'un générateur de trame différent, au lieu de Vuforia. L'utilisation de Vuforia pour passer le cadre de la caméra à TFOD est toujours prise en charge.
- Supprime l'utilisation de Renderscript.
- Correction du logspam sur le démarrage de l'application de stacktraces répétées relatives à
"Failed resolution of: Landroid/net/wifi/p2p/WifiP2pManager$DeviceInfoListener"
- Permet de désactiver la radio Bluetooth à partir de l'écran d'inspection
- Améliore les messages d'avertissement lorsque les appareils I2C ne répondent pas
- Ajoute une prise en charge du contrôle de la LED RVB présente sur les manèges de jeu PS4 / Etpark d'Opmodes
- Supprime les références héritées de la poussette des échantillons OPMODE. Renapt les échantillons "Pushbot" sur "robot". Directions du moteur inversées pour être compatibles avec le train de conduite "Driv Drive".
Correctifs de bugs
- Correction du problème n ° 316 (matrixf.inverted () a renvoyé une matrice de taille incorrecte pour les matrices 1x1 et 2x2).
- Self Inspect permet désormais la compatibilité de la station de conduite et du contrôleur de robot entre les versions ponctuelles.
- Corrige le bug où si la même instance d'objet
RumbleEffect
était en file d'attente pour plusieurs GamePads, il pourrait arriver que les deux commandes Rumble soient envoyées à une seule manche de jeu. - Corrigez le bogue dans la station de pilote où sur le centre de pilote, si les fonctionnalités de GamePad avancées étaient désactivées et qu'un GamePad officiellement pris en charge était connecté, puis ouvrir les fonctionnalités avancées de GamePad ou les dépassements de type GamePad feraient du rebond par le pilote USB personnalisé même si. Les fonctionnalités avancées de GamePad ont été désactivées.
- Protège contre l'exception du pointeur nul (peu probable) dans le localisateur de Vuforia.
- Harden Onbotjava et les blocs sauvent pour protéger contre les problèmes de sauvegarde lors de la déconnexion du programme et de la gestion
- Correction du problème où l'application RC serait suspendue si un révorce réécrit I2C échouait parce que l'opération I2C précédente était toujours en cours. Cette suspension s'est produite le plus souvent lors de l'initialisation du capteur de distance révalent
- Supprime le programme d'échantillon conceptwebcam.java. Cet échantillon n'est pas compatible avec onbotjava.
- Correction du bug où l'utilisation de balises HTML dans un champ de commentaires @ExportToblocks a empêché l'éditeur de blocs de charger.
- Correction de l'éditeur de blocs afin qu'il ne vous demande pas d'enregistrer lorsque vous n'avez rien modifié.
- Corrige le téléchargement d'un très grand projet de blocs vers l'éditeur de blocs hors ligne.
- Correction du bug qui a provoqué l'omission des blocs de blocs de dcmotorex de la boîte à outils de l'éditeur de blocs.
- Correction des programmes de blocs dépouillés de blocs (en raison de l'utilisation du bloc d'étiquette TensorFlow)
Version 7.1 (20211223-120805)
- Correction du crash lors de l'appel
isPwmEnabled()
(Issue # 223). - Corre une erreur de charpie (problème n ° 4).
- Corrige le crash de la station de pilote lors de la tentative d'utilisation du GamePad DualShock4 V1 avec des fonctionnalités de jeu avancées activées (numéro 173).
- Corrige le crash de la station de pilote possible (mais peu probable) lors de la connexion de GamePads de tout type.
- Correction du bogue où la station de pilote utiliserait générique 20% Deadzone pour Xbox360 et Logitech F310 GamePads lorsque les fonctionnalités de GamePad avancées ont été désactivées.
- Ajout de l'échantillon SimpleoMnidrive OPMode.
- Ajoute l'API de contrôle de la balance des blancs UVC.
- Corrige le problème # 259 La plupart des échantillons de blocs pour TensorFlow ne peuvent pas être utilisés pour un modèle différent.
- Les blocs précédemment étiquetés TensorflowObjectDectionFreightFrenzy (à partir de la sous-catégorie nommée "Optimized for Freight Frenzy") et TensorflowObjectDetectionCustGoldEl (à partir de la sous-catégorie nommée "Modèle personnalisé") ont été remplacées par un TensorflowObjectDetection étiqueté étiqueté. Les blocs dans les opmodes existants seront automatiquement mis à jour vers les nouveaux blocs lors de l'ouverture dans l'éditeur de blocs.
- Correction des blocs du problème n ° 260 Impossible d'appeler la méthode Java qui a un paramètre VuForalialOcalizer.
- Les blocs ont désormais un bloc étiqueté VuForiafreightfrenzy.getVuForiAlocalizer pour cela.
- Ajout d'une page pour gérer les modèles TensorFlow Lite dans / sdcard / first / tflitemodels. Pour accéder à la page des modèles Tflite:
- Vous pouvez cliquer sur le lien en bas de la page Gérer.
- Vous pouvez cliquer sur le lien en haut à droite la page du projet Blocks.
- Corrige Logspam lorsque
isBusy()
est appelé sur un moteur non en mode RTP. - Cachet l'élément "Mot de passe RC" sur l'écran d'inspection pour les contrôleurs de robots téléphoniques. (Il ne s'applique que pour les centres de contrôle).
- Ajoute le canal 165 au menu de sélection des canaux directs Wi-Fi dans l'écran des paramètres. (165 était auparavant disponible via l'interface utilisateur Web, mais pas localement dans l'application).
Version 7.0 (20210915-141025)
Améliorations et nouvelles fonctionnalités
- Ajoute la prise en charge des bibliothèques externes à onbotjava et à blocs.
- Téléchargez les fichiers .jar et .aar dans onbotjava.
- Limitation connue - Le périphérique RobotController doit être exécuté Android 7.0 ou plus.
- Limitation connue - Les fichiers .aar avec les actifs ne sont pas pris en charge.
- Les bibliothèques externes peuvent prendre en charge les périphériques matériels en utilisant l'annotation dans le package com.qualcomm.robotcore.hardware.configuration.annotations.
- Les bibliothèques externes peuvent inclure des fichiers .so pour le code natif.
- Les bibliothèques externes peuvent être utilisées à partir d'Opmodes Onbotjava.
- Les bibliothèques externes qui utilisent les annotations suivantes peuvent être utilisées à partir de blocs OPModes.
- org.firsinspires.ftc.robotcore.external.exportclasstoblocks
- org.firsinspires.ftc.Robotcore.external.exportblocks
- Les bibliothèques externes qui utilisent les annotations suivantes peuvent ajouter de nouveaux dispositifs matériels:
- com.qualcomm.robotcore.hardware.configuration.annotations.analogsensorty
- com.qualcomm.robotcore.hardware.configuration.annotations.deviceproperties
- com.qualcomm.robotcore.hardware.configuration.annotations.digitaliodEviceType
- com.qualcomm.robotcore.hardware.configuration.annotations.i2cdeviceType
- com.qualcomm.robotcore.hardware.configuration.annotations.motorType
- com.qualcomm.robotcore.hardware.configuration.annotations.servotype
- Les bibliothèques externes qui utilisent les annotations suivantes peuvent ajouter de nouvelles fonctionnalités au contrôleur de robot:
- org.firsinspires.ftc.ftccommon.external.onCreate
- org.firsinspires.ftc.ftccommon.external.onCreateEventloop
- org.firsinspires.ftc.ftccommon.external.onreatemenu
- org.firsinspires.ftc.ftccommon.external.ondestroy
- org.firsinspires.ftc.ftccommon.external.webhandlergistrar
- Ajoute la prise en charge de Rev Robotics Driver Hub.
- Ajoute un pilote USB GamePad entièrement personnalisé à la station de pilote (voir le menu "Advanced GamePad Fonctions" dans les paramètres DS).
- Permet aux GamePads de travailler sur des appareils sans support natif du noyau Linux (par exemple, certains appareils roumains Motorola).
- Permet au DS de lire le numéro de série unique de chaque manette de jeu, permettant la récupération automatique de manèges de jeu abandonnés même si deux manettes de jeu du même modèle tombent. (Remarque: Malheureusement, cela ne s'applique pas aux GamePads Etpark, car ils n'ont pas de série unique) .
- La lecture du numéro de série unique offre également la possibilité de configurer le DS pour attribuer des GamePads à une certaine position par défaut (donc pas besoin de démarrer + A / B).
- L'anneau LED sur le GamePad Xbox360 et la barre LED RVB sur le GamePad PS4 sont utilisés pour indiquer la position du pilote à laquelle le GamePad est lié.
- Les moteurs Rumble sur les GamePads Xbox360, PS4 et Etpark peuvent être contrôlés à partir d'Opmodes.
- Le pavé tactile à 2 points sur le GamePad PS4 peut être lu à partir d'Opmodes.
- Les boutons "Back" et "Guide" sur le GamePad peuvent désormais être liés à des contrôles de robot en toute sécurité (auparavant, sur de nombreux appareils, Android intercepterait ces boutons en appuyant sur le bouton d'accueil et fermerait l'application).
- Les fonctionnalités avancées de GamePad sont activées par défaut, mais peuvent être désactivées via le menu Paramètres afin de revenir à la prise en charge de GamePad fournie nativement par Android.
- Améliore la précision de la mesure du ping.
- Correction du problème où le temps de ping s'est révélé plus élevé que la réalité lors de la connexion initiale ou du redémarrage du robot.
- Pour voir la pleine amélioration, vous devez mettre à jour les applications du contrôleur de robot et de la station de pilote.
- Mise à jour des échantillons situés sur / ftcrobotController / src / main / java / org / firstinspires / ftc / robotController / external / échantillons.
- Ajout des échantillons conceptgamepadrumble et conceptgamepadtouchpad pour illustrer l'utilisation de ces nouvelles capacités de Gampad.
- Les échantillons de Vuforia existants condensés en seulement 2 échantillons (conceptvuforiafieldnavigation et conceptvufuriafieldnavigationwebcam) montrant comment déterminer l'emplacement du robot sur le terrain à l'aide de Vuforia. Ceux-ci utilisent tous deux les images cibles de la saison en cours.
- Ajout de conceptvufodirivetototargetwebcam pour illustrer un moyen facile de conduire directement vers toute cible visible Vuforia.
- Apporte de nombreuses améliorations au système d'avertissement et aux avertissements individuels.
- Les avertissements sont maintenant beaucoup plus espacés, afin qu'ils soient plus faciles à lire.
- De nouveaux avertissements ont été ajoutés pour les conditions qui devraient être résolues avant de concurrencer.
- L'avertissement des applications incompatibles utilise désormais les versions d'applications majeures et mineures, pas le code de version.
- Les avertissements sont automatiquement réactivés lorsqu'une application de contrôleur de robot à partir d'une nouvelle saison FTC est installée.
- Ajoute la prise en charge des transactions I2C sur le Hub / Control Hub d'extension sans spécifier une adresse de registre.
- Voir la section 3 de la spécification TI I2C.
- L'appel de ces nouvelles méthodes lors de l'utilisation du matériel de robotique moderne se traduira par une conception non soutenue.
- Modifie la méthode VuFofirialocalizer
close()
pour être publique. - Ajoute la prise en charge des modèles de détection d'objets TensorFlow V2.
- Réduit l'ambiguïté de la langue et des graphiques de soi.
- Onbotjava met désormais en garde contre les remplacements de fichiers potentiellement involontaires.
- Améliore le comportement de la bande Wi-Fi et du sélecteur de canaux sur la page Web Manage.
Correctifs de bugs
- Correction de l'application Robot Controller Crash sur Android 9+ lorsqu'une station de pilote se connecte.
- Correction du problème lorsqu'un OPMode était responsable de l'appel d'arrêt sur TENSORFLOW TFObjectDetector. Maintenant, cela se fait automatiquement.
- Corrige les blocs d'initialisation de VuForia pour permettre à l'utilisateur de choisir AxesOrder. Les blocs de blocs pertinents mis à jour OPMODES.
- Corrige FTCROBOTController Issue # 114 LED Les blocs LED et la classe Java ne fonctionnent pas.
- Corrige la journalisation des opmodes qui contiennent des caractères spéciaux dans leur nom.
- Corrige la station de conduite OPMODE Les contrôles devenant insensibles si la station de conduite était réglée sur la disposition du paysage et qu'une version onbotjava a été déclenchée pendant un OPMode.
- Corrige la fermeture de l'application de la station de conduite lorsqu'elle est éloignée ou l'écran est désactivé.
- Corrige "Black Swirl of Doom" (Infinite "Configuration du message Wi-Fi Direct") Sur les appareils plus anciens.
- Met à jour le commentaire Wiki sur la page d'introduction Onbotjava.
Version 6.2 (20210218-074821)
Améliorations
- Tente de fixer automatiquement la condition où le centre d'extension interne d'un centre de contrôle ne fonctionne pas en re-flash son firmware
- Apporte diverses améliorations à l'écran de couplage direct Wi-Fi, en particulier en mode paysage
- Le service de contrôleur de robot ne redémarre plus catégoriquement lorsque l'activité principale est amenée au premier plan
- (Par exemple, le service n'est plus redémarré simplement en visualisant l'écran d'auto-inspection et en appuyant sur le bouton arrière)
- Il est toujours redémarré si le menu des paramètres ou la configuration du menu robot est ouvert
Correctifs de bugs
- Correction du problème FTCROBOTController # 71 Impossible d'ouvrir Opmodes dans l'éditeur hors ligne des blocs V6.1
- Correction du problème FTCROBOTController # 79 6.1 provoque un redémarrage doux sur le jeu Motorola E5
- Correction du problème où le chien de garde du Hub OS de contrôle redémarrait l'application Robot Controller si le centre de contrôle n'était pas en mesure de communiquer avec son centre d'extension interne
- Corrige certains appareils I2C qui n'apparaissent pas dans les champs
HardwareMap
appropriés (comme hardwareMap.colorSensor
) - Correction du problème où l'exécution d'une réinitialisation d'usine Wi-Fi sur le centre de contrôle ne définirait pas la bande Wi-Fi à 2,4 GHz
- Correction du problème où onbotjava pourrait ne pas créer un nouveau fichier si l'option de "configuration du code pour le matériel configuré" était sélectionné
- Correction du problème lors de l'exécution de certaines opérations après qu'un OPMODE Crashes casse temporairement la communication de contrôle / extension
- Correction du problème où un centre de contrôle avec un centre d'extension configuré par USB ne fonctionnerait pas si le centre d'extension manquait au démarrage
- Corrige les problèmes potentiels causés par les versions de micrologiciel de contrôle / expansion incompatibles
- Correction du numéro FTC_APP 673 Le dernier match de match est supprimé au lieu des anciens par Robotlog
- Corrige ConceptVuForIaultrimateGoalnavigationWebcam Exemple OPMODE en orientant correctement la caméra sur Robot.
- Correction du problème où LogCAT serait spammé avec des exceptions d'interruption lorsque l'arrêt est demandé à la station de conducteur (ce comportement a été accidentellement introduit dans V5.3). Ce changement n'a aucun impact sur la fonctionnalité.
- Correction du problème lorsque l'éditeur Blocks ne charge pas si le nom de tout OPMode Teleop contient une apostrophe.
Version 6.1 (20201209-113742)
- Fait le bouton de numérisation sur l'écran de configuration Mettre à jour la liste des centres d'extension connectés via RS-485
- Corrige le problème de Skystone # 143
- Améliore la compatibilité de l'interface Web avec les versions Web View de Browser et Android System.
- Corrige le problème dans le pilote UVC où certaines caméras (par exemple certains MS Lifams) qui ont rapporté des intervalles de trame comme des valeurs arrondies plutôt que tronquées (par exemple
666667*100ns
au lieu de 666666*100ns
pour 15 ips) ne parviendraient pas à commencer la diffusion. - Ajoute la prise en charge du pilote UVC pour le contrôle PTZ virtuel
- Ajoute la prise en charge du pilote UVC pour le contrôle du gain (ISO)
- Ajoute la prise en charge du pilote UVC pour activer / désactiver la priorité AE. Ce paramètre fournit un moyen de dire à la caméra firmware
- A) Il peut sous-cycle la fréquence d'images demandée afin de fournir une image théoriquement meilleure (c'est-à-dire avec une exposition plus longue que la période inter-trame de la fréquence d'images sélectionnée)
- B) Il doit respecter la date limite inter-trame pour la fréquence d'images sélectionnée, même si l'image peut être sous-exposée en conséquence
- Ajoute la prise en charge du Watchdog du contrôleur de robot de commande de contrôle OS 1.1.2
- L'application Robot Controller sera redémarrée si elle cesse de répondre pendant plus de 10 secondes
- Ajoute la prise en charge de l'utilisation de l'application de la station de pilote sur Android 10+
- Présente une fonction de présélection de téléop automatique automatique
- Pour plus de détails et un guide d'utilisation, veuillez consulter cette entrée wiki
- Affiche l'icône à côté du nom OPMode dans la liste déroulante de la liste OPMODE sur la station de pilote pour indiquer la source de l'OPMode (c'est-à-dire l'outil de programmation utilisé pour le créer)
- Correction du problème où l'application de la station de pilote quitterait après avoir affiché l'écran Direct Wi-Fi de la configuration
- Correction des blocs et des invites onbotjava lorsqu'elles sont accessibles via le client du matériel Rev
Version 6.0 (20200921-085816)
Remarques importantes
- La version 6.0 est la version de la saison des objectifs ultimes.
- Nécessite Android Studio 4.0.
- Les utilisateurs d'Android Studio doivent être connectés à Internet la première fois qu'ils créent l'application (afin de télécharger les packages nécessaires pour la version).
- La version 5.5 était une chute modérément grande saison, août 2020. Il vaut la peine de revoir ces notes de publication ci-dessous également.
- La version 5.5 et plus ne fonctionneront pas sur les anciens téléphones Android 4.x et 5.x. Les utilisateurs doivent passer à un appareil Android 6.x approuvé ou plus récent.
- Les valeurs PIDF par défaut pour Rev Motors ont été reversées aux valeurs PID par défaut qui ont été utilisées au cours de la saison 2018-2019
- Ce changement a été apporté parce que les valeurs 2018-2019 se sont avérées mieux fonctionner pour de nombreux mécanismes
- Cela apporte le comportement des moteurs Rev conformément au comportement de tous les autres moteurs
- Si vous préférez le comportement de la saison 2019-2020 pour Rev Motors, voici les valeurs PIDF qui étaient en place, afin que vous puissiez les définir manuellement dans vos opmodes:
Motors HD HEX (toutes les boîtes de vitesses): Valeurs PIDF Valeurs: P = 1.17
, I = 0.117
, F = 11.7
Position PIDF Valeurs: P = 5.0
MOTEUR HEXE CORE: VACITÉ PIDF VALEURS: P = 4.96
, I = 0.496
, F = 49.6
Position Valeurs PIDF: P = 5.0
Nouvelles fonctionnalités
- Comprend le modèle d'inférence TensorFlow et les échantillons OPModes pour détecter les piles de démarrage d'objectifs ultimes (quatre anneaux vs pile à anneau unique).
- Comprend des cibles de vision ultime de Vuforia et des échantillons d'opmodes.
- Introduit une fonction de zoom numérique pour la détection d'objets TensorFlow (pour détecter les objets plus précisément à de plus grandes distances).
- Ajoute une entrée de configuration pour le moteur HD HD Rev Ultraplanetary
Améliorations
- Ajoute des méthodes SetGain () et getGain () à l'interface normaliséeColorsenSor
- En définissant le gain d'un capteur de couleur, vous pouvez ajuster pour différentes conditions d'éclairage. Par exemple, si vous détectez des valeurs de couleur plus faibles que prévu, vous pouvez augmenter le gain.
- La valeur de gain n'est appliquée qu'aux méthodes argb () et getNormalizedColors (), et non aux méthodes de couleur brute. La méthode getNormalizedColors () est recommandée pour la facilité d'utilisation et la clarté, car argb () doit être converti.
- Mise à jour SensorColor Java échantillon pour démontrer l'utilisation du gain
- Fusion SensorRevColorDistance Java échantillon dans SensorColor Java échantillon, qui présente les meilleures pratiques pour tous les capteurs de couleur
- Améliore la récupération des valeurs du capteur de couleur Rev V3
- Met à jour le calcul de normalisation des canaux RVB
- Améliore le calcul du canal alpha (peut être utilisé comme indicateur global de luminosité)
- Corrige la résolution du capteur par défaut, qui a causé des problèmes avec des environnements lumineux
- Ajoute une prise en charge de la modification de la résolution et du taux de mesure de la puce de capteur Broadcom
- Supprime les lectures IR et les calculs non destinés à la puce du capteur Broadcom
Correctifs de bugs
- Améliore la fiabilité de l'initialisation BNO055IMU IMU pour empêcher les défaillances d'initialisation aléatoires (qui se manifestent comme
Problem with 'imu'
).
Version 5.5 (20200824-090813)
La version 5.5 nécessite Android Studio 4.0 ou version ultérieure.
Nouvelles fonctionnalités
- Ajoute une prise en charge de l'appel des classes Java personnalisées à partir de blocs OPModes (corrige Skystone Issue # 161).
- Les classes doivent être dans le package org.firsinspires.ftc.teamcode.
- Pour avoir un accès facile à l'OPMODE, Hardwaremap, Telemétrie, GamePad1 et GamePad2, les classes peuvent étendre org.FirsSinSpires.ftc.Robotcore.external.blocksopmodecompanion.
- Les méthodes doivent être statiques publiques et n'ont pas plus de 21 paramètres.
- Les méthodes doivent être annotées avec org.firsinspires.ftc.robotcore.external.exporttoblocks.
- Les paramètres déclarés OPMODE, LinearopMode, Télémétrie et HardwareMap sont pris en charge et l'argument est fourni automatiquement, quel que soit l'ordre des paramètres. Sur le bloc, les prises de ces paramètres sont automatiquement remplies.
- Les paramètres déclarés Char ou Java.lang.Character accepteront tout bloc qui renvoie le texte et n'utilisera que le premier caractère dans le texte.
- Les paramètres déclarés booléens ou java.lang.boolean accepteront tout bloc qui renvoie Boolean.
- Les paramètres déclarés byte, java.lang.byte, short, java.lang.short, int, java.lang.integer, long ou java.lang.long, acceptera tout bloc qui renvoie un nombre et complètera cette valeur à le numéro entier le plus proche.
- Paramètres déclarés Float, java.lang.float, double, java.lang.double acceptera tout bloc qui renvoie un nombre.
- Ajoute la méthode de l'API de télémétrie pour définir le format d'affichage
- Classique
- Monospace
- HTML (certaines balises uniquement)
- Ajoute la prise en charge des blocs pour la commutation de caméras.
- Ajoute la prise en charge des blocs pour la détection d'objets TensorFlow avec un modèle personnalisé.
- Ajoute la prise en charge du téléchargement d'un modèle de détection d'objets TensorFlow personnalisé dans la page Gérer, ce qui est particulièrement utile pour les blocs et les utilisateurs d'Onbotjava.
- Affiche les nouveaux codes de clignotement du centre de contrôle lorsque la bande Wi-Fi est commandée à l'aide du bouton du Hub Control (uniquement possible sur Control Hub OS 1.1.2)
- Ajoute de nouveaux avertissements qui peuvent être désactivés dans les paramètres RC avancés
- Avertissement des versions d'applications incompatibles
- Avertissement d'utilisation Wi-Fi inutile 2,4 GHz
- Rev Hub exécute le firmware obsolète (plus ancien que la version 1.8.2)
- Ajoute la prise en charge de Sony PS4 GamePad et retravaille comment les GamePads fonctionnent sur la station de pilote
- Supprime la préférence qui définit le type GamePad en fonction de la position du pilote. Remplacé par menu qui permet de spécifier le type pour les manèges de jeu par une vidéo inconnue et un PID
- Tentatives de type de jeu de jeu de détection automatique basée sur USB VID et PID
- Si GamePad VID et PID n'est pas connu, utilisez le type SPE