Zum Hauptinhalt springen

v3.5.0

Unsere bedeutendste Version seit der Neugestaltung der API vor einem Jahr. Die Version 3.5.0 führt eine einheitliche 3D-Mathematikschicht, vollständige Unterstützung für „ Minverse “, einen typisierten Ereignisfluss, eine umfassende Parameter-API und eine übersichtlichere HTTP-Schnittstelle ein – ergänzt durch ein Jahr voller Fehlerbehebungen und Verbesserungen der Benutzerfreundlichkeit.

Stärken​

  • Einheitliche mathematische 3D-Ebene – eine modulare Transformations-Pipeline mit nativen Primitiven für das geräteeigene Basiskoordinatensystem (Frame), die Montage-Transformation, die Arbeitsraum-Transformation und die Navigations-Transformation sowie explizite Konvertierungen zwischen lokalem, Sitzungs-, Anwendungs- und internem Raum.
  • Blasen-Navigation – Erkunden Sie weitläufige virtuelle Arbeitsbereiche durch Bereiche mit definierter Form (SDF-Primitive) mit einer an die Geschwindigkeit angepassten Geschwindigkeitssteuerung, einer Kollisionserkennung unter Berücksichtigung der Hysterese und einer optionalen Drift in Richtung des Cursors. Vollständig konfigurierbar über HTTP und WebSocket, mit Hin- und Rückübertragung in den Anwendungsraum.
  • Typisierter Ereignisstrom – ein WebSocket-Ereigniskanal für Gerätelebenszyklen, Sicherheitswarnungen, Kalibrierung, Akku, Hinweise auf die Überprüfungshäufigkeit und Hinweise auf Veralterung.
  • API-Parameter – ein umfassendes Schlüssel-Wert-Parametersystem mit HTTP-CRUD-Operationen, Typangaben, Bereichsbeschränkungen und Beschreibungen, das die bisherige verschachtelte Konfigurationsdatei ersetzt.
  • Konsistente Gerätekonfiguration — jeweils nur ein Satz von HTTP-Routen für jedes Gerät: basis, mount, preset, transform, filters, handedness, torque_scaling, gravity_compensation, home_return.
  • Synchronisierte Kalibrierung v Minverse und Stift – das Gerät und sein Stift werden nun gemeinsam kalibriert; die Kalibrierung bleibt gesperrt, solange kein Griff physisch befestigt ist.
  • Ergonomische Verbesserungen bei HTTP — Geräteauswahl über Index (Auswahl eines Geräts anhand seines Index ohne Kennung), einheitliche Form für Anfragen und Antworten, die mit WebSocket kompatibel ist, Hülle {ok, error, data} aktivierbar (?format=json) und Platzhalter-Sessionselektoren.

Neue Funktionen​

Geräte​

  • Minverse — In dieser Version offiziell unterstützte Funktionen: Erkennung, Startablauf, Sicherheitsbenachrichtigungen und synchronisierter Kalibrierungsablauf.
  • Ruko und Kingfisher gelten als offizielle Griffarten.
  • Unterstützung von Gerätesimulatoren – Erkennung der per Software simulierten Geräte und Kommunikation mit diesen, parallel zur tatsächlichen Hardware.
  • Schutz vor Verbindungsschleifen — Ports mit ungewöhnlichem Verhalten werden automatisch blockiert; setzen Sie diese mit POST /ports/{port}/reset.
  • Signal zur Anzeige des Einsteckens des Stifts – zuverlässige Erkennung des Einsteckens und Herausziehens des Griffs, mit Rückprallschutz.

