Zum Hauptinhalt springen

Mount- und Workspace-Transformationen

Zwei Transformationen positionieren das Gerät im Anwendungsbereich. Das Verständnis der Pipeline hilft Ihnen dabei, die passende auszuwählen.

Koordinaten-Pipeline​

StufeFunktionEinstellungDauerhaft?
GrundlageOrdnet die Achsen neu an (z. B. Z oben → Y oben)session.configure.basis — siehe Anleitung 08 (HTTP-Fernkonfiguration)Ja
Montage-TransformationPhysischer Versatz des Geräts bei der Montage (Armposition, Drehung, Skalierung)configure.mount oder configure.preset — siehe Anleitung 08 (HTTP-Fernkonfiguration)Ja
ArbeitsplatzumgestaltungAbweichung bei der Kamera- bzw. Szenennavigationcommands.set_transform — siehe Anleitung 09 (WebSocket-Streaming pro Takt)Ja (dauerhaft gespeichert)

Montage-Transformation​

Die Montage beschreibt, wo sich das Gerät physisch befindet – seinen Armversatz, seine Ausrichtung und seine Skalierung. Sie wird einmal festgelegt (oder wenn sich der physische Aufbau ändert) und zur Laufzeit nur selten aktualisiert.

Voreinstellungen (Werkseinstellungen)​

Anstatt die Montage selbst zu berechnen, wählen Sie eine benannte Voreinstellung aus:

VoreinstellungAusgangspositionAusrichtung des Arms
defaultsGerätebasisVorne (Vorderseite des Arms)
arm_frontGerätebasisVorne
arm_front_centeredWorkspace-MitteVorne
led_frontGerätebasisLED-Seite vorne
led_front_centeredWorkspace-MitteLED-Seite vorne
customManuell – Montage selbst festlegen—

Eine Voreinstellung legt Montage, Basis und Workspace-Ursprung in einem Schritt fest.

Montage direkt festlegen​

{
"inverse3": [{
"device_id": "049D",
"configure": {
"mount": {
"transform": {
"position": { "x": 0.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
mount und preset schließen sich gegenseitig aus

Das gleichzeitige Senden beider Angaben in derselben Nachricht ist mehrdeutig – der Dienst lehnt dies ab. Wählen Sie eine der beiden Optionen: ein benanntes preset (die die Montage für Sie festlegt) oder eine explizite mount-Transformation.

Asymmetrie zwischen Befehl und Snapshot

Beim Senden In einer Montage verpacken Sie die Transformation: { "mount": { "transform": { … } } }. Beim Lesen In einer Montage aus dem Snapshot ist sie flach: { "mount": { "position": …, "rotation": …, "scale": … } }. Das ist so beabsichtigt – Befehle verwenden den einheitlichen command_data-Wrapper, Snapshots serialisieren die core::transform direkt.

Arbeitsplatzumgestaltung​

Die Workspace-Transformation ist eine Laufzeit-Drift, die auf die Montage aufgesetzt wird. Ein typischer Anwendungsfall ist die Szenennavigation – Schwenken, Drehen oder Zoomen der Anwendungsansicht, während das Gerät physisch an Ort und Stelle bleibt.

Sowohl Montage- als auch Workspace-Transformationen sind dauerhaft – der Dienst speichert den zuletzt gesendeten Wert. Der Unterschied liegt in Zweck und Leistung:

  • Montage ist darauf ausgelegt, einmal eingerichtet zu werden und dann bestehen zu bleiben – sie beschreibt den physischen Aufbau und ist für seltene Aktualisierungen optimiert.
  • Workspace-Transformation ist darauf ausgelegt, mit hoher Frequenz gestreamt zu werden (z. B. in jedem Frame während der Kameranavigation) – die interne Pipeline ist für diese Aktualisierungsrate optimiert.
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_transform": {
"transform": {
"position": { "x": 1.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
Die Skalierung beeinflusst die Kraftabgabe – oft in der gewünschten Weise

Die Skalierung der Montage oder des Arbeitsbereichs verändert die vom Gerät erzeugte Kraft, da die Skalierung die Eindringtiefe beeinflusst, die zur Berechnung der Kontaktkraft dient. Beispielsweise halbiert eine Skalierung von 2x die Eindringtiefe beträgt ungefähr (die virtuelle Szene ist im Verhältnis zum Verfahrweg des Geräts doppelt so groß), sodass die resultierende Kraft ungefähr halb so groß ist wie bei 1x. Umgekehrt verdoppelt eine Skalierung von 0.5x die Kraft ungefähr.

Das ist in der Regel das gewünschte Verhalten: Beim Herauszoomen aus einer haptischen Szene entstehen naturgemäß schwächere Kontakte (sie sind „weiter entfernt“), und beim Hineinzoomen werden sie stärker. Wenn dies nicht gewünscht ist – etwa wenn die Steifigkeit beim Zoomen des Benutzers konstant bleiben soll –, gleichen Sie dies aus, indem Sie Ihre Kraftverstärkungen umgekehrt proportional skalieren.

Das Navigationsmodul für automatische Drift verwenden

Wenn Sie eine kontinuierliche Fortbewegung benötigen (Blasennavigation, Drift mit Geschwindigkeitsregelung), verwenden Sie das Navigationsmodul, anstatt set_transform in jedem Takt manuell zu streamen – es übernimmt für Sie die Physik, das haptische Feedback und die Begrenzung auf den Arbeitsbereich.