AVIS
Ce référentiel contient le SDK FTC public 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.
- Si des calibrages existent avec un 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
- Correction de 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 abstraire 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".
Corrections 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.
Corrections 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
Corrections 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 HEX DE 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
Corrections 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 le problème Skystone # 161).
- Les classes doivent être dans le package org.firsSinSpires.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ÉTRE 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 comme 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 spécifié par l'utilisateur pour cette vidéo et PID
- Si GamePad VID et PID n'est pas connu et que l'utilisateur n'a pas spécifié de type pour cette vidéo et PID, une supposition éclairée est faite sur la façon de mapper le GamePad
- La station de pilote tentera désormais de se remettre automatiquement d'une déconnexion de la manette de jeu et de la réaffecter à la position à laquelle il a été attribué lorsqu'il a chuté
- Si un seul GamePad est affecté et qu'il tombe: il peut être récupéré
- Si deux manèges de jeu sont attribués, et ont des signatures VID / PID différentes , et qu'une seule baisse: elle sera récupérée
- Si deux manèges de jeu sont attribués et ont des signatures VID / PID différentes , et les deux baisseront: les deux seront récupérés
- Si deux manèges de jeu sont attribués, et ont les mêmes signatures VID / PID, et qu'une seule baisse: elle sera récupérée
- Si deux manèges de jeu sont attribués et ont les mêmes signatures VID / PID, et les deux tombent: aucun ne sera récupéré, en raison de l'ambiguïté des GamePads lorsqu'ils réapparaissent sur le bus USB.
- Il y a actuellement un cas de bord connu: s'il y a deux manèges de jeu avec la même signature vidéo / pid branchée, mais qu'un seul est attribué , et ils tombent tous les deux, c'est une chance de 50 à 50 La position attribuée: elle est déterminée par ce que l'on est réénuméré d'abord par le contrôleur de bus USB.
- Ajoute l'interface utilisateur du paysage à la station de pilote
- Nouvelle fonctionnalité: Timer de pratique avec des indices audio
- Nouvelle fonctionnalité (Control Hub uniquement): indicateur de résistance à la connexion du réseau sans fil (0-5 barres)
- Nouvelle fonctionnalité (Control Hub uniquement): Le taraudage sur l'affichage Ping / Channel passera à un autre affichage montrant Radio RX DBM et la vitesse de liaison (appuyez à nouveau pour revenir en arrière)
- La disposition ne s'autorota pas. Vous pouvez basculer la disposition du menu Paramètres de la station pilote.
Changements de rupture
- Supprime la prise en charge des versions Android 4.4 à 5.1 (KitKat et Lollipop). La Minsdkversion a maintenant 23 ans.
- Supprime les méthodes
LinearOpMode
dépréciées waitOneFullHardwareCycle()
et waitForNextHardwareCycle()
Améliorations
- Gère automatiquement l'adresse du centre de contrôle RS485
- Le centre de contrôle reçoit automatiquement une adresse réservée
- Les fichiers de configuration existants continueront de fonctionner
- Toutes les adresses de la gamme de 1 à 10 sont toujours disponibles pour les centres d'extension
- Le voyant du Hub Control sera désormais normalement vert solide, sans clignoter pour indiquer l'adresse
- Le centre de contrôle ne sera pas affiché sur la page des paramètres de modification d'adresse du centre d'extension
- Améliore le firmware midater Rev Hub
- L'utilisateur peut désormais choisir entre tous les fichiers de mise à jour du micrologiciel disponibles
- La version 1.8.2 du firmware Rev Hub est regroupée dans l'application Robot Controller.
- Le texte a été ajouté pour préciser que les hubs d'extension ne peuvent être mis à jour que via USB.
- La vitesse de mise à jour du micrologiciel a été réduite pour améliorer la fiabilité
- Permet à la mise à jour du firmware Rev Hub directement à partir de la page Web Manage
- Améliore la visionneuse de journaux sur Robot Controller
- Support de défilement horizontal (plus enveloppé de mots)
- Prend en charge le pincement à zoom
- Utilise une police monospacée
- Les messages d'erreur sont mis en évidence
- Nouvelle schéma de couleurs
- Tente de forcer un coup de coulage / bloqué sans redémarrer toute l'application
- Tous les types de conditions de fuite ne sont pas stoppables, mais si le code utilisateur tente de parler au matériel pendant la fuite, le système devrait être en mesure de le capturer.
- Fait divers ajustements à l'écran d'auto-inspection
- Renapme "OS Version" Entrée sur "version Android"
- Renapes "Nom direct Wi-Fi" vers "Nom Wi-Fi"
- Ajoute la version du Hub OS de contrôle, lors de la visualisation du rapport d'un centre de contrôle
- Cache l'entrée en mode avion, lors de la visualisation du rapport d'un centre de contrôle
- Supprime la vérification du changeur de canal de vitesse ZTE
- Affiche la version du firmware pour toutes les centres d'extension et de contrôle
- Remélace des paramètres du réseau Portion de la page Gérer
- Tous les paramètres réseau sont maintenant appliqués en un seul clic
- La chaîne directe Wi-Fi des contrôleurs de robots téléphoniques peut désormais être modifiée à partir de la page Gérer
- Les canaux Wi-Fi sont filtrés par bande (2,4 vs 5 GHz) et s'ils chevauchent d'autres canaux
- Le canal Wi-Fi actuel est présélectionné sur les contrôleurs de robots téléphoniques et les centres de contrôle exécutant OS 1.1.2 ou version ultérieure.
- Sur Control Hubs exécutant OS 1.1.2 ou version ultérieure, vous pouvez choisir de faire sélectionner automatiquement le système un canal sur la bande 5 GHz
- Améliore onbotjava
- De nouveaux thèmes clairs et sombres remplacent les anciens thèmes (chaos, github, chrome, ...)
- Le nouveau thème par défaut est
light
et sera utilisé lors de la première mise à jour de cette version
- Onbotjava a maintenant un éditeur à l'onglet
- Mode hors ligne en lecture seule
- Améliore la fonction de l'élément de menu "Sortez" sur le contrôleur de robot et la station de pilote
- Maintenant garanti d'être complètement arrêté et déchargé de mémoire
- Affiche un message d'avertissement si unmode linéarop
- Améliore le message d'erreur affiché lorsque la station de pilote et le contrôleur de robot sont incompatibles les uns avec les autres
- Station de pilote Opmode Panneau de commande désormais désactivé pendant qu'un robot de redémarrage est en cours
- Désactive les paramètres avancés liés au Wi-Fi Direct lorsque le contrôleur de robot est un centre de contrôle.
- Icônes de batterie de téléphone Tint sur la station de conduite lorsqu'elle est faible / critique.
- Utilise les noms "Control Hub Portal" et "Control Hub" (le cas échéant) dans de nouveaux fichiers de configuration
- Améliorer les performances de lecture I2C
- Très grande amélioration de Control Hub; jusqu'à ~ 2x plus rapide avec de petites lectures (par exemple 6 octets)
- Pas aussi apparent sur les centres d'extension connectés à un téléphone
- Infrastructure de construction de mise à jour / actualiser
- Mise à jour de la bibliothèque d'assistance 'AndroidX' à partir de 'com.android.support:ppompat', qui est fin de vie
- Mettez à jour TargetsDkversion et CompilesDkversion à 28
- Mettre à jour le plugin Android d'Android Studio au plus tard
- Correction de l'horodatage de construction signalé dans l'écran «À propos»
- Ajouter un exemple d'utilisation de la webcam manuel illustrant: conceptwebcam
Corrections de bugs
- Corrige le problème de Skystone # 248
- Corrige le problème de Skystone # 232 et modifie la sémantique de mise en cache en vrac pour permettre des transitions manuelles / auto-préservant le cache.
- Améliore les performances lorsque le capteur de distance Rev 2M est débranché
- Améliore la lisibilité des messages de toast sur certains appareils
- Permet à une station de pilote de se connecter à un contrôleur de robot une fois que les autres ont déconnecté
- Améliore la génération de faux numéros de série pour les caméras UVC qui ne fournissent pas de véritable numéro de série
- Auparavant, certains appareils attribueraient à ces caméras une série de
0:0
et ne parviendraient pas à ouvrir et à commencer à diffuser - Corrige FTC_APP Issue # 638.
- Corrige une multitude de bugs avec le moniteur de caméra VuForia, notamment:
- Correction du bug où l'aperçu pourrait être affiché avec un ratio d'aspect bancal
- Corre une bug où l'aperçu pourrait être coupé dans le paysage
- Correction du bug où l'aperçu s'est totalement gâché lors du téléphone rotatif
- Corre une bug où Crosshair pourrait dériver de la cible lors de l'utilisation de webcams
- Correction du problème dans le pilote UVC sur certains appareils (FTC_APP 681) si le streaming a été démarré / arrêté plusieurs fois de suite
- La question s'est manifestée comme une panique du noyau sur les appareils qui n'ont pas ce patch de noyau.
- Sur les appareils affectés qui ont le correctif, le problème s'est manifesté comme un simple échec à commencer à diffuser.
- L'équipe technologique estime que la cause profonde du problème est un bug dans le pilote Linux Kernel XHCI. Une solution de contournement a été mise en œuvre dans le pilote SDK UVC.
- Correction du bug dans le pilote UVC où souvent la moitié des cadres de l'appareil photo seraient supprimés (par exemple, seulement 15 images par seconde livrées lors d'une session de streaming configurée pour 30 images par seconde).
- Corrige le problème où la détection d'objets TensorFlow montrerait des résultats dont la confiance était inférieure au paramètre de confiance minimum.
- Corrige un problème d'exploitation potentiel de CVE-2019-11358 à Onbotjava
- Correction de la modification de l'adresse d'un centre d'extension avec des centres d'extension supplémentaires qui y sont connectés
- Préserve la connexion réseau du Control Hub lorsque "redémarrer le robot" est sélectionné
- Correction du problème où les analyses des appareils échoueraient pendant le redémarrage du robot
- Correction de l'utilisation du rendu
- Utiliser AndroidX.Renderscript Variant: une compatibilité accrue
- Utiliser Renderscript en mode Java, pas natif: simplifie la construction
- Corrige le problème de conversion de la webcam-frame-bitmap: le canal Alpha n'a pas été initialisé, seuls R, G, & B
- Corrige un éventuel débordement arithmétique dans la date limite
- Corrige la prise de blocage dans la prise en charge de la webcam de Vuforia qui pourrait entraîner des retards de 5 secondes lors de l'arrêt de l'OPMODE
Version 5.4 (20200108-101156)
- Corrige le problème de Skystone # 88
- Ajoute un élément d'inspection qui note lorsqu'un contrôleur de robot (Control Hub) utilise le mot de passe par défaut d'usine.
- Corrige le problème de Skystone # 61
- Corrige le problème de Skystone # 142
- Corrige FTC_APP Issue # 417 en ajoutant plus de capacités de surveillance de courant et de tension pour Rev Hubs.
- Corrige un crash parfois causé par l'activité Onbotjava
- Améliore la fonctionnalité d'Onbotjava Autosave FTC_APP # 738
- Correction du problème de réactivité du système lorsqu'un centre d'extension est déconnecté
- Correction du problème où l'initialisation de l'IMU pourrait empêcher l'Opmodes de s'arrêter
- Correction du problème où AndroidTextTospeEch.Spip () échouerait s'il était appelé trop tôt
- Ajoute des méthodes et des blocs de télémétrie.speak (), qui provoquent la station de conduite (si aussi mise à jour) pour parler du texte
- Ajoute et améliore les avertissements liés à l'expansion
- Améliore l'avertissement de batterie à faible teneur en extension
- Affiche l'avertissement immédiatement après que le hub l'a rapporté
- Spécifie si la condition est courante ou produite temporairement lors d'une exécution OPMODE
- Affiche les hubs ont signalé une batterie faible
- Affiche un avertissement lorsque le hub perd et retrouve le pouvoir lors d'une course OPMode
- Corrige le motif LED du hub après cette condition
- Affiche l'avertissement lorsque l'expansion Hub ne répond pas aux commandes
- Spécifie si la condition est courante ou produite temporairement lors d'une exécution OPMODE
- Clarifie l'avertissement lorsque l'expansion Hub n'est pas présente au démarrage
- Spécifie que cette condition nécessite un redémarrage du robot avant que le concentrateur ne puisse être utilisé.
- La lumière du Hub reflétera désormais avec précision cet état
- Améliore l'exploitation forestière et réduit le spam logarithmique dans ces conditions
- Synchronise l'heure et le fuseau horaire du centre de commande avec un navigateur Web connecté programmant le robot, si une station de pilote n'est pas disponible.
- Ajoute des fonctionnalités de lecture en vrac pour les hubs rev
- Un mode de mise en cache en vrac doit être défini au niveau du concentrateur avec
LynxModule#setBulkCachingMode()
. Cela s'applique à toutes les classes de matériel SDK pertinentes qui font référence à ce centre. - Les modes de mise en cache en vrac suivants suivants sont disponibles:
-
BulkCachingMode.OFF
(par défaut): Tous les appels matériels fonctionnent comme d'habitude. Les données en vrac peuvent lire LynxModule#getBulkData()
et traitées manuellement. -
BulkCachingMode.AUTO
: Les appels matériels applicables sont servis à partir d'un cache de lecture en vrac qui est effacé / actualisé automatiquement pour garantir que les commandes identiques ne frappent pas le même cache. Le cache peut également être effacé manuellement avec LynxModule#clearBulkCache()
, bien que cela ne soit pas recommandé. - (Utilisateurs avancés)
BulkCachingMode.MANUAL
: Identique à BulkCachingMode.AUTO
Sauf que le cache n'est jamais effacé automatiquement. To avoid getting stale data, the cache must be manually cleared at the beginning of each loop body or as the user deems appropriate.
- Removes PIDF Annotation values added in Rev 5.3 (to AndyMark, goBILDA and TETRIX motor configurations).
- The new motor types will still be available but their Default control behavior will revert back to Rev 5.2
- Adds new
ConceptMotorBulkRead
sample Opmode to demonstrate and compare Motor Bulk-Read modes for reducing I/O latencies.
Version 5.3 (20191004-112306)
- Fixes external USB/UVC webcam support
- Makes various bugfixes and improvements to Blocks page, including but not limited to:
- Many visual tweaks
- Browser zoom and window resize behave better
- Resizing the Java preview pane works better and more consistently across browsers
- The Java preview pane consistently gets scrollbars when needed
- The Java preview pane is hidden by default on phones
- Internet Explorer 11 should work
- Large dropdown lists display properly on lower res screens
- Disabled buttons are now visually identifiable as disabled
- A warning is shown if a user selects a TFOD sample, but their device is not compatible
- Warning messages in a Blocks OpMode are now visible by default.
- Adds goBILDA 5201 and 5202 motors to Robot Configurator
- Adds PIDF Annotation values to AndyMark, goBILDA and TETRIX motor configurations. This has the effect of causing the RUN_USING_ENCODERS and RUN_TO_POSITION modes to use PIDF vs PID closed loop control on these motors. This should provide more responsive, yet stable, speed control. PIDF adds Feedforward control to the basic PID control loop. Feedforward is useful when controlling a motor's speed because it "anticipates" how much the control voltage must change to achieve a new speed set-point, rather than requiring the integrated error to change sufficiently. The PIDF values were chosen to provide responsive, yet stable, speed control on a lightly loaded motor. The more heavily a motor is loaded (drag or friction), the more noticable the PIDF improvement will be.
- Fixes startup crash on Android 10
- Fixes ftc_app issue #712 (thanks to FROGbots-4634)
- Fixes ftc_app issue #542
- Allows "A" and lowercase letters when naming device through RC and DS apps.
Version 5.2 (20190905-083277)
- Fixes extra-wide margins on settings activities, and placement of the new configuration button
- Adds Skystone Vuforia image target data.
- Includes sample Skystone Vuforia Navigation OpModes (Java).
- Includes sample Skystone Vuforia Navigation OpModes (Blocks).
- Adds TensorFlow inference model (.tflite) for Skystone game elements.
- Includes sample Skystone TensorFlow OpModes (Java).
- Includes sample Skystone TensorFlow OpModes (Blocks).
- Removes older (season-specific) sample OpModes.
- Includes 64-bit support (to comply with Google Play requirements).
- Protects against Stuck OpModes when a Restart Robot is requested. (Thanks to FROGbots-4634) (ftc_app issue #709)
- Blocks related changes:
- Fixes bug with blocks generated code when hardware device name is a java or javascript reserved word.
- Shows generated java code for blocks, even when hardware items are missing from the active configuration.
- Displays warning icon when outdated Vuforia and TensorFlow blocks are used (SkyStone issue #27)
Version 5.1 (20190820-222104)
- Defines default PIDF parameters for the following motors:
- REV Core Hex Motor
- REV 20:1 HD Hex Motor
- REV 40:1 HD Hex Motor
- Adds back button when running on a device without a system back button (such as a Control Hub)
- Allows a REV Control Hub to update the firmware on a REV Expansion Hub via USB
- Fixes SkyStone issue #9
- Fixes ftc_app issue #715
- Prevents extra DS User clicks by filtering based on current state.
- Prevents incorrect DS UI state changes when receiving new OpMode list from RC
- Adds support for REV Color Sensor V3
- Adds a manual-refresh DS Camera Stream for remotely viewing RC camera frames.
- To show the stream on the DS, initialize but do not run a stream-enabled opmode, select the Camera Stream option in the DS menu, and tap the image to refresh. This feature is automatically enabled when using Vuforia or TFOD—no additional RC configuration is required for typical use cases. To hide the stream, select the same menu item again.
- Note that gamepads are disabled and the selected opmode cannot be started while the stream is open as a safety precaution.
- To use custom streams, consult the API docs for
CameraStreamServer#setSource
and CameraStreamSource
.
- Adds many Star Wars sounds to RobotController resources.
- Added Skystone Sounds Chooser Sample Program.
- Switches out startup, connect chimes, and error/warning sounds for Star Wars sounds
- Updates OnBot Java to use a WebSocket for communication with the robot
- The OnBot Java page no longer has to do a full refresh when a user switches from editing one file to another
Problèmes connus :
- Camera Stream
- The Vuforia camera stream inherits the issues present in the phone preview (namely ftc_app issue #574). This problem does not affect the TFOD camera stream even though it receives frames from Vuforia.
- The orientation of the stream frames may not always match the phone preview. For now, these frames may be rotated manually via a custom
CameraStreamSource
if desired.
- OnBotJava
- Browser back button may not always work correctly
- It's possible for a build to be queued, but not started. The OnBot Java build console will display a warning if this occurs.
- A user might not realize they are editing a different file if the user inadvertently switches from one file to another since this switch is now seamless. The name of the currently open file is displayed in the browser tab.
Version 5.0 (built on 19.06.14)
- Support for the REV Robotics Control Hub.
- Adds a Java preview pane to the Blocks editor.
- Adds a new offline export feature to the Blocks editor.
- Display Wi-Fi channel in Network circle on Driver Station.
- Adds calibration for Logitech C270
- Updates build tooling and target SDK.
- Compliance with Google's permissions infrastructure (Required after build tooling update).
- Keep Alives to mitigate the Motorola Wi-Fi scanning problem. Telemetry substitute no longer necessary.
- Improves Vuforia error reporting.
- Fixes ftctechnh/ftc_app issues 621, 713.
- Miscellaneous bug fixes and improvements.
Version 4.3 (built on 18.10.31)
- Includes missing TensorFlow-related libraries and files.
Version 4.2 (built on 18.10.30)
- Includes fix to avoid deadlock situation with WatchdogMonitor which could result in USB communication errors.
- Comm error appeared to require that user disconnect USB cable and restart the Robot Controller app to recover.
- robotControllerLog.txt would have error messages that included the words "E RobotCore: lynx xmit lock: #### abandoning lock:"
- Includes fix to correctly list the parent module address for a REV Robotics Expansion Hub in a configuration (.xml) file.
- Bug in versions 4.0 and 4.1 would incorrect list the address module for a parent REV Robotics device as "1".
- If the parent module had a higher address value than the daisy-chained module, then this bug would prevent the Robot Controller from communicating with the downstream Expansion Hub.
- Added requirement for ACCESS_COARSE_LOCATION to allow a Driver Station running Android Oreo to scan for Wi-Fi Direct devices.
- Added google() repo to build.gradle because aapt2 must be downloaded from the google() repository beginning with version 3.2 of the Android Gradle Plugin.
- Important Note: Android Studio users will need to be connected to the Internet the first time build the ftc_app project.
- Internet connectivity is required for the first build so the appropriate files can be downloaded from the Google repository.
- Users should not need to be connected to the Internet for subsequent builds.
- This should also fix buid issue where Android Studio would complain that it "Could not find com.android.tools.lint:lint-gradle:26.1.4" (or similar).
- Added support for REV Spark Mini motor controller as part of the configuration menu for a servo/PWM port on the REV Expansion Hub.
- Provide examples for playing audio files in an OpMode.
- Block Development Tool Changes
- Includes a fix for a problem with the Velocity blocks that were reported in the FTC Technology forum (Blocks Programming subforum).
- Change the "Save completed successfully." message to a white color so it will contrast with a green background.
- Fixed the "Download image" feature so it will work if there are text blocks in the OpMode.
- Introduce support for Google's TensorFlow Lite technology for object detetion for 2018-2019 game.
- TensorFlow lite can recognize Gold Mineral and Silver Mineral from 2018-2019 game.
- Example Java and Block OpModes are included to show how to determine the relative position of the gold block (left, center, right).
Version 4.1 (released on 18.09.24)
Les changements incluent :
- Fix to prevent crash when deprecated configuration annotations are used.
- Change to allow FTC Robot Controller APK to be auto-updated using FIRST Global Control Hub update scripts.
- Removed samples for non supported / non legal hardware.
- Improvements to Telemetry.addData block with "text" socket.
- Updated Blocks sample OpMode list to include Rover Ruckus Vuforia example.
- Update SDK library version number.
Version 4.0 (released on 18.09.12)
Les changements incluent :
Initial support for UVC compatible cameras
- If UVC camera has a unique serial number, RC will detect and enumerate by serial number.
- If UVC camera lacks a unique serial number, RC will only support one camera of that type connected.
- Calibration settings for a few cameras are included (see TeamCode/src/main/res/xml/teamwebcamcalibrations.xml for details).
- User can upload calibration files from Program and Manage web interface.
- UVC cameras seem to draw a fair amount of electrical current from the USB bus.
- This does not appear to present any problems for the REV Robotics Control Hub.
- This does seem to create stability problems when using some cameras with an Android phone-based Robot Controller.
- FTC Tech Team is investigating options to mitigate this issue with the phone-based Robot Controllers.
- Updated sample Vuforia Navigation and VuMark OpModes to demonstrate how to use an internal phone-based camera and an external UVC webcam.
Support for improved motor control.
- REV Robotics Expansion Hub firmware 1.8 and greater will support a feed forward mechanism for closed loop motor control.
- FTC SDK has been modified to support PIDF coefficients (proportional, integral, derivative, and feed forward).
- FTC Blocks development tool modified to include PIDF programming blocks.
- Deprecated older PID-related methods and variables.
- REV's 1.8.x PIDF-related changes provide a more linear and accurate way to control a motor.
Sans fil
- Added 5GHz support for wireless channel changing for those devices that support it.
- Tested with Moto G5 and E4 phones.
- Also tested with other (currently non-approved) phones such as Samsung Galaxy S8.
Improved Expansion Hub firmware update support in Robot Controller app
- Changes to make the system more robust during the firmware update process (when performed through Robot Controller app).
- User no longer has to disconnect a downstream daisy-chained Expansion Hub when updating an Expansion Hub's firmware.
- If user is updating an Expansion Hub's firmware through a USB connection, he/she does not have to disconnect RS485 connection to other Expansion Hubs.
- The user still must use a USB connection to update an Expansion Hub's firmware.
- The user cannot update the Expansion Hub firmware for a downstream device that is daisy chained through an RS485 connection.
- If an Expansion Hub accidentally gets "bricked" the Robot Controller app is now more likely to recognize the Hub when it scans the USB bus.
- Robot Controller app should be able to detect an Expansion Hub, even if it accidentally was bricked in a previous update attempt.
- Robot Controller app should be able to install the firmware onto the Hub, even if if accidentally was bricked in a previous update attempt.
Élasticité
- FTC software can detect and enable an FTDI reset feature that is available with REV Robotics v1.8 Expansion Hub firmware and greater.
- When enabled, the Expansion Hub can detect if it hasn't communicated with the Robot Controller over the FTDI (USB) connection.
- If the Hub hasn't heard from the Robot Controller in a while, it will reset the FTDI connection.
- This action helps system recover from some ESD-induced disruptions.
- Various fixes to improve reliability of FTC software.
Blocs
- Fixed errors with string and list indices in blocks export to java.
- Support for USB connected UVC webcams.
- Refactored optimized Blocks Vuforia code to support Rover Ruckus image targets.
- Added programming blocks to support PIDF (proportional, integral, derivative and feed forward) motor control.
- Added formatting options (under Telemetry and Miscellaneous categories) so user can set how many decimal places to display a numerical value.
- Support to play audio files (which are uploaded through Blocks web interface) on Driver Station in addition to the Robot Controller.
- Fixed bug with Download Image of Blocks feature.
- Support for REV Robotics Blinkin LED Controller.
- Support for REV Robotics 2m Distance Sensor.
- Added support for a REV Touch Sensor (no longer have to configure as a generic digital device).
- Added blocks for DcMotorEx methods.
- These are enhanced methods that you can use when supported by the motor controller hardware.
- The REV Robotics Expansion Hub supports these enhanced methods.
- Enhanced methods include methods to get/set motor velocity (in encoder pulses per second), get/set PIDF coefficients, etc..
Modest Improvements in Logging
- Decrease frequency of battery checker voltage statements.
- Removed non-FTC related log statements (wherever possible).
- Introduced a "Match Logging" feature.
- Under "Settings" a user can enable/disable this feature (it's disabled by default).
- If enabled, user provides a "Match Number" through the Driver Station user interface (top of the screen).
- The Match Number is used to create a log file specifically with log statements from that particular OpMode run.
- Match log files are stored in /sdcard/FIRST/matlogs on the Robot Controller.
- Once an OpMode run is complete, the Match Number is cleared.
- This is a convenient way to create a separate match log with statements only related to a specific OpMode run.
New Devices
- Support for REV Robotics Blinkin LED Controller.
- Support for REV Robotics 2m Distance Sensor.
- Added configuration option for REV 20:1 HD Hex Motor.
- Added support for a REV Touch Sensor (no longer have to configure as a generic digital device).
Divers
- Fixed some errors in the definitions for acceleration and velocity in our javadoc documentation.
- Added ability to play audio files on Driver Station
- When user is configuring an Expansion Hub, the LED on the Expansion Hub will change blink pattern (purple-cyan) to indicate which Hub is currently being configured.
- Renamed I2cSensorType to I2cDeviceType.
- Added an external sample OpMode that demonstrates localization using 2018-2019 (Rover Ruckus presented by QualComm) Vuforia targets.
- Added an external sample OpMode that demonstrates how to use the REV Robotics 2m Laser Distance Sensor.
- Added an external sample OpMode that demonstrates how to use the REV Robotics Blinkin LED Controller.
- Re-categorized external Java sample OpModes to "TeleOp" instead of "Autonomous".
Problèmes connus :
Version 3.6 (built on 17.12.18)
Les changements incluent :
- Blocks Changes
- Uses updated Google Blockly software to allow users to edit their OpModes on Apple iOS devices (including iPad and iPhone).
- Improvement in Blocks tool to handle corrupt OpMode files.
- Autonomous OpModes should no longer get switched back to tele-op after re-opening them to be edited.
- The system can now detect type mismatches during runtime and alert the user with a message on the Driver Station.
- Updated javadoc documentation for setPower() method to reflect correct range of values (-1 to +1).
- Modified VuforiaLocalizerImpl to allow for user rendering of frames
- Added a user-overrideable onRenderFrame() method which gets called by the class's renderFrame() method.
Version 3.5 (built on 17.10.30)
Changes with version 3.5 include:
- Introduced a fix to prevent random OpMode stops, which can occur after the Robot Controller app has been paused and then resumed (for example, when a user temporarily turns off the display of the Robot Controller phone, and then turns the screen back on).
- Introduced a fix to prevent random OpMode stops, which were previously caused by random peer disconnect events on the Driver Station.
- Fixes issue where log files would be closed on pause of the RC or DS, but not re-opened upon resume.
- Fixes issue with battery handler (voltage) start/stop race.
- Fixes issue where Android Studio generated OpModes would disappear from available list in certain situations.
- Fixes problem where OnBot Java would not build on REV Robotics Control Hub.
- Fixes problem where OnBot Java would not build if the date and time on the Robot Controller device was "rewound" (set to an earlier date/time).
- Improved error message on OnBot Java that occurs when renaming a file fails.
- Removed unneeded resources from android.jar binaries used by OnBot Java to reduce final size of Robot Controller app.
- Added MR_ANALOG_TOUCH_SENSOR block to Blocks Programming Tool.
Version 3.4 (built on 17.09.06)
Changes with version 3.4 include:
- Added telemetry.update() statement for BlankLinearOpMode template.
- Renamed sample Block OpModes to be more consistent with Java samples.
- Added some additional sample Block OpModes.
- Reworded OnBot Java readme slightly.
Version 3.3 (built on 17.09.04)
This version of the software includes improves for the FTC Blocks Programming Tool and the OnBot Java Programming Tool.
Changes with verion 3.3 include:
- Android Studio ftc_app project has been updated to use Gradle Plugin 2.3.3.
- Android Studio ftc_app project is already using gradle 3.5 distribution.
- Robot Controller log has been renamed to /sdcard/RobotControllerLog.txt (note that this change was actually introduced w/ v3.2).
- Improvements in I2C reliability.
- Optimized I2C read for REV Expansion Hub, with v1.7 firmware or greater.
- Updated all external/samples (available through OnBot and in Android project folder).
- Vuforia
- Added support for VuMarks that will be used for the 2017-2018 season game.
- Blocs
- Update to latest Google Blockly release.
- Sample OpModes can be selected as a template when creating new OpMode.
- Fixed bug where the blocks would disappear temporarily when mouse button is held down.
- Added blocks for Range.clip and Range.scale.
- User can now disable/enable Block OpModes.
- Fix to prevent occasional Blocks deadlock.
- OnBot Java
- Significant improvements with autocomplete function for OnBot Java editor.
- Sample OpModes can be selected as a template when creating new OpMode.
- Fixes and changes to complete hardware setup feature.
- Updated (and more useful) onBot welcome message.
Problèmes connus :
- Android Studio
- After updating to the new v3.3 Android Studio project folder, if you get error messages indicating "InvalidVirtualFileAccessException" then you might need to do a File->Invalidate Caches / Restart to clear the error.
- OnBot Java
- Sometimes when you push the build button to build all OpModes, the RC returns an error message that the build failed. If you press the build button a second time, the build typically suceeds.
Version 3.2 (built on 17.08.02)
This version of the software introduces the "OnBot Java" Development Tool. Similar to the FTC Blocks Development Tool, the FTC OnBot Java Development Tool allows a user to create, edit and build OpModes dynamically using only a Javascript-enabled web browser.
The OnBot Java Development Tool is an integrated development environment (IDE) that is served up by the Robot Controller. OpModes are created and edited using a Javascript-enabled browser (Google Chromse is recommended). OpModes are saved on the Robot Controller Android device directly.
The OnBot Java Development Tool provides a Java programming environment that does NOT need Android Studio.
Changes with version 3.2 include:
Enhanced web-based development tools
- Introduction of OnBot Java Development Tool.
- Web-based programming and management features are "always on" (user no longer needs to put Robot Controller into programming mode).
- Web-based management interface (where user can change Robot Controller name and also easily download Robot Controller log file).
- OnBot Java, Blocks and Management features available from web based interface.
Blocks Programming Development Tool:
- Changed "LynxI2cColorRangeSensor" block to "REV Color/range sensor" block.
- Fixed tooltip for ColorSensor.isLightOn block. Added blocks for ColorSensor.getNormalizedColors and LynxI2cColorRangeSensor.getNormalizedColors.
Added example OpModes for digital touch sensor and REV Robotics Color Distance sensor.
User selectable color themes.
Includes many minor enhancements and fixes (too numerous to list).
Problèmes connus :
- Auto complete function is incomplete and does not support the following (for now):
- Access via this keyword
- Access via super keyword
- Members of the super cloass, not overridden by the class
- Any methods provided in the current class
- Inner classes
- Can't handle casted objects
- Any objects coming from an parenthetically enclosed expression
Version 3.10 (built on 17.05.09)
This version of the software provides support for the REV Robotics Expansion Hub. This version also includes improvements in the USB communication layer in an effort to enhance system resiliency. If you were using a 2.x version of the software previously, updating to version 3.1 requires that you also update your Driver Station software in addition to updating the Robot Controller software.
Also note that in version 3.10 software, the setMaxSpeed and getMaxSpeed methods are no longer available (not deprecated, they have been removed from the SDK). Also note that the new 3.x software incorporates motor profiles that a user can select as he/she configures the robot.
Les changements incluent :
- Blocks changes
- Added VuforiaTrackableDefaultListener.getPose and Vuforia.trackPose blocks.
- Added optimized blocks support for Vuforia extended tracking.
- Added atan2 block to the math category.
- Added useCompetitionFieldTargetLocations parameter to Vuforia.initialize block. If set to false, the target locations are placed at (0,0,0) with target orientation as specified in https://github.com/gearsincorg/FTCVuforiaDemo/blob/master/Robot_Navigation.java tutorial OpMode.
- Incorporates additional improvements to USB comm layer to improve system resiliency (to recover from a greater number of communication disruptions).
Additional Notes Regarding Version 3.00 (built on 17.04.13)
In addition to the release changes listed below (see section labeled "Version 3.00 (built on 17.04.013)"), version 3.00 has the following important changes:
- Version 3.00 software uses a new version of the FTC Robocol (robot protocol). If you upgrade to v3.0 on the Robot Controller and/or Android Studio side, you must also upgrade the Driver Station software to match the new Robocol.
- Version 3.00 software removes the setMaxSpeed and getMaxSpeed methods from the DcMotor class. If you have an OpMode that formerly used these methods, you will need to remove the references/calls to these methods. Instead, v3.0 provides the max speed information through the use of motor profiles that are selected by the user during robot configuration.
- Version 3.00 software currently does not have a mechanism to disable extra i2c sensors. We hope to re-introduce this function with a release in the near future.
Version 3.00 (built on 17.04.13)
*** Use this version of the software at YOUR OWN RISK!!! ***
This software is being released as an "alpha" version. Use this version at your own risk!
This pre-release software contains SIGNIFICANT changes, including changes to the Wi-Fi Direct pairing mechanism, rewrites of the I2C sensor classes, changes to the USB/FTDI layer, and the introduction of support for the REV Robotics Expansion Hub and the REV Robotics color-range-light sensor. These changes were implemented to improve the reliability and resiliency of the FTC control system.
Please note, however, that version 3.00 is considered "alpha" code. This code is being released so that the FIRST community will have an opportunity to test the new REV Expansion Hub electronics module when it becomes available in May. The developers do not recommend using this code for critical applications (ie, competition use).
*** Use this version of the software at YOUR OWN RISK!!! ***
Les changements incluent :
- Major rework of sensor-related infrastructure. Includes rewriting sensor classes to implement synchronous I2C communication.
- Fix to reset Autonomous timer back to 30 seconds.
- Implementation of specific motor profiles for approved 12V motors (includes Tetrix, AndyMark, Matrix and REV models).
- Modest improvements to enhance Wi-Fi P2P pairing.
- Fixes telemetry log addition race.
- Publishes all the sources (not just a select few).
- Includes Block programming improvements
- Addition of optimized Vuforia blocks.
- Auto scrollbar to projects and sounds pages.
- Fixed blocks paste bug.
- Blocks execute after while-opModeIsActive loop (to allow for cleanup before exiting OpMode).
- Added gyro integratedZValue block.
- Fixes bug with projects page for Firefox browser.
- Added IsSpeaking block to AndroidTextToSpeech.
- Implements support for the REV Robotics Expansion Hub
- Implements support for integral REV IMU (physically installed on I2C bus 0, uses same Bosch BNO055 9 axis absolute orientation sensor as Adafruit 9DOF abs orientation sensor). - Implements support for REV color/range/light sensor.
- Provides support to update Expansion Hub firmware through FTC SDK.
- Detects REV firmware version and records in log file.
- Includes support for REV Control Hub (note that the REV Control Hub is not yet approved for FTC use).
- Implements FTC Blocks programming support for REV Expansion Hub and sensor hardware.
- Detects and alerts when I2C device disconnect.
Version 2.62 (built on 17.01.07)
- Added null pointer check before calling modeToByte() in finishModeSwitchIfNecessary method for ModernRoboticsUsbDcMotorController class.
- Changes to enhance Modern Robotics USB protocol robustness.
Version 2.61 (released on 16.12.19)
- Blocks Programming mode changes:
- Fix to correct issue when an exception was thrown because an OpticalDistanceSensor object appears twice in the hardware map (the second time as a LightSensor).
Version 2.6 (released on 16.12.16)
- Fixes for Gyro class:
- Improve (decrease) sensor refresh latency.
- fix isCalibrating issues.
- Blocks Programming mode changes:
- Blocks now ignores a device in the configuration xml if the name is empty. Other devices work in configuration work fine.
Version 2.5 (internal release on released on 16.12.13)
- Blocks Programming mode changes:
- Added blocks support for AdafruitBNO055IMU.
- Added Download OpMode button to FtcBocks.html.
- Added support for copying blocks in one OpMode and pasting them in an other OpMode. The clipboard content is stored on the phone, so the programming mode server must be running.
- Modified Utilities section of the toolbox.
- In Programming Mode, display information about the active connections.
- Fixed paste location when workspace has been scrolled.
- Added blocks support for the android Accelerometer.
- Fixed issue where Blocks Upload OpMode truncated name at first dot.
- Added blocks support for Android SoundPool.
- Added type safety to blocks for Acceleration.
- Added type safety to blocks for AdafruitBNO055IMU.Parameters.
- Added type safety to blocks for AnalogInput.
- Added type safety to blocks for AngularVelocity.
- Added type safety to blocks for Color.
- Added type safety to blocks for ColorSensor.
- Added type safety to blocks for CompassSensor.
- Added type safety to blocks for CRServo.
- Added type safety to blocks for DigitalChannel.
- Added type safety to blocks for ElapsedTime.
- Added type safety to blocks for Gamepad.
- Added type safety to blocks for GyroSensor.
- Added type safety to blocks for IrSeekerSensor.
- Added type safety to blocks for LED.
- Added type safety to blocks for LightSensor.
- Added type safety to blocks for LinearOpMode.
- Added type safety to blocks for MagneticFlux.
- Added type safety to blocks for MatrixF.
- Added type safety to blocks for MrI2cCompassSensor.
- Added type safety to blocks for MrI2cRangeSensor.
- Added type safety to blocks for OpticalDistanceSensor.
- Added type safety to blocks for Orientation.
- Added type safety to blocks for Position.
- Added type safety to blocks for Quaternion.
- Added type safety to blocks for Servo.
- Added type safety to blocks for ServoController.
- Added type safety to blocks for Telemetry.
- Added type safety to blocks for Temperature.
- Added type safety to blocks for TouchSensor.
- Added type safety to blocks for UltrasonicSensor.
- Added type safety to blocks for VectorF.
- Added type safety to blocks for Velocity.
- Added type safety to blocks for VoltageSensor.
- Added type safety to blocks for VuforiaLocalizer.Parameters.
- Added type safety to blocks for VuforiaTrackable.
- Added type safety to blocks for VuforiaTrackables.
- Added type safety to blocks for enums in AdafruitBNO055IMU.Parameters.
- Added type safety to blocks for AndroidAccelerometer, AndroidGyroscope, AndroidOrientation, and AndroidTextToSpeech.
Version 2.4 (released on 16.11.13)
- Fix to avoid crashing for nonexistent resources.
- Blocks Programming mode changes:
- Added blocks to support OpenGLMatrix, MatrixF, and VectorF.
- Added blocks to support AngleUnit, AxesOrder, AxesReference, CameraDirection, CameraMonitorFeedback, DistanceUnit, and TempUnit.
- Added blocks to support Acceleration.
- Added blocks to support LinearOpMode.getRuntime.
- Added blocks to support MagneticFlux and Position.
- Fixed typos.
- Made blocks for ElapsedTime more consistent with other objects.
- Added blocks to support Quaternion, Velocity, Orientation, AngularVelocity.
- Added blocks to support VuforiaTrackables, VuforiaTrackable, VuforiaLocalizer, VuforiaTrackableDefaultListener.
- Fixed a few blocks.
- Added type checking to new blocks.
- Updated to latest blockly.
- Added default variable blocks to navigation and matrix blocks.
- Fixed toolbox entry for openGLMatrix_rotation_withAxesArgs.
- When user downloads Blocks-generated OpMode, only the .blk file is downloaded.
- When user uploads Blocks-generated OpMode (.blk file), Javascript code is auto generated.
- Added DbgLog support.
- Added logging when a blocks file is read/written.
- Fixed bug to properly render blocks even if missing devices from configuration file.
- Added support for additional characters (not just alphanumeric) for the block file names (for download and upload).
- Added support for OpMode flavor (“Autonomous” or “TeleOp”) and group.
- Changes to Samples to prevent tutorial issues.
- Incorporated suggested changes from public pull 216 (“Replace .. paths”).
- Remove Servo Glitches when robot stopped.
- if user hits “Cancels” when editing a configuration file, clears the unsaved changes and reverts to original unmodified configuration.
- Added log info to help diagnose why the Robot Controller app was terminated (for example, by watch dog function).
- Added ability to transfer log from the controller.
- Fixed inconsistency for AngularVelocity
- Limit unbounded growth of data for telemetry. If user does not call telemetry.update() for LinearOpMode in a timely manner, data added for telemetry might get lost if size limit is exceeded.
Version 2.35 (released on 16.10.06)
- Blockly programming mode - Removed unnecesary idle() call from blocks for new project.
Version 2.30 (released on 16.10.05)
- Blockly programming mode:
- Mechanism added to save Blockly OpModes from Programming Mode Server onto local device
- To avoid clutter, blocks are displayed in categorized folders
- Added support for DigitalChannel
- Added support for ModernRoboticsI2cCompassSensor
- Added support for ModernRoboticsI2cRangeSensor
- Added support for VoltageSensor
- Added support for AnalogInput
- Added support for AnalogOutput
- Fix for CompassSensor setMode block
- Vuforia
- Fix deadlock / make camera data available while Vuforia is running.
- Update to Vuforia 6.0.117 (recommended by Vuforia and Google to close security loophole).
- Fix for autonomous 30 second timer bug (where timer was in effect, even though it appeared to have timed out).
- opModeIsActive changes to allow cleanup after OpMode is stopped (with enforced 2 second safety timeout).
- Fix to avoid reading i2c twice.
- Updated sample OpModes.
- Improved logging and fixed intermittent freezing.
- Added digital I/O sample.
- Cleaned up device names in sample OpModes to be consistent with Pushbot guide.
- Fix to allow use of IrSeekerSensorV3.
Version 2.20 (released on 16.09.08)
- Support for Modern Robotics Compass Sensor.
- Support for Modern Robotics Range Sensor.
- Revise device names for Pushbot templates to match the names used in Pushbot guide.
- Fixed bug so that IrSeekerSensorV3 device is accessible as IrSeekerSensor in hardwareMap.
- Modified computer vision code to require an individual Vuforia license (per legal requirement from PTC).
- Minor fixes.
- Blockly enhancements:
- Support for Voltage Sensor.
- Support for Analog Input.
- Support for Analog Output.
- Support for Light Sensor.
- Support for Servo Controller.
Version 2.10 (released on 16.09.03)
- Support for Adafruit IMU.
- Improvements to ModernRoboticsI2cGyro class
- Block on reset of z axis.
- isCalibrating() returns true while gyro is calibration.
- Updated sample gyro program.
- Blockly enhancements
- support for android.graphics.Color.
- added support for ElapsedTime.
- improved look and legibility of blocks.
- support for compass sensor.
- support for ultrasonic sensor.
- support for IrSeeker.
- support for LED.
- support for color sensor.
- support for CRServo
- prompt user to configure robot before using programming mode.
- Provides ability to disable audio cues.
- various bug fixes and improvements.
Version 2.00 (released on 16.08.19)
- This is the new release for the upcoming 2016-2017 FIRST Tech Challenge Season.
- Channel change is enabled in the FTC Robot Controller app for Moto G 2nd and 3rd Gen phones.
- Users can now use annotations to register/disable their OpModes.
- Changes in the Android SDK, JDK and build tool requirements (minsdk=19, java 1.7, build tools 23.0.3).
- Standardized units in analog input.
- Cleaned up code for existing analog sensor classes.
- setChannelMode and getChannelMode were REMOVED from the DcMotorController class. This is important - we no longer set the motor modes through the motor controller.
- setMode and getMode were added to the DcMotor class.
- ContinuousRotationServo class has been added to the FTC SDK.
- Range.clip() method has been overloaded so it can support this operation for int, short and byte integers.
- Some changes have been made (new methods added) on how a user can access items from the hardware map.
- Users can now set the zero power behavior for a DC motor so that the motor will brake or float when power is zero.
- Prototype Blockly Programming Mode has been added to FTC Robot Controller. Users can place the Robot Controller into this mode, and then use a device (such as a laptop) that has a Javascript enabled browser to write Blockly-based OpModes directly onto the Robot Controller.
- Users can now configure the robot remotely through the FTC Driver Station app.
- Android Studio project supports Android Studio 2.1.x and compile SDK Version 23 (Marshmallow).
- Vuforia Computer Vision SDK integrated into FTC SDK. Users can use sample vision targets to get localization information on a standard FTC field.
- Project structure has been reorganized so that there is now a TeamCode package that users can use to place their local/custom OpModes into this package.
- Inspection function has been integrated into the FTC Robot Controller and Driver Station Apps (Thanks Team HazMat… 9277 & 10650!).
- Audio cues have been incorporated into FTC SDK.
- Swap mechanism added to FTC Robot Controller configuration activity. For example, if you have two motor controllers on a robot, and you misidentified them in your configuration file, you can use the Swap button to swap the devices within the configuration file (so you do not have to manually re-enter in the configuration info for the two devices).
- Fix mechanism added to all user to replace an electronic module easily. For example, suppose a servo controller dies on your robot. You replace the broken module with a new module, which has a different serial number from the original servo controller. You can use the Fix button to automatically reconfigure your configuration file to use the serial number of the new module.
- Improvements made to fix resiliency and responsiveness of the system.
- For LinearOpMode the user now must for a telemetry.update() to update the telemetry data on the driver station. This update() mechanism ensures that the driver station gets the updated data properly and at the same time.
- The Auto Configure function of the Robot Controller is now template based. If there is a commonly used robot configuration, a template can be created so that the Auto Configure mechanism can be used to quickly configure a robot of this type.
- The logic to detect a runaway OpMode (both in the LinearOpMode and OpMode types) and to abort the run, then auto recover has been improved/implemented.
- Fix has been incorporated so that Logitech F310 gamepad mappings will be correct for Marshmallow users.
Release 16.07.08
- For the ftc_app project, the gradle files have been modified to support Android Studio 2.1.x.
Release 16.03.30
- For the MIT App Inventor, the design blocks have new icons that better represent the function of each design component.
- Some changes were made to the shutdown logic to ensure the robust shutdown of some of our USB services.
- A change was made to LinearOpMode so as to allow a given instance to be executed more than once, which is required for the App Inventor.
- Javadoc improved/updated.
Release 16.03.09
- Changes made to make the FTC SDK synchronous (significant change!)
- waitOneFullHardwareCycle() and waitForNextHardwareCycle() are no longer needed and have been deprecated.
- runOpMode() (for a LinearOpMode) is now decoupled from the system's hardware read/write thread.
- loop() (for an OpMode) is now decoupled from the system's hardware read/write thread.
- Methods are synchronous.
- For example, if you call setMode(DcMotorController.RunMode.RESET_ENCODERS) for a motor, the encoder is guaranteed to be reset when the method call is complete.
- For legacy module (NXT compatible), user no longer has to toggle between read and write modes when reading from or writing to a legacy device.
- Changes made to enhance reliability/robustness during ESD event.
- Changes made to make code thread safe.
- Debug keystore added so that user-generated robot controller APKs will all use the same signed key (to avoid conflicts if a team has multiple developer laptops for example).
- Firmware version information for Modern Robotics modules are now logged.
- Changes made to improve USB comm reliability and robustness.
- Added support for voltage indicator for legacy (NXT-compatible) motor controllers.
- Changes made to provide auto stop capabilities for OpModes.
- A LinearOpMode class will stop when the statements in runOpMode() are complete. User does not have to push the stop button on the driver station.
- If an OpMode is stopped by the driver station, but there is a run away/uninterruptible thread persisting, the app will log an error message then force itself to crash to stop the runaway thread.
- Driver Station UI modified to display lowest measured voltage below current voltage (12V battery).
- Driver Station UI modified to have color background for current voltage (green=good, yellow=caution, red=danger, extremely low voltage).
- javadoc improved (edits and additional classes).
- Added app build time to About activity for driver station and robot controller apps.
- Display local IP addresses on Driver Station About activity.
- Added I2cDeviceSynchImpl.
- Added I2cDeviceSync interface.
- Added seconds() and milliseconds() to ElapsedTime for clarity.
- Added getCallbackCount() to I2cDevice.
- Added missing clearI2cPortActionFlag.
- Added code to create log messages while waiting for LinearOpMode shutdown.
- Fix so Wi-Fi Direct Config activity will no longer launch multiple times.
- Added the ability to specify an alternate i2c address in software for the Modern Robotics gyro.
Release 16.02.09
- Improved battery checker feature so that voltage values get refreshed regularly (every 250 msec) on Driver Station (DS) user interface.
- Improved software so that Robot Controller (RC) is much more resilient and “self-healing” to USB disconnects:
- If user attempts to start/restart RC with one or more module missing, it will display a warning but still start up.
- When running an OpMode, if one or more modules gets disconnected, the RC & DS will display warnings,and robot will keep on working in spite of the missing module(s).
- If a disconnected module gets physically reconnected the RC will auto detect the module and the user will regain control of the recently connected module.
- Warning messages are more helpful (identifies the type of module that's missing plus its USB serial number).
- Code changes to fix the null gamepad reference when users try to reference the gamepads in the init() portion of their OpMode.
- NXT light sensor output is now properly scaled. Note that teams might have to readjust their light threshold values in their OpModes.
- On DS user interface, gamepad icon for a driver will disappear if the matching gamepad is disconnected or if that gamepad gets designated as a different driver.
- Robot Protocol (ROBOCOL) version number info is displayed in About screen on RC and DS apps.
- Incorporated a display filter on pairing screen to filter out devices that don't use the “-“ format. This filter can be turned off to show all Wi-Fi Direct devices.
- Updated text in License file.
- Fixed formatting error in OpticalDistanceSensor.toString().
- Fixed issue on with a blank (“”) device name that would disrupt Wi-Fi Direct Pairing.
- Made a change so that the Wi-Fi info and battery info can be displayed more quickly on the DS upon connecting to RC.
- Improved javadoc generation.
- Modified code to make it easier to support language localization in the future.
Release 16.01.04
- Updated compileSdkVersion for apps
- Prevent Wi-Fi from entering power saving mode
- removed unused import from driver station
- Corrrected "Dead zone" joystick code.
- LED.getDeviceName and .getConnectionInfo() return null
- apps check for ROBOCOL_VERSION mismatch
- Fix for Telemetry also has off-by-one errors in its data string sizing / short size limitations error
- User telemetry output is sorted.
- added formatting variants to DbgLog and RobotLog APIs
- code modified to allow for a long list of OpMode names.
- changes to improve thread safety of RobocolDatagramSocket
- Fix for "missing hardware leaves robot controller disconnected from driver station" error
- fix for "fast tapping of Init/Start causes problems" (toast is now only instantiated on UI thread).
- added some log statements for thread life cycle.
- moved gamepad reset logic inside of initActiveOpMode() for robustness
- changes made to mitigate risk of race conditions on public methods.
- changes to try and flag when Wi-Fi Direct name contains non-printable characters.
- fix to correct race condition between .run() and .close() in ReadWriteRunnableStandard.
- updated FTDI driver
- made ReadWriteRunnableStanard interface public.
- fixed off-by-one errors in Command constructor
- moved specific hardware implmentations into their own package.
- moved specific gamepad implemnatations to the hardware library.
- changed LICENSE file to new BSD version.
- fixed race condition when shutting down Modern Robotics USB devices.
- methods in the ColorSensor classes have been synchronized.
- corrected isBusy() status to reflect end of motion.
- corrected "back" button keycode.
- the notSupported() method of the GyroSensor class was changed to protected (it should not be public).
Release 15.11.04.001
- Added Support for Modern Robotics Gyro.
- The GyroSensor class now supports the MR Gyro Sensor.
- Users can access heading data (about Z axis)
- Users can also access raw gyro data (X, Y, & Z axes).
- Example MRGyroTest.java OpMode included.
- More descriptive error messages for exceptions in user code.
- Updated DcMotor API
- Enable read mode on new address in setI2cAddress
- Fix so that driver station app resets the gamepads when switching OpModes.
- USB-related code changes to make USB comm more responsive and to display more explicit error messages.
- Fix so that USB will recover properly if the USB bus returns garbage data.
- Fix USB initializtion race condition.
- Better error reporting during FTDI open.
- More explicit messages during USB failures.
- Fixed bug so that USB device is closed if event loop teardown method was not called.
- Fixed timer UI issue
- Fixed duplicate name UI bug (Legacy Module configuration).
- Fixed race condition in EventLoopManager.
- Fix to keep references stable when updating gamepad.
- For legacy Matrix motor/servo controllers removed necessity of appending "Motor" and "Servo" to controller names.
- Updated HT color sensor driver to use constants from ModernRoboticsUsbLegacyModule class.
- Updated MR color sensor driver to use constants from ModernRoboticsUsbDeviceInterfaceModule class.
- Correctly handle I2C Address change in all color sensors
- Updated/cleaned up OpModes.
- Updated comments in LinearI2cAddressChange.java example OpMode.
- Replaced the calls to "setChannelMode" with "setMode" (to match the new of the DcMotor method).
- Removed K9AutoTime.java OpMode.
- Added MRGyroTest.java OpMode (demonstrates how to use MR Gyro Sensor).
- Added MRRGBExample.java OpMode (demonstrates how to use MR Color Sensor).
- Added HTRGBExample.java OpMode (demonstrates how to use HT legacy color sensor).
- Added MatrixControllerDemo.java (demonstrates how to use legacy Matrix controller).
- Updated javadoc documentation.
- Updated release .apk files for Robot Controller and Driver Station apps.
Release 15.10.06.002
- Added support for Legacy Matrix 9.6V motor/servo controller.
- Cleaned up build.gradle file.
- Minor UI and bug fixes for driver station and robot controller apps.
- Throws error if Ultrasonic sensor (NXT) is not configured for legacy module port 4 or 5.
Release 15.08.03.001
- New user interfaces for FTC Driver Station and FTC Robot Controller apps.
- An init() method is added to the OpMode class.
- For this release, init() is triggered right before the start() method.
- Eventually, the init() method will be triggered when the user presses an "INIT" button on driver station.
- The init() and loop() methods are now required (ie, need to be overridden in the user's OpMode).
- The start() and stop() methods are optional.
- A new LinearOpMode class is introduced.
- Teams can use the LinearOpMode mode to create a linear (not event driven) program model.
- Teams can use blocking statements like Thread.sleep() within a linear OpMode.
- The API for the Legacy Module and Core Device Interface Module have been updated.
- Support for encoders with the Legacy Module is now working.
- The hardware loop has been updated for better performance.