Sitzungen, Befehle und WebSocket​

  • Filterung und Beibehaltung von Sitzungsprofilen – Sitzungen geben einen Profilnamen und eine erforderliche SDK-Version an, die der Dienst von einer erneuten Verbindung zur nächsten speichert; Clients und Überwachungstools können Sitzungen anhand dieses Profils filtern und gezielt ansprechen.
  • Auftragswarteschlangen pro Sitzung – eine langsame Sitzung kann eine andere nicht mehr blockieren.
  • Wörterbuch configure ausdrücklich für einmalige Bestellungen — basis, preset, mount, force_gate, damping pro Gerät sowie profile et basis pro Sitzung sind nun alle zusammengefasst in configure. Dieses Wörterbuch ist auf das des Ausgabedokuments abgestimmt, sodass das, was Sie senden, identisch in dem wiedergegeben wird, was Sie lesen.
  • Individuell anpassbare Gerätemontage — Wählen Sie eine integrierte Arbeitsbereichsvoreinstellung (defaults, arm_front, arm_front_centered, led_front, led_front_centered) oder senden Sie eine explizite Transformation; jede manuelle Änderung der Montage führt automatisch dazu, dass die Voreinstellung auf custom.
  • Benannte Steuerfelder — position, vector, angles et torques ersetzen die allgemeine Tabelle values.
  • set_angular_torques ersetzen set_angular_torque (im Singular veraltete Form).
  • Erweiterungen der Sitzungsrahmen — Die Session-Frames der Versionen v3.0 und v3.1 übertragen nun erweiterbare Objekte. config, state et status; zu den neuen Ausgabefeldern gehören current_cursor_force, current_cursor_position, current_angular_torques, current_angular_position, control_domain, control_mode, transform, transform_velocity, Felder config.* bereichert und status.safety (standardmäßig ausgeblendet).
  • Teilweise Aktualisierungen der Transformationen — Senden Sie bitte nur die zu ändernden Unterfelder (position, rotation, scale) für den Aufbau, die Gestaltung des Arbeitsbereichs und die Art der Navigation.

HTTP​

  • GET / — Version des Dienstes.
  • GET/POST/DELETE /settings et /settings/* — Vollständige API mit Schlüssel-Wert-Parametern.
  • GET /sessions/{session} et GET/POST/DELETE /sessions/{session}/profile.
  • GET /devices?session=<selector> — wandelt die Koordinaten der Geräte in den Anwendungsraum einer bestimmten Sitzung um.
  • Geräteauswahl nach Index — Wählen Sie ein beliebiges Gerät mit dem Zeigefinger aus, ohne dessen Kennung zu kennen (/inverse3/0/... für den ersten „ Inverse3 “; /inverse*/*/... (für alle Geräte der Inverse-Familie).
  • Einheitliche Struktur für Anfragen und Antworten — POST- und GET-Body-Daten verwenden dieselben Strukturen command_data JSON oder WebSocket – der für das eine Protokoll geschriebene Code funktioniert auch mit dem anderen.
  • Aktivierbarer Umschlag über ?format=json auf jeder beliebigen Straße; /settings* et GET /home_return verwenden {ok, error, data} Standardmäßig. Verwenden Sie ?format=plain um die Rohstruktur zu erhalten.
  • Platzhalter in Sitzungsselektoren — * (jede Sequenz) und ? (ein einzelnes Zeichen) in den Profilnamen.
  • Prozentuale Aufschlüsselung der Wahlentscheidungen — %2A, %3A, usw. werden vor der Weiterleitung entschlüsselt.

Veranstaltungen​

  • Spezieller WebSocket-Ereignisstrom, auf communication/events/port.
  • 24 Kategorien typischer Ereignisse, darunter der Lebenszyklus der Geräte, Sicherheit (elektronische Bremse, Fremdkörpererkennung, Blockierung), Kalibrierungsfehler, Batteriewarnungen, Sitzungswarnungen, niedrige oder kritische Kontrollhäufigkeit, Eingabevalidierung und Hinweise auf Wertminderung.

Beobachtbarkeit​

  • An Tracy übermittelte Protokollmeldungen, deren Farben je nach Schweregrad bei der Profilierung variieren.
  • Tracy-Zonen auf jedem HTTP-Manager.
  • Ereignisse zur Erfassung der Laufzeiten der Hauptschleife.
  • Konfigurierbares Protokollverzeichnis und Hostname des Servers (Docker-kompatibel).

In Version 3.6 geplant​

  • SDF-Haptik-Effekte (SDF HFX) – Die Grundlagen sind in Version 3.5 bereits vorhanden (Modul, Lebenszyklus, Serialisierung von Befehlen und Zuständen, die von den Modulen bereitgestellt werden), und die öffentliche API wird in Version 3.6 zusammen mit einer umfassenden Dokumentation bereitgestellt.

