Zum Hauptinhalt springen

v3.5.3

3.5.3 ist ein Patch-Release. Zu den wichtigsten Änderungen zählen ein intelligenterer Auto-Pairing-Modus, der die Kopplung neu herstellt, wenn Sie eine Hälfte eines gekoppelten „ Inverse3 + Grip“-Sets austauschen, das Ende falscher Akkuwarnungen bei kabelgebundenen Verse Grips, transparentere Prüfungen der Firmware-Funktionen, die nicht unterstützte Befehle nicht mehr stillschweigend verwerfen, eine stabilere Status-LED beim Verbinden sowie ein absturzfreies Beenden und Neustarten des Dienstes. Außerdem enthält das Release mehrere Korrekturen an Geräten und an der Serialisierung sowie einige Hinweise zur Übertragung auf Byte-Ebene.

Wichtigste Neuerungen​

  • Die automatische Kopplung wird neu hergestellt, wenn Sie eine Hälfte eines Sets austauschen. Wird ein Gerät aus einem automatisch gekoppelten „ Inverse3 + Verse Grip“-Set ausgetauscht, entfernt das SDK nun die veraltete Kopplung und stellt eine Verbindung mit dem neu angeschlossenen Gerät her. Manuelle Kopplungen bleiben davon unberührt.
  • Keine falschen Akkuwarnungen mehr bei kabelgebundenen Verse Grips. Warnungen bei niedrigem und kritischem Akkustand werden nun nur noch für drahtlos verbundene Verse Grips ausgelöst; ein kabelgebundener Verse Grip löst keine falschen Warnungen mehr bei niedrigem oder kritischem Akkustand aus.
  • Transparentere Prüfungen der Firmware-Funktionen. Wenn Sie bei einem Gerät eine haptische Funktion anfordern, für die dessen Firmware zu alt ist – gleichmäßige oder richtungsabhängige Dämpfung bei Firmware älter als 7.5, Rückkehr zur Ausgangsposition bei Firmware älter als 7.4 –, antwortet das System nun mit HTTP 422 und einem Ereignis device-protocol-unsupported, statt mit einer irreführenden 200, die die Anfrage stillschweigend abgelehnt hat.
  • Stabilere Status-LED beim Verbindungsaufbau. Die Status-LED von Inverse3 blinkt nicht mehr bei jedem Verbindungsaufbau oder der Wiederherstellung der Verbindung rot: Die Verbindung bleibt während der etwa 5 Sekunden dauernden Einschwingphase nach dem Aufwachen aufrechterhalten, sodass der Verbindungs-Watchdog der Firmware nicht mehr ausgelöst wird.
  • Absturzfreies Beenden und Neustarten des Dienstes. Beim Beenden und Neustarten des Dienstes kommt es nicht mehr zu Abstürzen oder Hängern. Der Ablauf für das Herunterfahren und den Neustart wurde überarbeitet, um die Panics und Hänger zu beseitigen, die beim Ein- und Ausschalten des Dienstes auftraten.

