v3.5.1
3.5.1 ist eine stabile und qualitativ hochwertige Version. Zu den wichtigsten Neuerungen gehören: automatisches Pairing bei einer 1↔1- Inverse3 -Konfiguration mit Handshake; ohne geöffnete WebSocket-Sitzung,GET /devices/{id} Es kann weiterhin der aktuelle Bewegungsstatus zurückgegeben werden; das schrille Geräusch beim Umschalten zwischen Kraft- und Positionsmodus wird beseitigt; außerdem verfügt der Service-Tick-Scheduler über eine Selbstanpassungsfunktion bei anhaltend hoher Auslastung.
Highlights
- 1↔1 Inverse3 + Automatische Kopplung der Griffhalterung. Wenn ein „ Inverse3 “ und ein Griff bereit sind, registriert das SDK automatisch die Kopplung – in einer Umgebung mit mehreren Geräten,
pen_attachedMit Minverse wird sichergestellt, dass die Freischaltung nicht mehr fälschlicherweise weitergeleitet wird. - Sie können die neuesten Informationen abrufen, ohne eine Sitzung zu öffnen.
GET /devices/{id}Schnappschuss. Inverse3 , Inverse3x und Minverse mit Firmware-Version 7.5+ fragen nun alle 20 Hz den Bewegungsstatus ab, unabhängig vom Aktivitätsstatus des WebSockets. Firmware-Versionen vor 7.5 überspringen diese Abfrage und geben nur einmal eine Warnung aus. - Beim Umschalten zwischen Kraft- und Positionsmodus tritt kein Pfeifgeräusch mehr auf.
set_cursor_force↔set_cursor_positionFür die Umschaltung wird ein Slot-Exklusivitätsmechanismus verwendet: Zwischen zwei Ticks behält jedes Gerät nur den neuesten Befehl bei. Die vorübergehende Umgehungslösung mit einem Leerlaufintervall von 200 ms in „HARP “ ist nicht mehr wirksam. - Selbstregulierender Tick-Scheduler. Die Hauptschleife passt die Ausgaberate unter Last automatisch an, sodass ein einzelner langsamer Tick nicht zu einem unbegrenzten Anwachsen der Befehlswarteschlange führt.
- Durchlaufende Wiederherstellung mit einem Eingangs- und einem Ausgangskanal unter hoher Auslastung. Die Streaming-Antworten für jede WS-Nachricht sind in jeder Sitzung auf 1/ms begrenzt; wenn die Obergrenze erreicht ist, wird der Inhalt des vorherigen Puffers erneut wiedergegeben, sodass die Simulationsschleife niemals bei
recv()Oben.
Interne Verbesserungen
Ausrüstung
- Inverse3 - und VerseGrip-Registrierungsliste, nach Geräten geordnet.
GET|POST|DELETE /devices/{sel}/paired_withEs handelt sich um eine Eins-zu-Eins-Zuordnung nach Geräten.POSTDie Konflikte zwischen den beiden Paaren werden beseitigt;DELETEAusgewählte Einträge löschen; der Selektor muss zu einer eindeutigen ID aufgelöst werden. - 20-Hz-Abfrage des Bewegungsstatus bei Firmware v7.5+.
GET /devices/{id}Alle 50 ms wird der aktuellste Wert zurückgegeben.cursor_position、cursor_velocity、angular_position、angular_velocity; erkennt aktive Sitzungen nicht. - Der kabellose VerseGrip
set_extension_dataDrehzahlregelung. Es wird ein Pipeline-Ansatz nach dem Prinzip „Alte Daten verwerfen / in Leerlaufzeiten wiederholt senden“ verwendet, wobei die Daten bei jedem Service-Tick geleert werden – so wird die Funkverbindung durch zu viele Sendevorgänge nicht mehr überlastet, und bei zu wenigen Sendevorgängen bleiben keine veralteten Werte zurück.
Gespräch
- Für Chargen, die ausschließlich Steuerbefehle (Kraft/Position) enthalten, wurde ein schneller WS-Empfangspfad hinzugefügt, der die Verarbeitungskette für die Konfiguration der Sensorik überspringt;
configure/set_profile/ Benutzerdefinierte Befehle durchlaufen weiterhin die Logik zur Behebung von Race-Conditions.
Beobachtbarkeit
- Die Häufigkeit der Ausgabe von Überwachungsprotokollen richtet sich nach dem jeweiligen Port und berücksichtigt dabei die Dauer. Jeder auf der Sperrliste stehende Port wird separat überwacht; regelmäßig auftretende
"...blacklisted: skipping"Protokollzeilen enthalten nun(×N), gibt die Anzahl der Ticks an, die zwischen zwei Auslösungen unterdrückt wurden. - Wenn ein Gerät erkannt wird, das nicht zur WVG-Familie gehört, füllt die drahtlose VerseGrip-Erkennung das Protokoll nicht mehr mit einer Flut von Einträgen.
Fehlerbehebung
- Verwendung
POST /device.config.presetund festlegendefaultsoderarm_frontZeit… nun wird die Einbindungskonfiguration des Geräts auf die Werkseinstellungen zurückgesetzt (zuvor erfolgte ein stiller Leerlauf).basiswird beibehalten, sodass die in der App konfigurierte Basis auch nach dem Einbinden von Voreinstellungen weiterhin gültig bleibt. - Wenn die passende „configure“-Anweisung zusammen mit dieser in derselben WS-Nachricht eintrifft,
force_render_full_stateWird nicht mehr zurückgegeben, fehltconfigSnapshot eines Blocks——Die Konfiguration des Pfads wird vor der Erstellung des Snapshots abgeschlossen sein. - sitzungsübergreifend
force_render_full_stateNun wird ein vollständiger Snapshot der Zielsitzung zurückgegeben. A und B erhalten nun beide die vollständigen Daten (zuvor erhielt A nur Streaming-Daten). - Wenn
target_session_idSolange dies unbekannt ist, führen sitzungsübergreifende Befehle nicht mehr dazu, dass der Anfrage-Antwort-Zyklus ins Stocken gerät. Der Aufrufer erhält einen eigenen Snapshot sowie einensession-command-droppedEreignis (cross-session-unknown-target). - Minverse Durch die Kalibrierung mehrerer Geräte wird die fehlerhafte Weiterleitung nicht mehr ausgelöst. Die Kalibrierung von Minverse A löst nicht mehr die Freigabe von Minverse B aus; die gleiche Korrektur wurde auch für die Heading-Übertragung von „inkwell-success“ vorgenommen.
- HTTP-Geräteauswahl Akzeptieren
#1234und1234Als Geräte-ID; Selektor-Klasse (inverse3、verse_grip) kann in Verbindung mit Indizes verwendet werden; bei einer 404-Meldung bleibt der ursprüngliche Selektorausdruck erhalten. - Der kabellose VerseGrip
readyDas Logo hängt nun vom anfänglichen Handshake mit den Geräteinformationen ab——Bisher konnte dieses Flag auf bestimmten Wiederverbindungswegen gesetzt werden, noch bevor das Gerät seine eigenen Informationen vollständig übermittelt hatte. - Laufzeitänderungen an Einstellungen, die von „keyed-rate-gate“ unterstützt werden, werden nun beim nächsten Treffer wirksam(bisher wurden sie bereits beim ersten „Emplace“ festgelegt und nur in neuen Sitzungen angewendet).
Möglicherweise schwerwiegende Änderungen
- Die 404-Fehlermeldungen bei HTTP wurden vereinheitlicht, umfasst
basis、preset、mount、transform、force_gate:"{type} device #{id} not found"→"no device matches selector '{expr}'"。Das Gleiche gilt für den 404-Fehler in der Sitzung. - Platzhalter für Einstellungsoptionen
devices/inverse*/...→devices/*inverse/..., anwendbar auf die Kraftskalierungsverstärkung, die Kraftgatterverstärkung, die Steuerungszeitüberschreitung sowiesafeties/expose_in_snapshot。Konfigurationsdateien der Version 3.5.0, die den alten Pfad im Klartext verwenden, können nicht eingebunden werden. - Einstellungen: Die Serialisierung globaler Elemente wurde verschoben nach
session/serialization/*(explicit_fields、force_complete_transforms、preview/*). Altserialization/*Der Pfad kann weiterhin über veraltete Aliase aufgelöst werden; wird in Version 4.0 entfernt. - Verhaltensänderung: Bei Clients, die die WS-Antworten jeder Nachricht für den Tick-Synchronisations-Handshake verwenden, wird unter kontinuierlichem Datenverkehr pro Sitzung höchstens eine Antwort pro Millisekunde empfangen. Vollständige Snapshots bei Konfigurationsänderungen sind davon nicht betroffen.
Veraltete Elemente
3.5.1 enthält keine veralteten Elemente. Der Vorschau-Hauptschalter ist eine veraltete Infrastruktur der kommenden Version 3.6 „Von stillschweigend zu Warnung“; die erste Phase der Ausmusterung ist für 3.5.2 geplant.