v3.5.3
3.5.3 ist ein Patch-Release. Die wichtigsten Änderungen sind ein intelligenteres Auto-Pairing, das sich neu koppelt, 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
- Auto-Pairing koppelt sich neu, 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 koppelt sich mit dem neu verbundenen Gerät. Manuelle Kopplungen bleiben 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 erzeugt keine fälschliche Warnung bei niedrigem oder kritischem Akkustand mehr.
- Transparentere Prüfungen der Firmware-Funktionen. Fordern Sie bei einem Gerät eine haptische Funktion an, für die seine 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 –, so antwortet das System nun mit HTTP 422 und einem Ereignis
device-protocol-unsupported, statt mit einer irreführenden 200, die die Anfrage stillschweigend verworfen hat. - Stabilere Status-LED beim Verbinden. Die Status-LED von Inverse3 blinkt nicht mehr bei jedem Verbinden oder Wiederverbinden rot: Die Verbindung bleibt während der etwa 5 Sekunden dauernden Einschwingphase nach dem Aufwachen aufrechterhalten, sodass der Verbindungs-Watchdog der Firmware nicht mehr auslöst.
- 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 Herunterfahren und 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 an die Szene exportiert, verkleinern oder vollständig einfrieren können, während das physische Gerät sich 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 auf ausdrückliche Aktivierung verfügbar; das Standardprotokoll bleibt unverändert.
- Sitzungsbezogene Kraftskalierung (Vorschau). Ein Client kann die haptische Ausgabe einer Simulationssitzung gegen null drosseln – etwa 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 Arbeitsbereichs-Transformation einen Drehpunkt (zum Beispiel den aktiven Cursor). Die Ansicht skaliert dann um diesen Punkt, sodass dessen Bildschirmposition erhalten bleibt – ein sofortiger Zoom zum Cursor. Nur für Inverse3; in diesem Zyklus experimentell, daher bleibt das Standardprotokoll unverändert.
- Serialisierungs-Engine JSON (glaze) auf v7.8.4 aktualisiert. Nur Infrastruktur – keine Änderung an öffentlicher API oder Verhalten. Eine werterhaltende Neuformatierung von Gleitkommazahlen im Textprotokoll kommt ebenfalls hinzu; siehe unten unter „Mögliche Breaking Changes“.
Fehlerbehebungen
- Das Ändern oder Zurücksetzen der Mount-Transformation eines Geräts führt nicht mehr zu einem Absturz. Ein übriggebliebener Prototyp-Codepfad schob bei jeder Änderung der Montage eine Workspace-Begrenzungsbox der Firmware; dieser Codepfad wurde entfernt.
- Die Körperorientierung wird nach einer Neukalibrierung am Inkwell-Dock aktualisiert. Nach erneutem Andocken und Kalibrieren im Inkwell wird die gestreamte Körperorientierung nun vom Gerät aktualisiert, statt 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 Randfalls mit oszillierendem Hall-Signal, der den Fehler bisher stillschweigend verschluckt hat -- sodass der Device Manager stets eine Meldung "Calibration failed" anzeigt. - Zentrierte Presets legen den Ursprung auf den tatsächlich erreichbaren Mittelpunkt des Workspace.
arm_front_centeredundled_front_centered(Inverse3 / Inverse3x) waren an der Achse des Armgelenks ausgerichtet, die im erreichbaren Bereich nicht zentriert liegt. Daher landeteset_cursor_positionam 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/dampingauf Firmware älter als 7.5 gibt nun HTTP 422 zurück, zusammen mit einem Ereignisdevice-protocol-unsupported, statt eines 200, das den Schreibvorgang stillschweigend verworfen hat. Firmware ab 7.5 ist nicht betroffen (weiterhin 200). Migration: Gerätefirmware auf 7.5 oder neuer aktualisieren oder die 422-Antwort behandeln.POST/DELETE /home_returnauf Firmware ohne diesen Befehl (älter als 7.4) gibt nun HTTP 422 zurück, statt eines bedingungslosen 200. Nur Geräte mit alter Firmware sind betroffen. Migration: Firmware auf 7.4 oder neuer aktualisieren oder die 422-Antwort behandeln.- Befehlsechos bei
config/mountundstate/transform(GET/POST/PATCH/DELETE) serialisierentransform.rotationnun in der Schlüsselreihenfolge{w,x,y,z}statt{x,y,z,w}, passend zur Rotationsreihenfolge des gestreamtenstate-Snapshots. Nur auf Byte-Ebene -- gleiche Werte und gleiche Schlüsselnamen, nur die Reihenfolge der Schlüssel ändert sich; alle drei Komponenten werden weiterhin zurückgegeben. Clients, die JSON über Schlüsselnamen auswerten, müssen nichts anpassen; strikte Byte- oder Reihenfolgenvergleiche sollten ihre Referenzdaten neu erzeugen. - Namen des Geltungsbereichs bei Änderungsbenachrichtigungen für die Anwendung einer Konfiguration auf ein einzelnes Gerät. Das Änderungsereignis session-updated meldet nun 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 der Ereignisse filtern, müssen ihre Zuordnung anpassen. - Neuformatierung der Gleitkomma-Textdarstellung in Glaze über 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; nur die Textform hat sich geändert. Clients mit Zeichenkettenvergleichen sollten ihre Fixtures neu erzeugen. - Verschiebung des Ursprungs bei zentrierten Presets. Da die zentrierten Presets nun auf den tatsächlich erreichbaren Mittelpunkt zielen, verschiebt sich der Ursprung, den sie setzen, gegenüber 3.5.2:
arm_front_centered/led_front_centeredverschieben 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, undminverse_zupverschiebt sich um 20 mm in X und 30 mm in Y. Dies betrifft eine standardmäßig aktivierte Schnittstelle, undminverse_zupwird für erkannte Freeform-Sitzungen automatisch angewendet. Auswirkungsbereich: 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: am Ursprung ausgerichtete Geometrie erneut prüfen oder den bisherigen Versatz explizit als benutzerdefinierte Mount-Transformation festlegen. Die nicht zentrierten Presets (device_defaults,arm_front,led_front) sind Identitätstransformationen und nicht betroffen.
Veraltete Funktionen
- Die Legacy-Eingabe
valuesbei den inverse3-Steuerbefehlen löst nun eine Warnung aus. Das Senden des Arraysvaluesanset_cursor_force,set_cursor_position,set_angular_positionoderset_angular_torquesstatt an das benannte Feld des Befehls (vector/position/angles/torques) funktioniert weiterhin, löst jedoch ein Ereigniscommand-deprecatedaus (begrenzt auf eines pro 30 Sekunden und Befehl), statt stillschweigend akzeptiert zu werden. Migrieren Sievaluesauf das benannte Feld; die Legacy-Eingabe ist für die Entfernung in Version 4.0 vorgesehen. - Ansonsten sind in diesem Zyklus keine öffentlichen Wire-Schnittstellen betroffen.