Interne Verbesserungen​

  • Clutch-Navigationsmodus (experimentell, standardmäßig deaktiviert). Ein neuer Navigationsmodus, mit dem Sie die Bewegung, die der Dienst in die Szene exportiert, verlangsamen oder vollständig einfrieren können, während sich das physische Gerät weiterbewegt – ein Modus mit halber Geschwindigkeit („precise“) für die Feinpositionierung und ein vollständiges Einfrieren zum Neupositionieren des Arbeitsbereichs. Beim Loslassen wird der aufgelaufene Versatz anschließend in den Arbeitsbereich übernommen, sodass der Szenen-Cursor nie springt. Die Kraftrückmeldung bleibt bei jedem Verhältnis erhalten. In diesem Zyklus ist der Modus nur bei ausdrücklicher Aktivierung verfügbar; das Standardprotokoll bleibt unverändert.
  • Sitzungsbezogene Kraftskalierung (Vorschau). Ein Client kann die haptische Ausgabe einer Simulationssitzung auf null drosseln – beispielsweise während ein Pie-Menü geöffnet ist – und das Gerät an den Hub übergeben, sodass die Menü-Haptik über den normalen Steuerungspfad ausgegeben wird. Die Ausgabe wird automatisch wiederhergestellt, sobald die Sitzung beendet oder das Menü geschlossen wird. In diesem Zyklus hinter einem Vorschau-Flag freigeschaltet; das Standardprotokoll bleibt unverändert.
  • Arbeitsbereichs-Zoom um einen Drehpunkt (experimentell). Übergeben Sie beim Aktualisieren der Arbeitsbereichstransformation einen Drehpunkt (zum Beispiel den aktiven Cursor). Die Ansicht wird dann um diesen Punkt skaliert, sodass dessen Bildschirmposition erhalten bleibt – ein sofortiger Zoom zum Cursor. Nur für Inverse3; in diesem Zyklus experimentell, daher bleibt das Standardprotokoll unverändert.
  • Die JSON-Serialisierungs-Engine (glaze) wurde auf Version 7.8.4 aktualisiert. Dies betrifft ausschließlich die Infrastruktur – es gibt keine Änderungen an der öffentlichen API oder am Verhalten. Zudem wurde eine wertkonservierende Neuformatierung von Gleitkommazahlen im Textprotokoll hinzugefügt; siehe unten unter „Mögliche Breaking Changes“.

Fehlerbehebungen​

  • Das Ändern oder Zurücksetzen der Montage-Transformation eines Geräts führt nicht mehr zu einem Absturz. Ein übrig gebliebener Prototyp-Codepfad verschob bei jeder Änderung der Montage eine Workspace-Begrenzungsbox der Firmware; dieser Codepfad wurde entfernt.
  • Die Körperausrichtung wird nach einer Neukalibrierung am Inkwell-Dock aktualisiert. Nach erneutem Andocken und Kalibrieren im Inkwell wird die gestreamte Körperausrichtung nun vom Gerät aktualisiert, anstatt bis zur nächsten Wiederverbindung Werte aus der Zeit vor der Kalibrierung zu melden. Erfordert die aktuelle Firmware des Geräts; das Wire-Format bleibt unverändert.
  • Minverse meldet blockierte Kalibrierungen immer. Minverse sendet nun ein Ereignis device-calibration-failed, sobald die Firmware eine blockierte Kalibrierung meldet – einschließlich eines Sonderfalls mit oszillierendem Hall-Signal, bei dem der Fehler bisher stillschweigend ignoriert wurde –, sodass der Geräte-Manager stets die Meldung „Calibration failed“ anzeigt.
  • Zentrierte Voreinstellungen setzen den Ursprung auf den tatsächlich erreichbaren Mittelpunkt des Arbeitsbereichs. arm_front_centered und led_front_centered (Inverse3 / Inverse3x) waren auf die Achse des Armgelenks ausgerichtet, die im erreichbaren Bereich nicht zentriert liegt. Daher landete set_cursor_position am Ursprung {0, 0, 0} außerhalb der Mitte. Auch der zentrierte Ursprung von Minverse lag etwa 10 mm zu weit rechts. Jeder Versatz entspricht nun der Hälfte des erreichbaren Bereichs auf jeder Achse, gemessen unter Ausschluss der Grenzzonen der Sicherheitsfeder der Firmware und nicht des mechanisch möglichen Bereichs. (Siehe den Hinweis zur Ursprungsverschiebung unter „Mögliche inkompatible Änderungen“.)

