BEACHTEN
Dieses Repository enthält das öffentliche FTC SDK für die Wettbewerbssaison INTO THE DEEP (2024–2025).
Willkommen!
Dieses GitHub-Repository enthält den Quellcode, der zum Erstellen einer Android-App zur Steuerung eines Wettbewerbsroboters der FIRST Tech Challenge verwendet wird. Um dieses SDK zu verwenden, laden Sie das gesamte Projekt auf Ihren lokalen Computer herunter bzw. klonen es.
Anforderungen
Um dieses Android Studio-Projekt verwenden zu können, benötigen Sie Android Studio 2021.2 (Codename Chipmunk) oder höher.
Um Ihren Roboter in Blocks oder OnBot Java zu programmieren, benötigen Sie kein Android Studio.
Erste Schritte
Wenn Sie neu in der Robotik oder neu bei der FIRST Tech Challenge sind, sollten Sie sich das FTC Blocks Tutorial ansehen, um sich mit der Verwendung des Steuerungssystems vertraut zu machen:
FTC Blocks Online-Tutorial
Selbst wenn Sie ein fortgeschrittener Java-Programmierer sind, ist es hilfreich, mit dem FTC Blocks-Tutorial zu beginnen und anschließend zum OnBot Java Tool oder zu Android Studio zu migrieren.
Herunterladen des Projekts
Wenn Sie ein Android Studio-Programmierer sind, gibt es mehrere Möglichkeiten, dieses Repo herunterzuladen. Beachten Sie, dass Sie dieses Repository nicht herunterladen müssen, wenn Sie Blocks oder das OnBot Java Tool zum Programmieren Ihres Roboters verwenden.
- Wenn Sie ein Git-Benutzer sind, können Sie die aktuellste Version des Repositorys klonen:
Git-Klon https://github.com/FIRST-Tech-Challenge/FtcRobotController.git
Wenn Sie möchten, können Sie auch die Schaltfläche „Zip herunterladen“ verwenden, die auf der Hauptseite des Repositorys verfügbar ist. Wenn Sie das Projekt als ZIP-Datei herunterladen, bleibt die Größe des Downloads überschaubar.
Sie können den Projektordner (als .zip- oder .tar.gz-Archivdatei) auch aus dem Unterabschnitt „Downloads“ der Seite „Releases“ für dieses Repository herunterladen.
Die Seite „Releases“ enthält auch vorgefertigte APKs.
Nachdem Sie Ihren Ordner heruntergeladen und (falls erforderlich) dekomprimiert haben, können Sie den Ordner mit Android Studio importieren („Projekt importieren (Eclipse ADT, Gradle usw.)“).
Hilfe bekommen
Benutzerdokumentation und Tutorials
FIRST unterhält eine Online-Dokumentation mit Informationen und Tutorials zur Verwendung der FIRST Tech Challenge-Software und des Robotersteuerungssystems. Über den folgenden Link können Sie auf diese Dokumentation zugreifen:
ERSTE Tech-Challenge-Dokumentation
Beachten Sie, dass es sich bei der Online-Dokumentation um ein „Evergreen“-Dokument handelt, das ständig aktualisiert und bearbeitet wird. Es enthält die aktuellsten Informationen über die Software und das Steuerungssystem der FIRST Tech Challenge.
Javadoc-Referenzmaterial
Die Javadoc-Referenzdokumentation für das FTC SDK ist jetzt online verfügbar. Klicken Sie auf den folgenden Link, um die Javadoc-Dokumentation des FTC SDK als Live-Website anzuzeigen:
FTC Javadoc-Dokumentation
Online-Benutzerforum
Bei technischen Fragen zum Steuerungssystem oder zum FTC SDK besuchen Sie bitte die Website der FIRST Tech Challenge Community:
ERSTE Tech-Challenge-Community
Beispiel-OpModes
Dieses Projekt enthält eine große Auswahl an Beispiel-OpModes (Robotercode-Beispiele), die ausgeschnitten und in Ihren /teamcode-Ordner eingefügt werden können, um sie unverändert zu verwenden oder an die Bedürfnisse Ihres Teams anzupassen.
Beispielordner: /FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples
Die Datei readme.md im Ordner /TeamCode/src/main/java/org/firstinspires/ftc/teamcode enthält eine Erläuterung der Beispielbenennungskonvention und Anweisungen, wie Sie sie in Ihren eigenen Projektbereich kopieren können.
Release-Informationen
Version 10.1 (20240919-122750)
Verbesserungen
- Fügt neue OpenCV-basierte
VisionProcessor
s hinzu (die an ein VisionPortal in Java oder Blocks angehängt werden können), um Teams bei der Implementierung der Farbverarbeitung über Computer Vision im Spiel INTO THE DEEP zu unterstützen-
ColorBlobLocatorProcessor
implementiert die OpenCV-Farb-„Blob“-Erkennung. Ein neues Beispielprogramm ConceptVisionColorLocator
demonstriert seine Verwendung.- Sie haben die Wahl zwischen vordefinierten Farbbereichen oder der Erstellung eines benutzerdefinierten Farbbereichs im RGB-, HSV- oder YCrCb-Farbraum
- Es besteht die Möglichkeit, die Erkennung auf einen bestimmten interessierenden Bereich auf dem Bildschirm zu beschränken
- Es stehen Funktionen zum Anwenden von Erosions-/Dilatationsmorphing auf die Schwellenwertmaske zur Verfügung
- Es stehen Funktionen zum Sortieren und Filtern der zurückgegebenen Daten zur Verfügung
-
PredominantColorProcessor
ermöglicht die Verwendung eines Bereichs der Kamera als „Farbsensor mit großer Reichweite“, um die vorherrschende Farbe dieses Bereichs zu bestimmen. Ein neues Beispielprogramm ConceptVisionColorSensor
demonstriert seinen Einsatz.- Die ermittelte vorherrschende Farbe wird aus einem diskreten Satz von Farbfeldern ausgewählt, ähnlich wie beim MINDSTORMS NXT-Farbsensor
- Die Dokumentation zu dieser Farbverarbeitungsfunktion finden Sie hier: https://ftc-docs.firstinspires.org/color-processing
- Beispielprogramme für Blöcke für Farbsensoren hinzugefügt: RobotAutoDriveToLine und SensorColor.
- Aktualisierte Selbstprüfung, um nicht übereinstimmende RC/DS-Softwareversionen als „Vorsicht“ und nicht als „Fehler“ zu identifizieren.
Fehlerbehebungen
- Behebt die Regression der AngularVelocity-Konvertierung
Version 10.0 (20240828-111152)
Breaking Changes
- Java-Klassen und Blöcke für die TensorFlow-Objekterkennung wurden entfernt.
-
AngularVelocity.unit
vom Typ AngleUnit
wurde in AngularVelocity.angleUnit
vom Typ UnnormalizedAngleUnit
umbenannt
Verbesserungen
- Beispiel für REV-Digitalanzeige wurde hinzugefügt – ConceptRevLED
- Fügt Unterstützung für den Sparkfun QWIIC LED Stick hinzu
- Um es direkt anzuschließen, benötigen Sie dieses Kabel
- Integriert den ConceptLEDStick OpMode
- Fügt Blöcke für die Farben Schwarz, Blau, Cyan, Dunkelgrau, Grau, Grün, Hellgrau, Magenta, Rot, Weiß und Gelb hinzu.
- Fügt einen Block „Ergebnis auswerten, aber ignorieren“ hinzu, der den verbundenen Block ausführt und das Ergebnis ignoriert. Ermöglicht Ihnen, eine Funktion aufzurufen und den Rückgabewert zu ignorieren.
- Integriert den I2C-Treiber für den Sonar-Entfernungsmesser Maxbotix Maxsonar I2CXL
- Fügt Blöcke für setPwmEnable, setPwmDisable und isPwmEnabled für Servos und CR-Servos hinzu.
- Im Blockeditor: Ein n im Kommentarfeld der ExportToBlocks-Annotation wird als Zeilenumbruch angezeigt.
- Telemetrie verfügt über die neue Methode setNumDecimalPlaces
- Telemetrie formatiert jetzt Doubles und Floats (nicht innerhalb von Objekten, nur für sich selbst).
- Fügt Unterstützung für Limelight 3A hinzu.
- Fügt anfängliche Unterstützung für den REV Servo Hub hinzu
- Sowohl die Robotersteuerung als auch die Treiberstation müssen auf Version 10.0 aktualisiert werden, damit Servo-Hubs als Servo-Hubs konfiguriert werden können. Wenn die App auf einem der Geräte veraltet ist, wird der Servo Hub als Erweiterungs-Hub angezeigt und einige Funktionen funktionieren nicht wie erwartet. Sie sollten mit der Erstellung einer Konfiguration, die einen Servo Hub enthält, warten, bis sowohl die Driver Station- als auch die Robot Controller-App auf Version 10.0 aktualisiert wurden.
- Das Aktualisieren der Firmware des Servo-Hubs und das Ändern seiner Adresse ist derzeit nur mit dem REV-Hardware-Client möglich
- Fügt Unterstützung für die REV 9-Achsen-IMU (REV-31-3332) hinzu.
- Die REV 9-Achsen-IMU wird nur von der Universal IMU-Schnittstelle unterstützt
- Fügt die Java-Klasse
Rev9AxisImuOrientationOnRobot
hinzu. - Wenn Sie gedanklich den I2C-Port dieser IMU durch die USB-Ports des Control Hubs ersetzen, ist
RevHubOrientationOnRobot
auch mit diesem Sensor kompatibel - Fügt Blöcke für Rev9AxisImuOrientationOnRobot hinzu, einschließlich RevHubImuOrientationOnRobot.xyzOrientation und RevHubImuOrientationOnRobot.zyxOrientation.
- Fügt Blockbeispiele SensorRev9AxisIMUOrthogonal und SensorRev9AxisIMUNonOrthogonal hinzu.
- Verbessert die Blockunterstützung für RevHubImuOrientationOnRobot.
- Fügt Blöcke für RevHubImuOrientationOnRobot.xyzOrientation und RevHubImuOrientationOnRobot.zyxOrientation hinzu.
- Fügt die Blockbeispiele SensorHubIMUOrthogonal (ersetzt SensorIMU) und SensorHubIMUNonOrthogonal hinzu.
- Aktualisiert die Versionen EasyOpenCV, AprilTag, OpenCV und
libjpeg-turbo
- Fügt Blöcke für Max und Min hinzu, die zwei Zahlen annehmen.
- Fügt die Blöcke OpModes ConceptRevSPARKMini, RobotAutoDriveByEncoder, RobotAutoDriveByGyro, RobotAutoDriveByTime, RobotAutoDriveToAprilTagOmni und RobotAutoDriveToAprilTagTank hinzu.
- Zwei OpModes mit demselben Namen werden jetzt automatisch umbenannt, wobei der Name gefolgt von einem „-“ und dem Klassennamen angezeigt wird, sodass sie sich beide auf dem Gerät befinden können.
- Zeigt den Namen der aktiven Konfiguration auf der Seite „Verwalten“ der Robotersteuerungskonsole an
- Aktualisierte AprilTag-Bibliothek für INTO THE DEEP. Insbesondere gibt
getCurrentGameTagLibrary()
jetzt INTO THE DEEP-Tags zurück. - Fügt Blöcke für Telemetry.setMsTransmissionInterval und Telemetry.getMsTransmissionInterval hinzu.
- Fügt das Blockbeispiel SensorOctoQuad hinzu.
Fehlerbehebungen
- Behebt einen Fehler, bei dem sich die RevBlinkinLedDriver-Blöcke unter „Aktuatoren“ in der Blockeditor-Toolbox befanden. Sie heißen jetzt „Andere Geräte“.
- Behebt einen Fehler, bei dem
Exception
, die im Benutzercode ausgelöst wurden, nachdem ein Stopp von der Fahrerstation angefordert wurde, stillschweigend verarbeitet wurden - Es wurde ein Fehler behoben, bei dem die
AngularVelocity
in einer anderen Einheit als der vom Gerät gemeldeten Einheit abgefragt wurde und diese zwischen -PI und PI für Bogenmaß und -180 und 180 für Grad normalisiert wurde.
Version 9.2 (20240701-085519)
Wichtige Hinweise
- Java-Klassen und -Blöcke für die TensorFlow-Objekterkennung sind veraltet und werden in Version 10.0 entfernt.
- Die Beispiele, die die TensorFlow-Objekterkennung verwenden, wurden entfernt.
Verbesserungen
- Fügt erklärenden Text zu fehlgeschlagenen Elementen der Inspektionsaktivitäten hinzu. Um den erläuternden Text anzuzeigen, tippen Sie auf das rote Warnsymbol für ein fehlgeschlagenes Element.
- Im Blockeditor: Eine neue Art von Variablensatzblock hinzugefügt, der die Variable festlegt und auch den neuen Wert zurückgibt.
- Ändert das Verhalten der Kamerasteuerung für eine SwitchableCamera. Jetzt wirkt jede Methode (wie getExposure, getMinExposure, getMaxExposure, setExposure für ExposureControl) auf die aktuell aktive Kamera.
- Fügt Unterstützung für das REV USB PS4-kompatible Gamepad (REV-31-2983) hinzu.
- Fügt ConceptAprilTagMultiPortal OpMode hinzu
- Integriert Unterstützung für das OctoQuad-Quadratur-Encoder- und Impulsbreiten-Schnittstellenmodul
- Fügt die Annotation „ExportAprilTagLibraryToBlocks“ hinzu, die angibt, dass eine statische Methode, die eine AprilTagLibrary zurückgibt, in die Blocks-Programmierumgebung exportiert wird. Der entsprechende Block wird zusammen mit den integrierten Tag-Bibliotheken in der Block-Toolbox angezeigt.
- Fügt Blöcke OpMode ConceptAprilTagOptimizeExposure hinzu.
- Integriert Unterstützung für den SparkFun Optical Tracking Odometry-Sensor.
Fehlerbehebungen
- Behebt #942, bei dem visionPortal.close() einen IndexOutOfBoundsError verursachen kann.
- Behebt einen Fehler im Blockeditor, bei dem bei reduzierten Funktionsblöcken die Warnung „Reduzierte Blöcke enthalten Warnungen“ angezeigt wird. wenn der Blocks OpMode erneut geöffnet wird.
- Behebt einen Fehler, bei dem der Blockeditor Sie nicht warnte, dass Sie nicht gespeicherte Änderungen haben, wenn Sie versuchen, die Seite zu verlassen. Dieser Fehler wurde aufgrund einer Verhaltensänderung in Chrome 119 eingeführt.
- Problem Nr. 764 – „Get Gain Control“ gibt einen Nullzeiger für eine umschaltbare Kamera zurück
- Behebt einen Fehler, bei dem die korrekte Totzone für bestimmte Gamepads nicht angewendet wurde, wenn erweiterte Gamepad-Funktionen aktiviert waren
Version 9.1 (20240215-115542)
Verbesserungen
- Behebt ein Problem mit Blöcken: Wenn der Benutzer die Warnsprechblase eines Blocks schließt, wird sie beim nächsten Öffnen des Projekts im Blocks-Editor immer noch geschlossen.
- Im Blockeditor wird keine Warnung zu fehlenden Hardwaregeräten angezeigt, wenn alle Blöcke, die die fehlenden Hardwaregeräte verwenden, deaktiviert sind.
- Fügt Blöcke hinzu, um den Vergleich der Eigenschaftswerte CRServo.Direction, DCMotor.Direction, DCMotor.Mode, DCMotor.ZeroPowerBehavior, DigitalChannel.Mode, GyroSensor.HeadingMode, IrSeekerSensor.Mode und Servo.Direction mit dem entsprechenden Enum-Block zu unterstützen.
- Verbessert den automatischen Import von OnBotJava, um Klassen bei Verwendung in bestimmten Situationen korrekt zu importieren.
- Verbessert die automatische Vervollständigung von OnBotJava, um in den meisten Fällen bessere Vervollständigungsoptionen bereitzustellen.
- Dies behebt ein Problem, bei dem die automatische Vervollständigung fehlschlug, wenn eine Methode mit zwei oder mehr formalen Parametern definiert wurde.
- In OnBotJava wurde Unterstützung für das Falten von Code hinzugefügt, um Codeabschnitte zu erweitern und zu reduzieren
- In OnBotJava wird der Copyright-Header jetzt beim Laden neuer Dateien automatisch ausgeblendet
- Für alle Blocks OpMode-Beispiele wurden Einleitungskommentare in die RunOpMode-Kommentarsprechblase verschoben.
- Der Befehl „Blöcke aufräumen“ im Blockeditor positioniert Funktionsblöcke jetzt so, dass ihre Kommentarsprechblasen keine anderen Funktionsblöcke überlappen.
- Blöcke OpMode-Beispiel SensorTouch hinzugefügt.
- Java OpMode-Beispiel SensorDigitalTouch hinzugefügt.
- Mehrere Verbesserungen an VisionPortal
- Fügt eine Option hinzu, um zu steuern, ob der Stream nach einem
.build()
-Aufruf auf einem VisionPortal Builder automatisch gestartet wird - Fügt eine Option hinzu, um zu steuern, ob die Überlagerung der Bildverarbeitungsstatistiken gerendert wird oder nicht
- VisionPortals implementieren jetzt die
CameraStreamSource
Schnittstelle, sodass Multiportal-Benutzer auswählen können, welches Portal in INIT an den DS weitergeleitet wird, indem sie CameraStreamServer.getInstance().setSource(visionPortal) aufrufen. Kann per Gamepad zwischen Kamera-Stream-Sitzungen ausgewählt werden. - Option zum
AprilTagProcessor
hinzufügen, um Kalibrierungswarnungen zu unterdrücken - Verbessert die Warnungen zur Kamerakalibrierung
- Wenn eine Kalibrierung skaliert ist, wird die Auflösung aufgeführt, mit der sie skaliert wurde
- Wenn Kalibrierungen mit falschem Seitenverhältnis vorliegen, werden die kalibrierten Auflösungen aufgelistet
- Behebt die Race-Bedingung, die zum Absturz der App führte, wenn
stopStreaming()
unmittelbar gefolgt von close()
auf einem VisionPortal aufgerufen wurde - Behebt die IllegalStateException beim Aufruf von
stopStreaming()
unmittelbar nach dem Erstellen eines VisionPortals - FTC Blocks-Gegenstücke zu neuen Java-Methoden hinzugefügt:
- VisionPortal.Builder.setAutoStartStreamOnBuild
- VisionPortal.Builder.setShowStatsOverlay
- AprilTagProcessor.Builder.setSuppressCalibrationWarnings
- CameraStreamServer.setSource
Fehlerbehebungen
- Behebt ein Problem, bei dem OnBotJava keine Schriftgrößeneinstellungen auf den Editor anwendet.
- Aktualisiert die EasyOpenCV-Abhängigkeit auf v1.7.1
- Behebt die Unfähigkeit, EasyOpenCV CameraFactory in OnBotJava zu verwenden
- Behebt den gesamten Absturz der RC-App, wenn die Benutzerpipeline eine Ausnahme auslöst
- Behebt den gesamten Absturz der RC-App, wenn der Benutzer-Canvas-Annotator eine Ausnahme auslöst
- Verwenden Sie bei der Behandlung von Benutzerausnahmen die moderne Stacktrace-Anzeige anstelle der alten ESTOP-Telemetriemeldung
Version 9.0.1 (20230929-083754)
Verbesserungen
- Aktualisiert AprilTag-Beispiele mit Dezimierung und zusätzlichen Kommentaren. Korrigiert außerdem irreführende Tag-ID-Warnungen
- Erhöht die maximale Größe von Block-Inline-Kommentaren auf 140 Zeichen
- Fügt das Blocks-Beispiel BasicOmniOpMode hinzu.
- Aktualisierte AprilTag-Orientierungsquaternionen der CENTERSTAGE-Bibliothek
- Java Sample ConceptTensorFlowObjectDetection.java wurde aktualisiert, um fehlende Elemente einzuschließen, die für die Unterstützung benutzerdefinierter Modelle erforderlich sind.
Fehlerbehebungen
- Behebt ein Problem, bei dem die Driver Station nach dem 1. Oktober Version 9.0 als veraltet meldet und den Benutzer zur Aktualisierung auffordert.
Version 9.0 (20230830-154348)
Breaking Changes
- Entfernt Vuforia
- Felder in den Objekten
AprilTagDetection
und AprilTagPose(ftc/raw)
sind jetzt final
- Die VisionPortal-Builder-Methode
setCameraMonitorViewId()
wurde in setLiveViewContainerId()
umbenannt und enableCameraMonitoring()
wurde in enableLiveView()
umbenannt.
Verbesserungen
- Integriert Unterstützung für den DFRobot HuskyLens Vision Sensor.
- Blocks-Teams können jetzt eine Webcam-Kalibrierung durchführen.
- Block für System.currentTimeMillis hinzugefügt (unter Dienstprogramme/Zeit)
- Block für VisionPortal.saveNextFrameRaw hinzugefügt (unter Vision/VisionPortal)
- Ein neuer Beispielblock-OpMode namens UtilityCameraFrameCapture wurde hinzugefügt.
- Das RobotDriveByGyro-Beispiel wurde aktualisiert, um die neue universelle IMU-Schnittstelle zu verwenden. Es unterstützt jetzt beide IMU-Typen.
- Einige fehleranfällige ElapsedTime-Blöcke wurden aus der Toolbox des Blockeditors entfernt. Dies ist keine bahnbrechende Änderung: Alte Block-OpModes, die diese Blöcke verwenden, funktionieren weiterhin, sowohl im Blockeditor als auch zur Laufzeit.
- Standardisiert die Form „OpMode“ für den Begriff OpMode.
- Die bevorzugte Art, auf OpModes zu verweisen, die
LinearOpMode
speziell erweitern (einschließlich Block-OpModes), ist „linear OpMode“. - Die bevorzugte Art, auf OpModes zu verweisen, die
OpMode
direkt erweitern, ist „iterativer OpMode“.
- Überarbeitet
OpMode
und LinearOpMode
Javadoc-Kommentare, um sie leichter lesbar zu machen und mehr Details zu enthalten. - Nimmt kleinere Verbesserungen an Java-Beispielen vor
- Javadoc-Kommentare in Beispielen, die in Android Studio möglicherweise schlecht gerendert werden könnten, wurden in standardmäßige mehrzeilige Kommentare umgewandelt
- Die Konsistenz zwischen den Proben wurde verbessert
- Das SensorDigitalTouch-Beispiel wurde durch ein neues SensorTouch-Beispiel ersetzt, das die
TouchSensor
Schnittstelle anstelle von DigitalChannel
verwendet. - Die Beispiele ConceptCompassCalibration, SensorMRCompass und SensorMRIRSeeker wurden gelöscht, da sie für moderne FTC-Wettbewerbe nicht nützlich sind.
Fehlerbehebungen
- Behebt einen Fehler, der verhinderte, dass PlayStation-Gamepads im Bluetooth-Modus verwendet werden konnten. Bluetooth ist für den Wettbewerb NICHT legal, kann jedoch nützlich sein, um die Verwendung eines DS-Geräts während des Ladevorgangs oder bei einer Outreach-Veranstaltung zu ermöglichen.
- Behebt einen Fehler, bei dem sich der Wert für das Änderungsdatum eines Blocks-OpMode auf den 31. Dezember 1969 ändern kann, wenn der Control Hub neu gestartet wird, während der Blocks-OpMode bearbeitet wird.
- Behebt die automatische TeleOp-Vorauswahlfunktion (war in 8.2 defekt)
- Behebt einen Fehler, bei dem die Übergabe einer Ganzzahl wie 123 an den Telemetry.addData-Block, der eine Zahl annimmt, in der Telemetrie als 123,0 angezeigt wird.
- Behebt Probleme mit der automatischen Vervollständigung von OnBotJava:
- Bei der automatischen Vervollständigung einer lokalen Variablen würde die automatische Vervollständigung fälschlicherweise Werte für die aktuelle Klasse bereitstellen
- Die automatische Vervollständigung
hardwareMap
würde fälschlicherweise Lambda-Klasseneinträge einschließen
- Behebt, dass OnBotJava Klassen nicht automatisch importiert.
- Behebt, dass OnBotJava-Registerkarten nicht geschlossen werden, wenn ihre Datei gelöscht wird.
- Behebt, dass die Aktualisierung der Projektansicht nicht erfolgt, wenn eine Datei in OnBotJava umbenannt wird.
- Behebt den Kontextmenüpunkt „Download“ für externe Bibliotheken in der OnBotJava-Schnittstelle.
- Behebt ein Problem, bei dem die Telemetrie der Fahrerstation zeitweise einfrierte, wenn sie auf den Monospace-Modus eingestellt war.
- Behebt Leistungsrückgänge für bestimmte REV Hub-Vorgänge, die in Version 8.2 eingeführt wurden.
- Behebt die TagID-Vergleichslogik in DriveToTag-Beispielen.
Version 8.2 (20230707-131020)
Breaking Changes
- Nichtlineare (iterative) OpModes dürfen in ihrer
stop()
Methode keine Aktoren mehr manipulieren. Versuche dazu werden ignoriert und protokolliert.- Wenn ein OpMode versucht, einen Aktuator illegal zu manipulieren, gibt die Robotersteuerung eine Protokollmeldung mit dem Text
CANCELLED_FOR_SAFETY
aus. - Darüber hinaus sind LinearOpModes nicht mehr in der Lage, Aktoren zu manipulieren, indem sie den Interrupt ihres Threads entfernen oder einen anderen Thread verwenden.
- Entfernt die Unterstützung für Android Version 6.0 (Marshmallow). Die minSdkVersion ist jetzt 24.
- Erhöht die Robocol-Version.
- Dies bedeutet, dass eine Robotersteuerung oder Fahrerstation der Version 8.2 oder höher nicht mit einer Fahrerstation oder Robotersteuerung der Version 8.1 oder früher kommunizieren kann.
- Wenn Sie vergessen, beide Apps gleichzeitig zu aktualisieren, wird eine Fehlermeldung angezeigt, die erklärt, welche App älter ist und aktualisiert werden sollte.
- FTC_FieldCoordinateSystemDefinition.pdf wurde verschoben. Es befindet sich immer noch im Git-Verlauf, wurde jedoch aus dem Git-Snapshot entfernt, der dem 8.2-Tag entspricht. Die offizielle Version befindet sich jetzt im Field Coordinate System.
-
LynxUsbDevice.addConfiguredModule()
und LynxUsbDevice.getConfiguredModule()
wurden durch LynxUsbDevice.getOrAddModule()
ersetzt. - Alte Blöcke für Vuforia und TensorFlow Object Detection sind veraltet und wurden aus der Toolbox des Blocks-Editors entfernt. Vorhandene Block-OpModes, die die alten Blöcke für Vuforia oder TensorFlow Object Detection enthalten, können im Blocks-Editor geöffnet werden, ihre Ausführung funktioniert jedoch nicht.
Neue Funktionen
- Integriert die neue
VisionPortal
API für Computer Vision- Diese API kann sich für die endgültige Kickoff-Veröffentlichung ändern!
- Mehrere neue Beispiele hinzugefügt.
- Integriert Unterstützung für die Erkennung von AprilTags.
-
VisionPortal
ist der neue Einstiegspunkt für die AprilTag- und TFOD-Verarbeitung. - Vuforia wird in einer zukünftigen Version entfernt.
- Aktualisierte TensorFlow-Abhängigkeiten.
- Unterstützung für Webcam-Kamerasteuerungen zu Blöcken hinzugefügt.
- Die Toolbox des Blockeditors verfügt jetzt über die Kategorie „Vision“, direkt über der Kategorie „Dienstprogramme“.
- Zugehörige Dokumentation zu zugehörigen Technologien finden Sie unter
- AprilTag-Einführung
- AprilTag SDK-Leitfaden
- AprilTag-Erkennungswerte
- AprilTag-Testbilder
- Kamerakalibrierung
- Integriert Driver Station-Unterstützung für Logitech Dual Action- und Sony PS5 DualSense-Gamepads.
- Dies beinhaltet nicht die Unterstützung für das Sony PS5 DualSense Edge-Gamepad.
- Beziehen Sie sich immer auf das Spielhandbuch 1, um festzustellen, ob ein Gamepad im Wettbewerb zulässig ist.
- Fügt Unterstützung für MJPEG-Payload-Streaming zum UVC-Treiber hinzu (für die Verwendung ist eine externe JPEG-Dekomprimierungsroutine erforderlich).
- Zeigt auf der Benutzeroberfläche der Fahrerstation einen Hinweis zum Binden eines Gamepads an, wenn Tasten gedrückt oder die Sticks auf einem nicht gebundenen Gamepad bewegt werden.
- Fügt eine Option für die Vollbildanzeige von „Camera Stream“ auf der Driver Station hinzu.
- Der OnBotJava-Quellcode wird bei jedem Build automatisch als ZIP-Datei gespeichert, wobei ein rollierendes Fenster der letzten 30 Builds beibehalten wird. Ermöglicht die Wiederherstellung des Quellcodes aus früheren Builds, wenn der Code versehentlich gelöscht oder beschädigt wurde.
- Fügt Unterstützung für das Ändern der Adressen von Erweiterungs-Hubs hinzu, die nicht direkt über USB verbunden sind.
- Der Bildschirm „Änderung der Adresse des Erweiterungs-Hubs“ verfügt jetzt über eine Schaltfläche „Übernehmen“, mit der die Adressen geändert werden können, ohne den Bildschirm zu verlassen.
- Adressen, die anderen Hubs zugewiesen sind, die am selben USB-Anschluss oder Control Hub angeschlossen sind, können nicht mehr ausgewählt werden.
- Erhöht die maximale Größe von Block-Inline-Kommentaren auf 100 Zeichen
- Speichert die Position der offenen Block-Kommentarsprechblasen
- Fügt neue AprilTag-Fahrbeispiele hinzu: RobotDriveToAprilTagTank und RobotDriveToAprilTagOmni
- Fügt ein Beispiel hinzu, um die Optimierung der Kamerabelichtung für AprilTags zu veranschaulichen: ConceptAprilTagOptimizeExposure
Fehlerbehebungen
- Korrigiert den Inspektionsbildschirm, um die App-Version mithilfe der in den Bibliotheken definierten SDK-Version und nicht der in
AndroidManifest.xml
angegebenen Version zu melden. Dies behebt den Fall, dass die App dem Benutzer übereinstimmende Versionsnummern anzeigen konnte, aber dennoch angab, dass die Versionen nicht übereinstimmten.- Wenn die in
AndroidManifest.xml
angegebene Version nicht mit der SDK-Version übereinstimmt, wird auf der Webseite „Verwalten“ ein SDK-Versionseintrag angezeigt.
- Behebt, dass beim Speichern einer Konfigurationsdatei mit doppelten Namen von der Driver Station kein Fehler angezeigt wird.
- Behebt einen Deadlock im UVC-Treiber, der sich in OpenFTC/EasyOpenCV#57 manifestierte.
- Behebt einen Deadlock im UVC-Treiber, der beim Hot-Plugging von Kameras auftreten konnte.
- Behebt die Kompatibilität des UVC-Treibers mit der Global-Shutter-Kamera Arducam OV9281.
- Behebt die Notstoppbedingung, wenn ein OnBotJava-Build mit doppelten OpMode-Namen auftritt.
- Behebt bekannte Ursachen für Logspam „Versuchte Verwendung einer geschlossenen LynxModule-Instanz“.
- Behebt das visuelle Identifikations-LED-Muster bei der Konfiguration von Erweiterungs-Hubs, die über RS-485 verbunden sind.
Version 8.1.1 (20221201-150726)
Dies ist eine reine Fehlerbehebungsversion zur Behebung der folgenden vier Probleme.
- Problem Nr. 492 – Es können keine neuen Blockbetriebsarten erstellt werden.
- Problem Nr. 495 – Entfernen Sie den letzten Modifikator aus dem Telemetrieobjekt des OpMode.
- Problem Nr. 500 – Einige Geräte können nicht konfiguriert werden, wenn die Driver Station-App auf 8.1 aktualisiert wurde
- Durch die Aktualisierung der Robot Controller-App oder der Driver Station-App auf 8.1.1 oder höher wird dieses Problem behoben.
- Der Berührungssensor von Modern Robotics war als digitales Gerät konfigurierbar. Es kann nur als analoges Gerät verwendet werden.
Version 8.1 (20221121-115119)
Breaking Changes
- Die
OpMode
Felder msStuckDetectInit
, msStuckDetectInitLoop
, msStuckDetectStart
, msStuckDetectLoop
und msStuckDetectStop
sind veraltet.- OpModes haben kein Zeitlimit mehr für
init()
, init_loop()
, start()
oder loop()
, daher werden die diesen Methoden entsprechenden Felder nicht mehr verwendet. -
stop()
hat immer noch ein Zeitlimit, aber es ist jetzt fest auf 1 Sekunde codiert und kann nicht mit msStuckDetectStop
geändert werden.
- Die
OpMode
-Methoden internalPreInit()
, internalPostInitLoop()
und internalPostLoop()
sind veraltet.- Iterative
OpMode
s rufen diese Methoden weiterhin auf, falls sie überschrieben wurden. - Diese Methoden werden für
LinearOpMode
s überhaupt nicht aufgerufen.
-
DeviceProperties.xmlTagAliases
ist veraltet (und wird nicht mehr respektiert).
Verbesserungen
- Fügt Blocks und Java eine neue
IMU
Schnittstelle hinzu, die sowohl mit der ursprünglichen BNO055-IMU, die in allen älteren Control Hubs und Expansion Hubs enthalten ist, als auch mit der neuen alternativen BHI260AP-IMU verwendet werden kann.- Sie können feststellen, welcher IMU-Typ sich in Ihrem Control Hub befindet, indem Sie zur Seite „Verwalten“ der Weboberfläche navigieren.
- Informationen zur Verwendung der neuen
IMU
Schnittstelle finden Sie unter https://ftc-docs.firstinspires.org/programming_resources/imu/imu.html. Das SensorIMU
Blocks-Beispiel wurde ebenfalls aktualisiert, um die neue IMU
Schnittstelle zu verwenden, und die folgenden Java-Beispiele wurden hinzugefügt:-
SensorIMUOrthogonal
- Verwenden Sie dieses Beispiel, wenn Ihr REV Hub so montiert ist, dass er parallel oder senkrecht zur Unterseite Ihres Roboters verläuft.
-
SensorIMUNonOrthogonal
- Verwenden Sie dieses Beispiel, wenn Ihr REV Hub in einer anderen Ausrichtung an Ihrem Roboter montiert ist
-
ConceptExploringIMUOrientations
- Dieser OpMode ist ein Werkzeug, das Ihnen hilft zu verstehen, wie die orthogonalen Ausrichtungen funktionieren und welche davon auf Ihren Roboter zutrifft.
- Auf die BHI260AP IMU kann nur über die neue
IMU
Schnittstelle zugegriffen werden. Die BNO055 IMU kann über die neue IMU
Schnittstelle programmiert werden, oder Sie können sie weiterhin über die alte BNO055IMU
Schnittstelle programmieren. Wenn Sie schnell zu einem neuen Control Hub wechseln möchten, der möglicherweise die BHI260AP IMU enthält, sollten Sie Ihren Code migrieren, um die neue IMU
Schnittstelle zu verwenden. - Im Gegensatz zur alten
BNO055IMU
-Schnittstelle, die nur dann ordnungsgemäß funktionierte, wenn der REV Hub flach auf Ihrem Roboter montiert war, können Sie mit der IMU
Schnittstelle die Ausrichtung des REV Hub auf Ihrem Roboter festlegen. Dies wird berücksichtigt und Sie erhalten Ihre Orientierung in einem Roboterkoordinatensystem anstelle eines speziellen Koordinatensystems für den REV Hub. Infolgedessen sind Ihre Nick- und Gierbewegungen 0, wenn Ihr Roboter waagerecht steht, und nicht, wenn der REV-Hub waagerecht ist, was zu viel zuverlässigeren Ausrichtungswinkelwerten für die meisten Montageausrichtungen führt. - Aufgrund des neuen roboterzentrierten Koordinatensystems unterscheiden sich die von der
IMU
Schnittstelle zurückgegebenen Nick- und Rollwinkel von denen, die von der BNO055IMU
-Schnittstelle zurückgegeben werden. Achten Sie bei der Migration Ihres Codes sorgfältig auf die Dokumentation. - Wenn Sie Ihr BNO055 kalibriert haben, können Sie diese Kalibrierungsdaten der neuen
IMU
Schnittstelle bereitstellen, indem Sie eine BNO055IMUNew.Parameters
-Instanz an IMU.initialize()
übergeben. - Die
IMU
Schnittstelle eignet sich auch für die Implementierung durch Drittanbieter für IMUs, die die Bereitstellung der Orientierung in Form einer Quaternion unterstützen.
- Iterative
OpMode
s (im Gegensatz zu LinearOpMode
s) werden jetzt in einem dedizierten Thread ausgeführt.- Die Zykluszeiten sollten nicht so stark von allen anderen Vorgängen im System beeinflusst werden.
- Langsame
OpMode
können die Zeit, die für die Verarbeitung von Netzwerkbefehlen benötigt wird, nicht mehr verlängern und umgekehrt. - Die Methoden
init()
, init_loop()
, start()
und loop()
müssen nicht mehr innerhalb eines bestimmten Zeitrahmens zurückkehren.
- BNO055 IMU-Legacy-Treiber: Stellt die Möglichkeit wieder her, in einem OpMode zu initialisieren und diese Initialisierung dann in einem anderen OpMode wiederzuverwenden. Dadurch können Sie bei Bedarf die 0-Gier-Position zwischen den OpModes beibehalten.
- Ermöglicht angepassten Versionen von Gerätetreibern im FTC SDK die Verwendung desselben XML-Tags.
- Wenn Sie bisher einen Gerätetreiber anpassen wollten, mussten Sie ihn in eine neue Klasse kopieren und ihm ein neues XML-Tag geben. Das Versehen mit einem neuen XML-Tag bedeutete, dass Sie zum Wechseln des verwendeten Treibers Ihre Konfigurationsdatei ändern mussten.
- Um nun Ihren benutzerdefinierten Treiber zu verwenden, müssen Sie beim Aufruf von
hardwareMap.get()
nur noch die Klasse Ihres benutzerdefinierten Treibers angeben. Um zum ursprünglichen Treiber zurückzukehren, geben Sie die ursprüngliche Treiberklasse an. Wenn Sie eine Schnittstelle angeben, die sowohl vom Originaltreiber als auch vom benutzerdefinierten Treiber implementiert wird, gibt es keine Garantie dafür, welche Implementierung zurückgegeben wird.
Fehlerbehebungen
- Behebt den Zugriff auf die Links „TensorFlow Lite-Modelle verwalten“ und „Sounds verwalten“ und das Durchführen von Blöcken und OnBotJava OpMode-Downloads vom REV-Hardware-Client.
- Behebt ein Problem, bei dem ein I2C-Gerätetreiber automatisch mit den Parametern initialisiert wurde, die in einem vorherigen OpMode-Lauf zugewiesen wurden.
- Verbessert die Platzierung des Driver Station-Popup-Menüs im Querformat.
- Behebt die NullPointerException beim Versuch, eine nicht konfigurierte BNO055-IMU in einem Block-OpMode auf einem RC-Telefon abzurufen.
- Behebt ein Problem mit Blöcken, wenn eine Variable den Namen
orientation
trägt.
Version 8.0 (20220907-131644)
Breaking Changes
- Erhöht die Robocol-Version.
- Dies bedeutet, dass eine Robotersteuerung oder Fahrerstation der Version 8.0 oder höher nicht mit einer Fahrerstation oder Robotersteuerung der Version 7.2 oder früher kommunizieren kann.
- Wenn Sie vergessen, beide Apps gleichzeitig zu aktualisieren, wird eine Fehlermeldung angezeigt, die erklärt, welche App älter ist und aktualisiert werden sollte.
- Die Initialisierung von I2C-Geräten erfolgt jetzt, wenn Sie sie zum ersten Mal aus der
HardwareMap
abrufen.- Bisher wurden alle I2C-Geräte initialisiert, bevor der OpMode überhaupt mit der Ausführung begann, unabhängig davon, ob Sie sie tatsächlich verwenden wollten oder nicht. Dies könnte zu Leistungseinbußen und unnötigen Warnungen führen.
- Mit dieser Änderung ist es für Java-Benutzer sehr wichtig , während der Init-Phase des OpMode alle benötigten Geräte aus der
HardwareMap
abzurufen. Deklarieren Sie nämlich eine Variable für jedes Hardwaregerät, das der OpMode verwendet, und weisen Sie jedem einen Wert zu. Tun Sie dies nicht während der Ausführungsphase, da sonst Ihr OpMode möglicherweise kurzzeitig hängen bleibt, während die Geräte, die Sie abrufen, initialisiert werden. - OpModes, die nicht alle in der Konfigurationsdatei angegebenen I2C-Geräte verwenden, sollten weniger Zeit für die Initialisierung benötigen. OpModes, die alle angegebenen I2C-Geräte verwenden, sollten genauso lange dauern wie zuvor.
- Behebt Problem Nr. 251, indem die Reihenfolge geändert wird, in der Achsenrotationsraten aus dem Winkelgeschwindigkeitsvektor im BNO055 IMU-Treiber gelesen werden.
-
pitchMode
in BNO055IMU.Parameters
ist veraltet.- Das Festlegen von
pitchMode
auf PitchMode.WINDOWS
würde die vom Treiber verwendeten Koordinatenkonventionen verletzen.
- Verschiebt
OpModeManagerImpl
in das Paket com.qualcomm.robotcore.eventloop.opmode
.- Dadurch werden die Drittanbieter-Bibliotheken EasyOpenCV (Version 1.5.1 und früher) und FTC Dashboard (Version 0.4.4 und früher) beschädigt.
- Löscht die veraltete
OpMode
-Methode resetStartTime()
(verwenden Sie stattdessen resetRuntime()
). - Löscht die geschützte Klasse
LinearOpMode.LinearOpModeHelper
(die nicht für die Verwendung durch OpModes gedacht war). - Entfernt den Konfigurationstyp „I2C-Gerät (synchron)“ (seit 2018 veraltet)
Verbesserungen
- Nicht abgefangene Ausnahmen in OpModes erfordern keinen Neustart des Roboters mehr
- Ein Bluescreen, der bei einem Stacktrace auftaucht, ist kein SDK-Fehler; Dies ersetzt den roten Text im Telemetriebereich.
- Seit der allerersten SDK-Veröffentlichung haben OpMode-Abstürze den Roboter in den Zustand „EMERGENCY STOP“ versetzt, wobei nur die erste Zeile der Ausnahme angezeigt wird und der Benutzer zum Fortfahren auf „Roboter neu starten“ klicken muss
- Ausnahmen während eines OpMode öffnen jetzt ein Popup-Fenster mit dem gleichen Farbschema wie der Protokoll-Viewer, das 15 Zeilen des Ausnahme-Stacktrace enthält, um eine einfache Verfolgung der fehlerhaften Zeile zu ermöglichen, ohne dass eine Verbindung zum Anzeigen von Protokollen über ADB hergestellt oder durch große Mengen an Protokollen gescrollt werden muss im Log-Viewer.
- Der Ausnahmetext im Popup-Fenster ist genau wie eine Webseite sowohl zoombar als auch scrollbar.
- Durch Drücken der Schaltfläche „OK“ im Popup-Fenster kehren Sie zum Hauptbildschirm der Driver Station zurück und ermöglichen die sofortige erneute Ausführung eines OpMode, ohne dass ein „Roboter neu starten“ durchgeführt werden muss.
- Fügt ein neues Java-Beispiel hinzu, um die Verwendung einer Hardwareklasse zum Abstrahieren von Roboteraktoren und deren gemeinsame Nutzung über mehrere OpModes hinweg zu demonstrieren.
- Beispiel-OpMode ist ConceptExternalHardwareClass.java
- Die abstrahierte Hardwareklasse ist RobotHardware.java
- Aktualisiert das Java-Beispiel „RobotAutoDriveByGyro_Linear“ zur Verwendung der REV Control/Expansion-Hub-IMU.
- Aktualisiert Vuforia-Beispiele, um auf PowerPlay-Assets zu verweisen und korrekte Namen und Feldpositionen von Bildzielen zu haben.
- Aktualisiert TensorFlow-Beispiele, um auf PowerPlay-Assets zu verweisen.
- Fügt dem OnBotJava-Editor Opt-in-Unterstützung für Java 8-Sprachfunktionen hinzu.
- Um sich anzumelden, öffnen Sie die OnBotJava-Einstellungen und aktivieren Sie
Enable beta Java 8 support
. - Beachten Sie, dass Java 8-Code nur kompiliert werden kann, wenn auf der Robotersteuerung Android 7.0 Nougat oder höher ausgeführt wird.
- Bitte melden Sie Probleme hier.
- Wenn Sie in OnBotJava auf Build-Fehler klicken, wird jetzt korrekt zur richtigen Position gesprungen.
- Verbessert das Verhalten der automatischen Vervollständigung von OnBotJava, um in den meisten Fällen bessere Vervollständigungsoptionen bereitzustellen.
- Fügt dem Roboter -Controller -Inspektionsbericht einen QR -Code hinzu, wenn er von der Fahrerstation von Inspektoren bei der Konkurrenz von der Fahrerstation angezeigt wird.
- Verbessert die I2C -Leistung und -zuverlässigkeit in einigen Szenarien.
Version 7.2 (20220723-130006)
Veränderungen brechen
- Aktualisiert die Build -Tools. Für Android Studio -Benutzer erfordert diese Änderung Android Studio Chipmunk 2021.2.1.
- Entfernt die Unterstützung für Geräte, die nicht konkurrenzüberschreitend sind, einschließlich moderner Robotik -Kernkontrollmodule, dem Matrix -Controller sowie Hitechnic/NXT -Controllern und -sensoren. Support bleibt für moderne Robotik -I2C -Sensoren.
Verbesserungen
- Erhöht die Höhe des 3-Dots-Landschaftsmenüs auf der Fahrerstation und erleichtert die Auswahl.
- Fügt
terminateOpModeNow()
-Methode hinzu, mit der OpModes sofort selbst ausdrückt. - Fügt
LinearOpMode
opModeInInit()
Methode hinzu, um Init-Schleifen zu erleichtern. Ähnlich wie opModeIsActive()
aber für die Init -Phase. - Warn, wenn er ein Logitech F310 -Gamepad hat, das auf den DirectInput -Modus eingestellt ist.
- Ermöglicht es Sparkmini -Motorcontrollern, schneller auf die Geschwindigkeitsänderungen zu reagieren.
- Versteckt die Versionsnummer der fälschlicherweise installierten Schwester-App (dh auf RC-Gerät oder umgekehrtversa installiert) auf dem Inspektionsbildschirm.
- Fügt Unterstützung hinzu, damit der Benutzer den Kommentar für den RunopMode -Block bearbeiten kann.
- Fügt @ExporttoBlocks ParameterDefaultValues -Feld hinzu. Dies bietet die Fähigkeit einer Java -Methode mit einer @ExportToBlocks -Annotation, um Standardwerte für Methodenparameter anzugeben, wenn sie im Block -Editor angezeigt werden.
- Machen Sie linearopmode -Blöcke lesbarer. Der OpMode -Name wird im RunopMode -Block angezeigt, jedoch nicht in den anderen linearopmode -Blöcken.
- Unterstützung bei der Erkennung von TensorFlow -Objekte zur Verwendung eines anderen Frame -Generators anstelle von Vufforia hinzugefügt. Die Verwendung von Vufforia zum Übergeben des Kamera -Rahmens an TFOD wird weiterhin unterstützt.
- Entfernt die Verwendung von Renderscript.
- Behebung logspam beim App -Start von wiederholten Stacktraces in Bezug auf
"Failed resolution of: Landroid/net/wifi/p2p/WifiP2pManager$DeviceInfoListener"
- Ermöglicht das Deaktivieren von Bluetooth -Radio vom Inspektionsbildschirm
- Verbessert Warnmeldungen, wenn I2C -Geräte nicht antworten
- Fügt Unterstützung für die Kontrolle der RGB -LED hinzu, die in PS4/ETPARK -Gamepads von OpModes vorhanden ist
- Entfernt Legacy Pushbot -Referenzen aus OpMode -Proben. Benennt "Pushbot" -Sample in "Roboter" um. Motoranweisungen umgekehrt, um mit dem Antriebszug "Direct Drive" kompatibel zu sein.
Fehlerbehebungen
- Fixes Problem #316 (matrixf.inverted () gab eine fälschlicherweise große Matrix für 1x1- und 2x2-Matrixe zurück).
- Self Inspect Now ermöglicht die Kompatibilität der Fahrerstation und der Robotercontroller zwischen den Punktveröffentlichungen.
- Behebt den Fehler, wenn die gleiche
RumbleEffect
-Objektinstanz für mehrere Gamepads in der Warteschlange gestellt würde, dass beide Rumble -Befehle an nur ein Gamepad gesendet würden. - Behebung des Fehlers in der Fahrerstation, wo auf dem Fahrerzentrum, wenn erweiterte Gamepad -Funktionen deaktiviert und ein offiziell unterstütztes Gamepad angeschlossen war Erweiterte Gamepad -Funktionen wurden deaktiviert.
- Schutz vor (unwahrscheinlicher) Nullzeiger -Ausnahme in Vufforia Localizer.
- Harden Onbotjava und Blöcke spart, um sich vor Save -Problemen zu schützen, wenn sie vom Programm trennen und verwalten
- Problem behebt, bei dem die RC -App hängen würde, wenn ein Rev Hub I2C -Schreiben fehlschlägt, da die vorherige I2C -Operation noch im Gange war. Dieser Hang trat am häufigsten während der Initialisierung der Distanzsensor von Rev 2m auf
- Entfernt ConceptWebcam.java Beispielprogramm. Diese Probe ist nicht mit OnBotjava kompatibel.
- Behebung des Fehlers, bei dem die Verwendung von HTML -Tags in einem Kommentarfeld @ExportToBlocks das Feld Blocks -Editor daran hinderte, zu geladen.
- Behebung des Blocks -Editors, damit Sie nicht speichern können, wenn Sie nichts geändert haben.
- Behebung des Hochladens eines sehr großen Blöckenprojekts in Offline -Blöcken Editor.
- Behobene Fehler, die dazu geführt haben, dass DCMOTOREX in der Blocks -Editor -Toolbox weggelassen wird.
- Behebung von Blockprogrammen, die Blöcke entfernen (aufgrund der Verwendung des TensorFlow -Etikettsblocks)
Version 7.1 (20211223-120805)
- Behebung des Absturzes beim Aufrufen
isPwmEnabled()
(Ausgabe Nr. 223). - Fixes FININT -Fehler (Ausgabe 4).
- Behebung des Absturzes der Fahrerstation beim Versuch, DualShock4 V1 Gamepad mit aktivierten GamePad -Funktionen zu verwenden (Ausgabe Nr. 173).
- Behoben Sie mögliche (aber unwahrscheinliche) Treiberstation beim Anschließen von Gamepads jeglicher Art.
- Behobene Fehler, bei denen die Fahrerstation Generika 20% Deadzone für Xbox360 und Logitech F310 -Gamepads verwenden würde, wenn erweiterte GamePad -Funktionen deaktiviert wurden.
- SimpleOmnidrive -Beispiel -OpMode hinzugefügt.
- Fügt die UVC -API der Weißabgleichskontrolle hinzu.
- Fixes Ausgabe #259 Die meisten Block -Proben für TensorFlow können für ein anderes Modell nicht verwendet werden.
- Die zuvor als TensorFlowObjectDectionFreight -Frenzy (aus der Unterkategorie "optimierten Frachtfisch optimierten TensorFlowjectDection optimierten TensorFlowjectDection -namens" optimierten Unterkategorie mit dem Namen "benutzerdefinierten Modell") bezeichneten Blöcke. Blöcke in vorhandenen OPModes werden automatisch auf den neuen Blöcken aktualisiert, wenn sie im Blocks -Editor geöffnet werden.
- Behebung von Ausgabe Nr. 260 Blöcken kann die Java -Methode mit einem Vufforialocalocalizer -Parameter nicht aufrufen.
- Blocks enthält jetzt einen Block mit der Bezeichnung Vufforiafreightfrenzy.getVUForialocalizer dafür.
- Eine Seite hinzugefügt, um die TensorFlow Lite -Modelle in/sdcard/first/tflitemodels zu verwalten. Um zur Seite der Tflite -Modelle zu gelangen:
- Sie können auf den Link unten auf der Seite verwalten.
- Sie können auf den Link im oberen Rechts-Projekt-Projektseite klicken.
- Behebt Logspam, wenn
isBusy()
einen Motor aufgerufen wird, der nicht im RTP -Modus ist. - Verbirgt das Element "RC-Passwort" auf dem Inspektionsbildschirm für telefonische Robotercontroller. (Es gilt nur für Kontrollzentren).
- Fügt Kanal 165 zum Wi-Fi-Direct Channel-Auswahlmenü im Bildschirm Einstellungen hinzu. (165 war zuvor über die Web -Benutzeroberfläche erhältlich, jedoch nicht lokal in der App).
Version 7.0 (20210915-141025)
Verbesserungen und neue Funktionen
- Fügt die Unterstützung externer Bibliotheken zu Onbotjava und Blöcken hinzu.
- Laden Sie .Jar- und .AAR -Dateien in Onbotjava hoch.
- Bekannte Einschränkung - RobotController -Gerät muss Android 7.0 oder höher ausgeführt werden.
- Bekannte Einschränkung - AAR -Dateien mit Vermögenswerten werden nicht unterstützt.
- Externe Bibliotheken können Hardware -Geräte unterstützen, indem sie die Annotation im Com.qualcomm.robotcore.hardware.Configuration.Annotations -Paket verwenden.
- Externe Bibliotheken können .so -Dateien für nativen Code enthalten.
- Externe Bibliotheken können von Onbotjava Opmodes verwendet werden.
- Externe Bibliotheken, die die folgenden Anmerkungen verwenden, können aus Blöcken OpModes verwendet werden.
- org.firstinspires.ftc.robotcore.external.exportclasstoblocks
- org.firstinspires.ftc.robotcore.external.exporttoBlocks
- Externe Bibliotheken, die die folgenden Anmerkungen verwenden, können neue Hardware -Geräte hinzufügen:
- com.qualcomm.robotcore.hardware.configuration.annotations.analogsensortype
- 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
- Externe Bibliotheken, die die folgenden Anmerkungen verwenden, können dem Roboter -Controller neue Funktionen hinzufügen:
- org.firstinspires.ftc.ftccommon.external.oncreate
- org.firstinspires.ftc.ftccommon.external.oncreateEventLoop
- org.firstinspires.ftc.ftccommon.external.onCreatemenu
- org.firstinspires.ftc.ftccommon.external.DonDestroy
- org.firstinspires.ftc.ftccommon.external.WebHandlerregistrar
- Fügt Unterstützung für Rev. Robotics Driver Hub hinzu.
- Fügt die Treiberstation der Fahrerstation vollständig benutzerdefinierte Benutzerspace -USB -Gamepad -Fahrer hinzu (siehe Menü "Advanced Gamepad -Funktionen" in DS -Einstellungen).
- Ermöglicht Gamepads, auf Geräten ohne native Linux -Kernelunterstützung zu arbeiten (z. B. einige rumänische Motorola -Geräte).
- Ermöglicht dem DS die eindeutige serielle Anzahl jedes Gamepads und ermöglicht die automatische Wiederherstellung abgelegter Gamepads auch dann, wenn zwei Gamepads desselben Modells fallen. (Hinweis: Leider gilt dies nicht für ETPARK -Gamepads, da sie keine einzigartige Serie haben) .
- Das Lesen der eindeutigen Seriennummer bietet auch die Möglichkeit, die DS so zu konfigurieren, dass Gamepads standardmäßig einer bestimmten Position zugewiesen werden (damit überhaupt keine Start+A/B).
- Der LED -Ring am Xbox360 -Gamepad und in der RGB -LED -Leiste im PS4 -Gamepad wird die Treiberposition angibt, an die das Gamepad gebunden ist.
- Die Rumble -Motoren der Xbox360-, PS4- und ETPARK -Gamepads können von Opmodes gesteuert werden.
- Das 2-Punkte-Touchpad im PS4-Gamepad kann von OpModes gelesen werden.
- Die Schaltflächen "Back" und "Guide" im Gamepad können jetzt sicher an Robotersteuerungen gebunden sein (zuvor würde Android diese Tasten auf vielen Geräten abfangen, wenn die Home -Taste drückt und die App schließt).
- Advanced GamePad -Funktionen sind standardmäßig aktiviert, können jedoch über das Einstellungsmenü deaktiviert werden, um auf GamePad -Unterstützung zurückzukehren, die von Android nativ bereitgestellt werden.
- Verbessert die Genauigkeit der Ping -Messung.
- Behebung des Problems, bei dem sich die Ping -Zeit als die Realität als Realität zeigte, wenn sie anfänglich mit dem Roboter verbunden oder neu gestartet werden.
- Um die vollständige Verbesserung zu erkennen, müssen Sie sowohl die Apps Roboter Controller als auch Treiberstation aktualisieren.
- Aktualisieren Sie die Proben, die sich unter/ftcrobotcontroller/src/main/java/org/firstinspires/ftc/RobotController/externe/Proben befinden.
- CONCECTGAMEPADRUMLS- und CONCECTGamePadTouchpad -Beispiele hinzugefügt, um die Verwendung dieser neuen Gampad -Funktionen zu veranschaulichen.
- Kondensulierte vorhandene VUForia -Stichproben in nur 2 Proben (conceptVUForiasFieldNavigation & conceptVUForiasFieldNavigationWebcam), die zeigen, wie der Standort des Roboters auf dem Gebiet mithilfe von VUFORIA ermittelt wird. Beide verwenden die Zielbilder der aktuellen Saison.
- CONCECTVUFORIADRIVETOTORGETWEBCAM wurde hinzugefügt, um eine einfache Möglichkeit zu veranschaulichen, direkt zu einem sichtbaren Vufforia -Ziel zu fahren.
- Macht viele Verbesserungen des Warnsystems und der individuellen Warnungen vor.
- Warnungen sind jetzt viel verteilter, so dass sie leichter zu lesen sind.
- Neue Warnungen wurden für Bedingungen hinzugefügt, die vor dem Wettbewerb gelöst werden sollten.
- Die nicht übereinstimmenden Apps -Warnung verwendet nun die Haupt- und Minor -App -Versionen, nicht die Versionscode.
- Die Warnungen werden automatisch wieder aufgenommen, wenn eine Roboter-Controller-App aus einer neuen FTC-Saison installiert ist.
- Fügt Unterstützung für I2C -Transaktionen im Expansion Hub / Control Hub hinzu, ohne eine Registeradresse anzugeben.
- Siehe Abschnitt 3 der Ti I2C -Spezifikation.
- Das Aufrufen dieser neuen Methoden bei der Verwendung moderner Robotik -Hardware führt zu einer nicht unterstützten Operation.
- Verändert Vufforialocalizer
close()
Methode, um öffentlich zu sein. - Fügt Unterstützung für TensorFlow V2 -Objekterkennungsmodelle hinzu.
- Reduziert die Mehrdeutigkeit der Selbst inspiziert Sprache und Grafiken.
- Onbotjava warnt jetzt vor potenziell unbeabsichtigten Dateiüberschreibungen.
- Verbessert das Verhalten des Wi-Fi-Band- und Kanal-Selektors auf der Webseite verwalten.
Fehlerbehebungen
- Behoben Sie den Roboter -Controller -App -Absturz auf Android 9+, wenn eine Fahrerstation eine Verbindung herstellt.
- Behebung des Problems, bei dem ein OpMode für das Aufrufen des TensorFlow tfObjectDetektors verantwortlich war. Dies geschieht jetzt automatisch.
- Fixiert Vufforia Initialisierungsblöcke, damit der Benutzer AxesOrder auswählen kann. Aktualisierte relevante Blöcke Beispiel -OpModes.
- Behebung ftcrobotController Ausgabe #114 LED -Blöcke und Java -Klasse funktioniert nicht.
- Fixes passt die Protokollierung für OPMODES an, die Sonderzeichen in ihren Namen enthalten.
- Repariert die Opmode -Steuerung der Fahrerstation, die nicht mehr reagiert, wenn die Fahrerstation auf das Landschaftslayout eingestellt wurde und ein Onbotjava -Build während des Laufens eines OpMode ausgelöst wurde.
- Behoben Sie die Treiberstation App, die sich selbst schließt, wenn sie weggeschaltet ist, oder der Bildschirm ausgeschaltet ist.
- Behebt "Black Swirl of Doom" (unendlich "Konfigurieren von Wi-Fi-Direct") auf älteren Geräten.
- Aktualisiert den Wiki -Kommentar auf der Onbotjava -Intro -Seite.
Version 6.2 (20210218-074821)
Verbesserungen
- Versuche, die Bedingung automatisch zu beheben, bei der der interne Expansionszentrum eines Kontrollzentrums nicht funktioniert
- Stellt verschiedene Verbesserungen des Wi-Fi-Direktpaarungsbildschirms vor, insbesondere im Landschaftsmodus
- Dadurch wird der Roboter -Controller -Service nicht mehr kategorisch neu gestartet, wenn die Hauptaktivität in den Vordergrund gebracht wird
- (zB dem Dienst wird nicht mehr neu gestartet, indem Sie den Self -Inspect -Bildschirm anzeigen und die Rücktaste drücken.)
- Es wird weiterhin neu gestartet, wenn das Menü Einstellungen oder Konfigurieren von Robotermenü geöffnet ist
Fehlerbehebungen
- Behebung ftcrobotController Ausgabe Nr. 71 kann OpModes in V6.1 -Blöcken Offline -Editor nicht öffnen
- Behebung ftcrobotController Ausgabe Nr. 79 6.1 führt zu einem weichen Neustart im Motorola E5 -Spiel
- Behebt Probleme, bei dem der Watchdog des Control Hub -Betriebssystems die Roboter -Controller -App neu starten würde, wenn der Steuerzentrum nicht in der Lage war, mit seinem internen Expansionszentrum zu kommunizieren
- Festlegen bestimmter I2C -Geräte, die nicht in den entsprechenden
HardwareMap
-Feldern angezeigt werden (wie hardwareMap.colorSensor
) - Behebt das Problem, bei dem die Durchführung eines Wi-Fi-Fabrikresets auf dem Steuerzentrum das Wi-Fi-Band nicht auf 2,4 GHz festlegen würde
- Behebung von Problemen, wo OnBotjava möglicherweise keine neue Datei erstellt, wenn die Option zum Einrichten von Code für konfigurierte Hardware ausgewählt wurde
- Behebt Probleme, wenn die Durchführung bestimmter Vorgänge nach einem OpMode -Abstürze die Kommunikation zur Steuerung/Expansionszweige vorübergehend durchbrechen würde
- Behebt Probleme, bei dem ein Steuerpunkt mit einem konfigurierten USB-verbundenen Expansionszentrum nicht funktionieren würde, wenn der Expansionszentrum beim Start fehlt
- Behebt potenzielle Probleme, die durch nicht übereinstimmende Kontroll-/Expansions -Hub -Firmware -Versionen verursacht werden
- Fixes FTC_APP Ausgabe 673 Das neueste Matchlog wird von Robotlog anstelle von alten gelöscht
- Repariert ConceptVUForiaudimateGoAlnavigationWebcam Probe OpMode, indem die Kamera auf Roboter korrekt ausgerichtet ist.
- Behebung von Problemen, bei dem LogCat mit InterruptedExceptions spammt, wenn der Stopp von der Fahrerstation angefordert wird (dieses Verhalten wurde versehentlich in V5.3 eingeführt). Diese Änderung hat keinen Einfluss auf die Funktionalität.
- Behebt Probleme, bei dem der Block -Editor nicht geladen wird, wenn der Name eines Teleop -OpMode einen Apostroph enthält.
Version 6.1 (20201209-113742)
- Erstellt die Scan-Schaltfläche auf dem Konfigurationsbildschirm die Liste der Expansionszentren, die über RS-485 verbunden sind
- Fixiert Skystone Ausgabe #143
- Verbessert die Kompatibilität der Weboberfläche mit älteren Browser- und Android -System -Webview -Versionen.
- Behebung des Problems im UVC -Treiber, bei dem einige Kameras (z. B. bestimmte MS -Lifecams), die Rahmenintervalle als abgerundet und nicht als abgeschnittene Werte meldeten (z. B.
666667*100ns
anstelle von 666666*100ns
für 15fps), würden das Streaming nicht starten. - Fügt Unterstützung im UVC -Treiber für die virtuelle PTZ -Steuerung hinzu
- Fügt Unterstützung bei der Steuerung des UVC -Treibers für Gain (ISO) hinzu
- Fügt Unterstützung im UVC -Treiber hinzu, um eine Priorität zu aktivieren/zu deaktivieren. Diese Einstellung bietet eine Möglichkeit, die Kamera -Firmware zu mitteilen
- A) Es kann die angeforderte Bildrate untergraben, um ein theoretisch besseres Bild bereitzustellen (dh mit einer längeren Belichtung als die Zeit zwischen dem Rahmen der ausgewählten Bildrate zulässt).
- B) Es muss die Frist zwischen den Fristen für die ausgewählte Bildrate einhalten, auch wenn das Bild möglicherweise unterbelichtet wird
- Fügt Unterstützung für das Steuerhub -Hub OS 1.1.2 Roboter Controller Watchdog hinzu
- Die Roboter -Controller -App wird neu gestartet, wenn sie mehr als 10 Sekunden lang nicht mehr reagiert
- Fügt Unterstützung für die Verwendung der Treiberstation App auf Android 10+ hinzu
- Führt eine automatische Feature der Teleop -Vorauswahl vor
- Für Details und Verwendungshandbuch finden Sie in diesem Wiki -Eintrag
- Zeigt das Symbol neben dem OpMode -Namen in der OpMode -Liste auf der Treiberstation an, um die Quelle des OpMode anzuzeigen (dh das Programmierwerkzeug zum Erstellen)
- Behebt das Problem, bei dem die Treiberstations-App nach dem Anzeigen des konfigurierenden Wi-Fi-direkten Bildschirms beendet wird
- Behebt Blöcke und OnBotjava -Eingabeaufforderungen, wenn er über den Rev. Hardware -Client zugegriffen wird
Version 6.0 (20200921-085816)
Wichtige Hinweise
- Version 6.0 ist die Version für die ultimative Torsaison.
- Benötigt Android Studio 4.0.
- Android Studio -Benutzer müssen beim ersten Erstellen der App mit dem Internet verbunden sein (um die erforderlichen Pakete für den Build herunterzuladen).
- Version 5.5 war eine mäßig große Nebensaison im August 2020, Drop. Es lohnt sich auch, diese Versionshinweise unten zu überprüfen.
- Version 5.5 und Greater funktionieren nicht auf älteren Android 4.x und 5.x -Telefonen. Benutzer müssen ein Upgrade auf ein zugelassenes Android 6.x -Gerät oder neuer machen.
- Die Standard-PIDF-Werte für Rev-Motoren wurden zu den Standard-PID-Werten zurückgekehrt, die in der Saison 2018-2019 verwendet wurden
- Diese Änderung wurde vorgenommen, weil sich die Werte 2018-2019 für viele Mechanismen besser funktionierten
- Dies bringt das Verhalten der Rev -Motoren im Einklang mit dem Verhalten aller anderen Motoren
- Wenn Sie das Verhalten der Saison 2019-2020 für Rev Motors bevorzugen, finden Sie hier die PIDF-Werte, die vorhanden waren, damit Sie sie manuell in Ihre OpModes einstellen können:
HD -Hex -Motoren (alle Getriebe): Geschwindigkeit PIDF -Werte: P = 1.17
, I = 0.117
, F = 11.7
Positions -PIDF -Werte: P = 5.0
Kernhexemotor: Geschwindigkeit PIDF -Werte: P = 4.96
, I = 0.496
, F = 49.6
Position PIDF -Werte: P = 5.0
Neue Funktionen
- Beinhaltet TensorFlow -Inferenzmodell und Proben -OpModes, um ultimative Zielstapel (vier Ringe gegen Einzelringstapel) zu erkennen.
- Beinhaltet Vufforia Ultimate Tore Vision Targets und Beispiel -Opmodes.
- Führt eine digitale Zoomfunktion für die Erkennung von Tensorflow -Objekten ein (um Objekte in größeren Entfernungen genauer zu erkennen).
- Fügt den Konfigurationseintrag für den Rev. Ultraplanetary HD HEX -Motor hinzu
Verbesserungen
- Fügt die Methoden setGain () und getgain () an die NormalizedColorSensor -Schnittstelle hinzu
- Durch das Festlegen der Verstärkung eines Farbsensors können Sie unterschiedliche Beleuchtungsbedingungen einstellen. Wenn Sie beispielsweise niedrigere Farbwerte als erwartet erkennen, können Sie die Verstärkung erhöhen.
- Der Verstärkungswert wird nur auf die Argb () -Methoden von GetNormalizedColors () angewendet, nicht auf die Rohfarbmethoden. Die GetNormalizedColors () -Methode wird für die Benutzerfreundlichkeit und Klarheit empfohlen, da Argb () umgewandelt werden muss.
- Aktualisiert die SensorColor Java -Probe, um die Gewinnverwendung zu demonstrieren
- Zusammenführen SensorRevcolordistance Java Probe in SensorColor Java -Probe, das Best Practices für alle Farbsensoren zeigt
- Verbessert die Abrufwerte aus dem Rev -Farbsensor V3
- Aktualisiert die Normalisierungsberechnung der RGB -Kanäle
- Verbessert die Berechnung des Alpha -Kanals (kann als Gesamthelligkeitsindikator verwendet werden).
- Behebt die Standard -Sensorauflösung, die Probleme mit hellen Umgebungen verursachte
- Fügt Unterstützung für die Änderung der Auflösung und Messungsrate des Broadcom -Sensorchips hinzu
- Entfernt IR -Messwerte und Berechnungen, die nicht für den Broadcom -Sensorchip bestimmt sind
Fehlerbehebungen
- Verbessert die Zuverlässigkeit der BNO055IMU -IMU -Initialisierung, um zufällige Initialisierungsfehler zu verhindern (die sich als
Problem with 'imu'
manifestiert).
Version 5.5 (20200824-090813)
Version 5.5 erfordert Android Studio 4.0 oder höher.
Neue Funktionen
- Fügt Unterstützung für das Aufrufen benutzerdefinierter Java -Klassen von Blöcken OpModes hinzu (Fixes Skystone Ausgabe Nr. 161).
- Die Klassen müssen im org.firstinspires.ftc.teamcode -Paket sein.
- Um einen einfachen Zugriff auf OpMode, Hardwaremap, Telemetrie, Gamepad1 und Gamepad2 zu erhalten, können Klassen org.firstinspires.ftc.robotcore.external.blockSopModeCompanion erweitern.
- Methoden müssen öffentlich statisch sein und nicht mehr als 21 Parameter haben.
- Methoden müssen mit org.firstinspires.ftc.robotcore.external.exporttoBlocks kommentiert werden.
- Die als OpMode, Linearopmode, Telemetrie und Hardwaremap deklarierten Parameter werden unterstützt und das Argument wird unabhängig von der Reihenfolge der Parameter automatisch bereitgestellt. Auf dem Block werden die Steckdosen für diese Parameter automatisch ausgefüllt.
- Parameter, die als char oder java.lang.character deklariert sind, akzeptieren jeden Block, der Text zurückgibt, und verwendet nur das erste Zeichen im Text.
- Parameter, die als Boolean oder Java.lang.boolean deklariert sind, akzeptieren jeden Block, der den Booleschen zurückgibt.
- Parameter, die als Byte, Java.lang.Byte, Short, Java.lang.Short, Int, Java.lang.Integer, Long oder Java.lang.Long deklariert sind die nächste ganze Zahl.
- Parameter, die als Float, Java.lang.Float, Double, Java.lang.Double deklariert sind, akzeptieren jeden Block, der eine Nummer zurückgibt.
- Fügt die Telemetrie -API -Methode zum Einstellen des Anzeigeformats hinzu
- Klassiker
- Monospace
- HTML (nur bestimmte Tags)
- Fügt Blöcke Support für das Schalten von Kameras hinzu.
- Fügt Blöcke Support für die Erkennung von TensorFlow -Objekt mit einem benutzerdefinierten Modell hinzu.
- Fügt Unterstützung für das Hochladen eines benutzerdefinierten TensorFlow -Objekterkennungsmodells auf der Seite Verwalten hinzu, was besonders für Blöcke und Onbotjava -Benutzer nützlich ist.
- Zeigt neue Codes für Steuerzentrum-Blink-Codes an, wenn das Wi-Fi-Band mit der Taste des Steuerzentrums umgeschaltet wird (nur auf Steuerhub-Hub-Betriebssystem 1.1.2 möglich).
- Fügt neue Warnungen hinzu, die in den erweiterten RC -Einstellungen deaktiviert werden können
- Nicht übereinstimmende App -Versionen Warnung
- Unnötige 2,4-GHz-Wi-Fi-Nutzungswarnung
- Rev Hub wird veraltete Firmware ausführen (älter als Version 1.8.2)
- Fügt Unterstützung für Sony PS4 Gamepad hinzu und überarbeitet, wie Gamepads auf der Fahrerstation funktionieren
- Entfernt die Präferenz, die den Gamepad -Typ basierend auf der Treiberposition legt. Ersetzt durch das Menü, mit dem Typen für Gamepads mit unbekanntem Video und PID angegeben werden
- Versuche, den Gamepad-Typ zu erkennen, basierend auf USB-VID und PID
- Wenn Gamepad -Video und PID nicht bekannt sind, verwenden Sie den vom Benutzer angegebenen Typ für dieses Video und PID
- Wenn Gamepad -Video und PID nicht bekannt sind und der Benutzer keinen Typ für dieses Video und PID angegeben hat, wird eine fundierte Vermutung darüber gemacht
- Die Fahrerstation wird nun versuchen, sich automatisch von einer Trennung von Gamepad zu erholen und sie in die Position zu gründen, die es zugewiesen wurde, als sie fallen ließ
- Wenn nur ein Gamepad zugeordnet ist und es fällt: Es kann wiederhergestellt werden
- Wenn zwei Gamepads zugewiesen sind und unterschiedliche Video-/PID -Signaturen haben und nur einen Tropfen: Es wird wiederhergestellt
- Wenn zwei Gamepads zugeordnet sind und unterschiedliche VID/PID -Signaturen haben, und beide fallen: Beide werden wiederhergestellt
- Wenn zwei Gamepads zugewiesen sind und die gleichen Video-/PID -Signaturen und nur einen Tropfen haben: Es wird wiederhergestellt
- Wenn zwei Gamepads zugewiesen sind und die gleichen VID/PID-Signaturen haben und beide fallen: Weder wird aufgrund der Unklarheit der Gamepads wiederhergestellt, wenn sie im USB-Bus wieder auftauchen.
- Derzeit gibt es einen bekannten Rand-Fall: Wenn es zwei Gamepads mit dem gleichen VID/PID-Signatur angeschlossen gibt, aber nur eine zugewiesen ist und beide fallen, ist es eine 50-50-Chance, für die man für die automatische Wiederherstellung ausgewählt wird. Die zugewiesene Position: Sie wird dadurch bestimmt, welches zuerst vom USB-Buscontroller neu untersucht wird.
- Fügt die Landschaft Benutzeroberfläche zur Fahrerstation hinzu
- Neue Funktion: Timer mit Audio -Hinweisen üben
- Neue Funktion (nur Steuerhub): drahtlose Netzwerkverbindungsstärkeindikator (0-5 Balken)
- Neue Funktion (nur Steuerhub): Wenn Sie auf der Ping/Channel -Anzeige tippen, wechselt es zu einem alternativen Display, das Radio RX DBM und Linkgeschwindigkeit anzeigt (erneut auf die Rückseite des Wechselns tippen).
- Das Layout wird nicht autorotieren. Sie können das Layout aus dem Einstellungsmenü der Treiberstation schalten.
Veränderungen brechen
- Entfernt die Unterstützung für Android -Versionen 4.4 bis 5.1 (KitKat und Lollipop). Die Minsdkversion ist jetzt 23.
- Entfernt die veralteten
LinearOpMode
-Methoden waitOneFullHardwareCycle()
und waitForNextHardwareCycle()
Verbesserungen
- Verarbeitet die RS485 -Adresse des Steuerpunkts automatisch
- Der Steuerpunkt wird automatisch eine reservierte Adresse angegeben
- Vorhandene Konfigurationsdateien funktionieren weiterhin
- Alle Adressen im Bereich von 1-10 sind weiterhin für Expansionszentren verfügbar
- Das Kontroll -Hub -Licht wird jetzt normalerweise solide grün sein, ohne zu blinken, um die Adresse anzuzeigen
- Der Steuerzentrum wird auf der Seite "Expansion Hub" -Ad Änderungseinstellungen nicht angezeigt
- Verbessert Rev Hub Firmware Updater
- Der Benutzer kann jetzt zwischen allen verfügbaren Firmware -Update -Dateien wählen
- Version 1.8.2 der Rev -Hub -Firmware wird in die Roboter -Controller -App gebündelt.
- Der Text wurde hinzugefügt, um zu klären, dass Expansionszentren nur über USB aktualisiert werden können.
- Die Geschwindigkeit der Firmware -Update wurde reduziert, um die Zuverlässigkeit zu verbessern
- Ermöglicht die Firmware von Rev Hub direkt über die Webseite verwalten
- Verbessert den Log -Viewer auf dem Roboter -Controller
- Horizontaler Scrollenunterstützung (kein Wort mehr eingepackt)
- Unterstützt Pinch-to-Zoom
- Verwendet eine monospassete Schriftart
- Fehlermeldungen werden hervorgehoben
- Neues Farbschema
- Versuche, einen außer Kontrolle geratenen/festgefahrenen OpMode zu erzwingen, ohne die gesamte App neu zu starten
- Nicht alle Arten von außer Kontrolle geratenen Bedingungen sind unterbrochen, aber wenn der Benutzercode während des Ausreißers versucht, mit Hardware zu sprechen, sollte das System in der Lage sein, es zu erfassen.
- Führt verschiedene Änderungen am Self -Inspect -Bildschirm vor
- Benennt "Betriebssystemversion" Eintrag in "Android -Version".
- Benennt "Wi-Fi Direct Name" in "Wi-Fi-Name".
- Fügt die Version der Steuerhub -Betriebssystem bei, wenn Sie den Bericht eines Steuerpunkts anzeigen
- Verbirgt den Eintrag des Flugzeugmodus, wenn Sie den Bericht eines Steuerpunkts anzeigen
- Entfernt die Überprüfung des ZTE Speed Channel Changer
- Zeigt die Firmware -Version für alle Expansions- und Kontrollzentren an
- Überarbeitet Netzwerkeinstellungen Teil der Verwaltung von Seite
- Alle Netzwerkeinstellungen werden jetzt mit einem einzigen Klick angewendet
- Der Wi-Fi-Direktkanal von telefonbasierten Robotercontrollern kann jetzt von der Seite Verwalten geändert werden
- Wi-Fi-Kanäle werden durch Bande (2,4 gegenüber 5 GHz) gefiltert und ob sie sich mit anderen Kanälen überlappen
- Der aktuelle Wi-Fi-Kanal ist auf telefonbasierten Robotercontrollern vorgewählt und steuert Hubs, auf denen OS 1.1.2 oder höher ausgeführt wird.
- In Steuerhubs, auf denen OS 1.1.2 oder höher ausgeführt wird, können Sie das System automatisch einen Kanal im 5 -GHz -Band auswählen lassen
- Verbessert Onbotjava
- Neue helle und dunkle Themen ersetzen die alten Themen (Chaos, Github, Chrom, ...)
- Das neue Standardthema ist
light
und wird verwendet, wenn Sie zum ersten Mal auf diese Version aktualisieren
- OnBotjava hat jetzt einen Registerkarte Editor
- Schreibgeschützter Offline-Modus
- Verbessert die Funktion des Menüelements "Beenden" auf Robotercontroller und Fahrerstation
- Jetzt garantiert vollständig gestoppt und aus dem Speicher entladen werden
- Zeigt eine Warnmeldung an, wenn ein linearopmode vorzeitig vorhanden ist, da die Startbedingung nicht überwacht wird
- Verbessert die Fehlermeldung, die angezeigt wird, wenn die Fahrerstation und der Robotercontroller nicht miteinander kompatibel sind
- OpMode -Bedienfeld der Fahrerstation jetzt deaktiviert, während ein Neustartroboter im Gange ist
- Deaktiviert erweiterte Einstellungen im Zusammenhang mit Wi-Fi Direct, wenn der Robotercontroller ein Steuerpunkt ist.
- Tönung Telefon Akku -Symbole auf der Fahrerstation, wenn niedrig/kritisch.
- Verwendet Namen "Control Hub Portal" und "Control Hub" (gegebenenfalls) in neuen Konfigurationsdateien
- Verbessere i2c les les les les
- Sehr große Verbesserung des Kontrollzentrums; Bis zu ~ 2x schneller mit kleinen (z. B. 6 Byte) liest
- Nicht so offensichtlich auf Expansionszentren, die mit einem Telefon verbunden sind
- Aktualisieren/Aktualisieren/Aktualisierungsinfrastruktur
- Update auf 'Androidx' Support Library aus 'com.android.support:appcompat', das am Ende des Lebens ist
- Aktualisieren Sie TargetsDkversion und CompilesDKversion auf 28
- Aktualisieren Sie das Android -Plugin von Android Studios zum letzten Mal
- Fix gemeldete Build -Zeitstempel in 'About' Screen
- Fügen Sie ein Beispiel hinzu
Fehlerbehebungen
- Fixiert Skystone Ausgabe #248
- Fixiert Skystone-Ausgabe Nr. 232 und modifiziert die Semantik der Bulk-Caching, um das Cache-Erziehungshandbuch/die automatischen Übergänge zu ermöglichen.
- Verbessert die Leistung, wenn der Distanzsensor von Rev 2m nicht den Stecker ist
- Verbessert die Lesbarkeit von Toastnachrichten auf bestimmten Geräten
- Ermöglicht eine Fahrerstation, sich mit einem Roboter -Controller zu verbinden, nachdem der andere getrennt hat
- Verbessert die Erzeugung gefälschter Seriennummern für UVC -Kameras, die keine echte Seriennummer bieten
- Bisher würden einige Geräte solche Kameras eine Serie von
0:0
zuweisen und nicht öffnen und nicht mit dem Streaming beginnen - Behebt FTC_APP Ausgabe Nr. 638.
- Behebt eine Reihe von Fehler mit dem Vufforia Camera Monitor, einschließlich:
- Behebt den Fehler, bei dem die Vorschau mit einem wackeligen Seitenverhältnis angezeigt werden kann
- Behebt den Fehler, bei dem die Vorschau in der Landschaft abgeschnitten werden kann
- Behebt den Fehler, bei dem die Vorschau beim Drehen des Telefons völlig durcheinander gebracht wurde
- Behebt den Fehler, bei dem Crosshair das Ziel bei der Verwendung von Webcams abdriftete
- Behebung des Problems im UVC -Treiber auf einigen Geräten (ftc_app 681), wenn das Streaming mehrmals hintereinander gestartet/gestoppt wurde
- Das Problem manifestierte sich als Kernel -Panik auf Geräten, die diesen Kernel -Patch nicht haben.
- Bei betroffenen Geräten, die den Patch haben , war das Problem einfach als kein Streaming -Streaming manifestiert.
- Das Tech -Team ist der Ansicht, dass die Hauptursache des Problems ein Fehler im Linux -Kernel XHCI -Treiber ist. Eine Problemumgehung wurde im SDK -UVC -Treiber implementiert.
- Behebung des Fehlers im UVC -Treiber, bei dem oft die Hälfte der Rahmen der Kamera fallen gelassen wird (z. B. nur 15 fps während einer für 30 fps konfigurierten Streaming -Sitzung).
- Behebung Problem, bei dem die Erkennung von TensorFlow -Objekte Ergebnisse zeigen würde, deren Vertrauen niedriger war als der Parameter des Mindestkonfidenzes.
- Behebt ein potenzielles Ausbeutungsproblem von CVE-2019-11358 in Onbotjava
- Behebt, die die Adresse eines Expansions -Hubs mit zusätzlichen Expansionszentren zu ändern, die damit verbunden sind
- Bewahrt die Netzwerkverbindung des Steuerhubs, wenn "Roboter neu starten" ausgewählt wird
- Behebt Probleme, bei der Geräte -Scans während des Neustarts des Roboters fehlschlagen würden
- Fix Renderscript -Nutzung
- Verwenden Sie die Androidx.renderscript -Variante: Erhöhte Kompatibilität
- Verwenden Sie Renderscript im Java -Modus, nicht nativ: vereinfacht Build
- Behebung von Webcam-Frame-to-Bitmap-Konvertierungsproblemen: Der Alpha-Kanal wurde nicht initialisiert, nur R, G & B
- Beheben möglicher arithmetischer Überlauf in der Frist
- Fixiert Deadlock in Vufforia Webcam-Unterstützung, die bei der Beendigung von OpMode 5-Sekunden-Verzögerungen verursachen kann
Version 5.4 (20200108-101156)
- Fixiert Skystone Ausgabe #88
- Fügt ein Inspektionselement hinzu, das feststellt, wenn ein Robotercontroller (Steuerhub) das Werks -Standardkennwort verwendet.
- Fixiert Skystone Ausgabe Nr. 61
- Fixiert Skystone Ausgabe #142
- Behebt FTC_App Ausgabe Nr. 417, indem Sie mehr Strom- und Spannungsüberwachungsfunktionen für Rev Hubs hinzufügen.
- Fixiert einen Absturz, der manchmal durch Onbotjava -Aktivität verursacht wird
- Verbessert OnBotjava Autosave -Funktionalität ftc_app #738
- Behebt das Problem der Systemreaktionsfähigkeit, wenn ein Expansionszentrum getrennt ist
- Behebt ein Problem, bei dem die IMU -Initialisierung Opmodes daran hindert, anzuhalten
- Fixiert das Problem, wo AndroidtextTospeech.speak () fehlschlagen würde, wenn es zu früh genannt würde
- Fügt Telemetry.Speak () Methoden und Blöcke hinzu, die dazu führen, dass die Fahrerstation (falls auch aktualisiert) Text sprechen
- Fügt und verbessert die Warnungen im Zusammenhang mit der Expansions-Hub im Zusammenhang mit
- Verbessert die Warnung mit niedriger Batteriewarnung der Expansion Hub
- Zeigt die Warnung sofort nach dem Hub an
- Gibt an, ob der Zustand Strom ist oder während eines OpMode -Laufs vorübergehend aufgetreten ist
- Anzeigen, welche Hubs einen niedrigen Akku meldeten
- Zeigt Warnungen an, wenn Hub während eines OpMode -Laufs verliert und zurückgewinnert
- Fixiert das LED -Muster des Hubs nach diesem Zustand
- Zeigt Warnung an, wenn der Expansionszentrum nicht auf Befehle reagiert
- Gibt an, ob der Zustand Strom ist oder während eines OpMode -Laufs vorübergehend aufgetreten ist
- Erklärt die Warnung, wenn beim Start nicht der Expansionszentrum vorhanden ist
- Gibt an, dass dieser Zustand einen Roboter -Neustart erfordert, bevor die Hub verwendet werden kann.
- Das Hub -Licht wird diesen Zustand nun genau widerspiegeln
- Verbessert die Protokollierung und reduziert das logarithmische Spam unter diesen Bedingungen
- Synchronisieren Sie die Steuerung Zeit und Zeitzone mit einem verbundenen Webbrowser, das den Roboter programmiert, wenn eine Fahrerstation nicht verfügbar ist.
- Fügt die Massen -Lesefunktionalität für Rev Hubs hinzu
- Ein Bulk -Caching -Modus muss mit
LynxModule#setBulkCachingMode()
auf die Hub -Ebene eingestellt werden. Dies gilt für alle relevanten SDK -Hardwareklassen, die auf diesen Hub verweisen. - Die folgenden folgenden Hub -Bulk -Caching -Modi sind verfügbar:
-
BulkCachingMode.OFF
(Standard): Alle Hardwareanrufe funktionieren wie gewohnt. Bulk -Daten können LynxModule#getBulkData()
durchlesen und manuell verarbeitet. -
BulkCachingMode.AUTO
: Die anwendbaren Hardware -Anrufe werden aus einem massenhaften Cache, der automatisch gelöscht/aktualisiert wird, serviert, um sicherzustellen, dass identische Befehle nicht denselben Cache treffen. Der Cache kann auch manuell mit LynxModule#clearBulkCache()
gelöscht werden, obwohl dies nicht empfohlen wird. - (advanced users)
BulkCachingMode.MANUAL
: Same as BulkCachingMode.AUTO
except the cache is never cleared automatically. 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
Known issues:
- 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)
Changes include:
- 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)
Changes include:
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.
Kabellos
- 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.
Elastizität
- 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.
Blocks
- 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).
Verschiedenes
- 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".
Known issues:
Version 3.6 (built on 17.12.18)
Changes include:
- 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.
- Blocks
- 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.
Known issues:
- 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).
Known issues:
- 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.
Changes include:
- 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!!! ***
Changes include:
- 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.