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
configureausdrücklich für einmalige Bestellungen —basis,preset,mount,force_gate,dampingpro Gerät sowieprofileetbasispro Sitzung sind nun alle zusammengefasst inconfigure. 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 aufcustom. - Benannte Steuerfelder —
position,vector,anglesettorquesersetzen die allgemeine Tabellevalues. set_angular_torquesersetzenset_angular_torque(im Singular veraltete Form).- Erweiterungen der Sitzungsrahmen — Die Session-Frames der Versionen v3.0 und v3.1 übertragen nun erweiterbare Objekte.
config,stateetstatus; zu den neuen Ausgabefeldern gehörencurrent_cursor_force,current_cursor_position,current_angular_torques,current_angular_position,control_domain,control_mode,transform,transform_velocity, Felderconfig.*bereichert undstatus.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 /settingset/settings/*— Vollständige API mit Schlüssel-Wert-Parametern.GET /sessions/{session}etGET/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_dataJSON oder WebSocket – der für das eine Protokoll geschriebene Code funktioniert auch mit dem anderen. - Aktivierbarer Umschlag über
?format=jsonauf jeder beliebigen Straße;/settings*etGET /home_returnverwenden{ok, error, data}Standardmäßig. Verwenden Sie?format=plainum 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, nebenforce_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_basiswird 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_idwurde in0bei bestimmten ausgehenden Nutzlasten. - Unter Windows,
--log-levelwird nun eingehalten, wenn es in Kombination mit--dev(zuvor wurde er stillschweigend aufdebug).
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.
| Veraltet | Ersatz |
|---|---|
POST /force_scale | POST /settings/devices/inverse*/filters/force_scale/gain |
POST /gravity_compensation | POST /{device}/{id}/config/gravity_compensation |
POST /torque_scaling | POST /{device}/{id}/config/torque_scaling |
POST /device_handedness | POST /{device}/{id}/config/handedness |
POST /serial_enable | POST /settings/communication/serial/enabled |
POST /experimental/features/grip_dropped_simulation_stopper | API-Parameter |
POST /experimental/features/screensaver_enable | API-Parameter |
WebSocket command_data.values | position, vector, angles, torques |
WebSocket set_angular_torque | set_angular_torques |
WebSocket probe_cursor_position | probe_position |
WebSocket set_coordinate_origin | configure.preset |
WebSocket set_basis auf Sitzungsebene | configure.basis |
Kompatibilitätshinweise
Keine wesentlichen, inkompatiblen Änderungen gegenüber 3.4.19. Zwei kleinere Anmerkungen zu den bestehenden Integrationen:
- Zu den veralteten HTTP-Endpunkten gehört nun ein Feld
deprecation_warningin der Antwort – Kunden, die die Antwortschemata streng überprüfen, müssen dieses zusätzliche Feld akzeptieren. - Das Feld
valuesin WebSocketcommand_dataist 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, Hilfefunktionenprint_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.