Verbesserungen​

  • Filterung von Kraftschwankungen – Erkennung von Schwankungen pro Achse, schrittweise Rückgewinnung in 8 Stufen, Eingangsbewertung mit Hysterese und asymmetrischen Entspannungsfenstern.
  • Filter für die Zwangsausführung von Befehlen — konfigurierbar über configure.force_gate.gain über WebSocket oder HTTP, mit einem persistenten Standardwert.
  • Die maximale Frequenz der Hauptschleife wurde für Präzisionsanwendungen auf 32 kHz erhöht.
  • Geringere WebSocket-Nutzgebühren — die Transformations-Teilfelder mit der Standardidentitätswert (position = 0, rotation = identity, scale = 1) werden standardmäßig aus der Ausgabe weggelassen, wodurch die Größe der Nutzdaten reduziert und die Kompatibilität mit der Beschränkung auf 4 KB pro Nachricht bei älteren Unity-Paketen wiederhergestellt wird. Zwei erweiterte Parameter (serialization/explicit_fields, serialization/force_complete_transforms) stellen alle Felder für die Verbraucher wieder her, die diese benötigen.
  • Reduzierte Auslastung der Hauptschleife – Die Verarbeitung von WebSocket-Nachrichten blockiert den Ablauf der Hauptschleife während der JSON-Analyse und der Netzwerkübertragung nicht mehr; die Planung der Sitzungszyklen wurde vor die Serialisierung der Antworten verlegt.
  • Server sind standardmäßig auf „localhost“ beschränkt — Aktivieren Sie den Netzwerkzugang mit der Einstellung communication/bind_all_interfaces.
  • Die Platzhalter in den Geräteselektoren verwenden eine Präfix-Syntax (z. B. inverse* (passen zu allen Geräten der Inverse-Familie).
  • Die Befehle zur Dämpfung wurden im Wörterbuch verschoben configure, neben force_gate.
  • Ein neues Protokollierungssystem mit rotierenden Dateien ersetzt das bisherige und verfügt über ein konfigurierbares Verzeichnis.
  • Von den Modulen bereitgestellte Befehle und Statusmeldungen – Die Module können ihre eigenen Befehle, Konfigurationsfelder und Statusmeldungen in den WebSocket-Frame einfügen, ohne das Basisschema zu ändern.

Korrekturen​

Ein Jahr voller Fehlerbehebungen; die wichtigsten davon sind im Folgenden aufgeführt.

  • Unter bestimmten Bedingungen unregelmäßige Sitzungsgeschwindigkeit.
  • GripHook (Verse Grip Stopper) wurde nicht ordnungsgemäß freigegeben, wenn keine Simulation ausgeführt wurde.
  • Die Wartezeiten von „ Inverse3 “ waren zu aggressiv und führten bei Geräten mit langsamer Startzeit zu Verbindungsabbrüchen.
  • Unkorrektes Beenden des Dienstes unter Windows – der HTTP-Server wurde beim Beenden nicht immer bereinigt.
  • Schleife zur Wiederherstellung der Verbindung, wenn der Dienst Befehle an ältere Firmware-Versionen sendete, die nicht unterstützt wurden.
  • Die Auflistung der Bluetooth-Geräte überlastete das Protokoll auf Systemen mit Bluetooth-Adaptern.
  • Absturz, wenn der Dienst mehrmals hintereinander neu gestartet wurde.
  • Der drahtlose Verse Grip-Dongle funktioniert auf Ubuntu-Laptops nach dem Wechsel in den Ruhezustand und dem Wiederherstellen des Betriebs nicht mehr.
  • Der Vorgang zur drahtlosen Verbindung des Verse Grip unter Linux und macOS wechselt nun ordnungsgemäß zu einer Ausweichmethode, wenn der erste Erkennungsversuch fehlschlägt.
  • Speicherort der Konfigurationsdatei unter macOS — Die Konfiguration ist nun gespeichert in ~/Library/Application Support/ anstelle des bisherigen, falschen Weges.
  • Behandlung des SIGSEGV-Signals unter Linux und macOS – Der Prozess läuft bei aktivierter Multithread-Absturzüberwachung nicht mehr in einer Endlosschleife, wenn fatale Signale auftreten.
  • Überschreiben von Befehlen zwischen Sitzungen – Konfigurationsbefehle einer Sitzung konnten stillschweigend durch die einer anderen Sitzung ersetzt werden; sie werden nun gefiltert und korrekt zusammengeführt.
  • Die Sondenbefehle überschreiben die Konfiguration — Überwachungssitzungen (z. B. „ Haply -Hub“), die probe_position überschreiben die anstehenden Änderungen an Grundeinstellungen, Voreinstellungen oder Profilen nicht mehr unbemerkt.
  • Anzeige der Prototyp-Griffe – das Prototyp-Material wurde fälschlicherweise als Standardgriff statt als individueller Griff angezeigt.
  • Die Konvention der vererbten Matrix set_basis wird nun wieder für Kunden unterstützt, die noch nicht migriert hatten.
  • Inverse3 s Kraftstoß beim Beenden einer Sitzung verursacht keine Restkraftspitzen mehr.
  • Verhaltensweise bei einem Verlust der WebSocket-Verbindung während schneller Verbindungs- und Trennungszyklen.
  • WebSocket session_id wurde in 0 bei bestimmten ausgehenden Nutzlasten.
  • Unter Windows, --log-level wird nun eingehalten, wenn es in Kombination mit --dev (zuvor wurde er stillschweigend auf debug).

Veralterungen​

Sie sind weiterhin funktionsfähig, werden jedoch in einer zukünftigen Hauptversion entfernt. Die Antworten enthalten ein Feld deprecation_warning sofern dies relevant ist.

VeraltetErsatz
POST /force_scalePOST /settings/devices/inverse*/filters/force_scale/gain
POST /gravity_compensationPOST /{device}/{id}/config/gravity_compensation
POST /torque_scalingPOST /{device}/{id}/config/torque_scaling
POST /device_handednessPOST /{device}/{id}/config/handedness
POST /serial_enablePOST /settings/communication/serial/enabled
POST /experimental/features/grip_dropped_simulation_stopperAPI-Parameter
POST /experimental/features/screensaver_enableAPI-Parameter
WebSocket command_data.valuesposition, vector, angles, torques
WebSocket set_angular_torqueset_angular_torques
WebSocket probe_cursor_positionprobe_position
WebSocket set_coordinate_originconfigure.preset
WebSocket set_basis auf Sitzungsebeneconfigure.basis

Kompatibilitätshinweise​

Keine wesentlichen, inkompatiblen Änderungen gegenüber 3.4.19. Zwei kleinere Anmerkungen zu den bestehenden Integrationen:

  1. Zu den veralteten HTTP-Endpunkten gehört nun ein Feld deprecation_warning in der Antwort – Kunden, die die Antwortschemata streng überprüfen, müssen dieses zusätzliche Feld akzeptieren.
  2. Das Feld values in WebSocket command_data ist veraltet, wird aber weiterhin ausgewertet; verwenden Sie vorzugsweise benannte Felder.

Anleitungen und Dokumentation​

  • Neue Tutorials: 05 Positionssteuerung, 06 Kombiniert (Inverse3 + Verse Grip), 07 Basis und Montage, 08 HTTP-Fernkonfigurator, 09 WebSocket-Fernsteuerung, 10 Ereignis-Stream-Listener.
  • Neue Variante „Glaze“ jedes C++-Tutorial (cpp-glz/), zusätzlich zur bestehenden Variante „nlohmann/json“.
  • Alle Anleitungen wurden überarbeitet für die API v3.1 (Port 10001, configure.preset, benannte Befehlsfelder, Hilfefunktionen print_state()).
  • Das alte Tutorial „Verse Grip Stopper“ wurde entfernt – es wurde durch das neue Tutorial „Combiné“ ersetzt.
  • Die öffentliche Dokumentation wurde in den SDK-Handbüchern, der API-Referenz und auf den Hardware-Seiten aktualisiert.