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
- Integriert die Java-Klasse
Rev9AxisImuOrientationOnRobot
. - 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 bereinigen“ 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. Es berücksichtigt dies und gibt Ihnen Ihre Orientierung in einem Roboterkoordinatensystem statt in einem speziellen Koordinatensystem 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 viel Zeit in Anspruch nehmen 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 Inspektionsbericht der Robotersteuerung einen QR-Code hinzu, wenn dieser von der Fahrerstation aus angezeigt wird, damit er von den Inspektoren beim Wettbewerb gescannt werden kann.
- Verbessert die I2C-Leistung und -Zuverlässigkeit in einigen Szenarien.
Version 7.2 (20220723-130006)
Breaking Changes
- 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 Typ SPE