Mögliche inkompatible Änderungen​

  • POST/DELETE /config/filters/damping Bei Firmware-Versionen älter als 7.5 wird nun der HTTP-Status 422 zurückgegeben., zusammen mit einem Ereignis device-protocol-unsupported, statt eines 200, das den Schreibvorgang stillschweigend verworfen hat. Firmware ab Version 7.5 ist davon nicht betroffen (weiterhin 200). Vorgehensweise: Aktualisieren Sie die Geräte-Firmware auf Version 7.5 oder höher oder behandeln Sie die Antwort 422 entsprechend.
  • POST/DELETE /home_return Bei Firmware-Versionen ohne diesen Befehl (älter als 7.4) wird nun der HTTP-Status 422 zurückgegeben., statt eines bedingungslosen 200. Betroffen sind nur Geräte mit alter Firmware. Behebung: Firmware auf Version 7.4 oder höher aktualisieren oder die 422-Antwort behandeln.
  • Befehlsechos bei config/mount und state/transform (GET/POST/PATCH/DELETE) serialisieren transform.rotation nun in der Reihenfolge der Tonarten {w,x,y,z} statt {x,y,z,w}, entsprechend der Rotationsreihenfolge des gestreamten state-Snapshots. Nur auf Byte-Ebene – gleiche Werte und gleiche Schlüsselnamen, lediglich die Reihenfolge der Schlüssel ändert sich; alle drei Komponenten werden weiterhin zurückgegeben. Clients, die JSON anhand von Schlüsselnamen auswerten, müssen keine Anpassungen vornehmen; bei strengen Byte- oder Reihenfolgevergleichen sollten sie ihre Referenzdaten neu generieren.
  • Name des Geltungsbereichs bei Änderungsbenachrichtigungen für die Anwendung einer Konfiguration auf ein einzelnes Gerät. Das Änderungsereignis „session-updated“ meldet nun die Geltungsbereichsnamen der Konfiguration (config.mount, config.basis, config.preset) statt der bloßen Namen (mount, basis, preset), wenn die Konfiguration eines einzelnen Geräts angewendet wird. Clients, die diese Geltungsbereichs-Strings aus den Ereignissen herausfiltern, müssen ihre Zuordnung anpassen.
  • Neuformatierung der Gleitkomma-Textdarstellung in Glaze für alle numerischen Wire-Werte, v3.0 und v3.1 (zum Beispiel 1.0E-7 -> 1E-7, 16777216 -> 1.6777216E7, -1.0E-37 -> -1E-37). Nur auf Byte-Ebene – numerische Parser lesen identische Werte; lediglich die Textdarstellung hat sich geändert. Clients, die Zeichenfolgenvergleiche verwenden, sollten ihre Fixtures neu generieren.
  • Verschiebung des Ursprungs bei zentrierten Voreinstellungen. Da die zentrierten Voreinstellungen nun auf den tatsächlich erreichbaren Mittelpunkt abzielen, verschiebt sich der Ursprung, den sie festlegen, gegenüber 3.5.2: arm_front_centered / led_front_centered verschieben sich um 25 mm entlang der Tiefenachse des Geräts, das zentrierte „ Minverse “-Preset verschiebt sich um 10 mm in X, 20 mm in Y und 20 mm in Z, und minverse_zup verschiebt sich um 20 mm in X-Richtung und um 30 mm in Y-Richtung. Dies betrifft eine standardmäßig aktivierte Schnittstelle, und minverse_zup wird automatisch auf erkannte Freeform-Sitzungen angewendet. Wirkungsbereich: Inhalte, die am Ursprung platziert sind, oder Geometrie, die relativ zu ihm positioniert ist, während ein zentriertes Preset aktiv ist – sie verschieben sich mit dem Ursprung. Migration: Überprüfen Sie die am Ursprung ausgerichtete Geometrie erneut oder legen Sie den bisherigen Versatz explizit als benutzerdefinierte Mount-Transformation fest. Die nicht zentrierten Voreinstellungen (device_defaults, arm_front, led_front) sind Identitätstransformationen und bleiben davon unberührt.

Veraltete Funktionen​

  • Die Legacy-Eingabe values Bei den Steuerbefehlen „ inverse3 “ wird nun eine Warnung ausgelöst. Das Senden des Arrays values ein set_cursor_force, set_cursor_position, set_angular_position oder set_angular_torques anstelle des angegebenen Feldes des Befehls (vector / position / angles / torques) funktioniert weiterhin, löst jedoch ein Ereignis aus command-deprecated aus (begrenzt auf einen pro 30 Sekunden und Befehl), anstatt stillschweigend akzeptiert zu werden. Migrieren Sie values in das angegebene Feld; die Legacy-Eingabe soll in Version 4.0 entfernt werden.
  • Ansonsten sind in diesem Zyklus keine öffentlichen Wire-Schnittstellen betroffen.