Phone Controller
ConnectivityPhoneController ist ein Quellen-Block, der jedes Smartphone in einen drahtlosen Joystick mit zusätzlichem, unabhängigem Gierregler (Yaw) verwandelt. Wird der Block auf der Leinwand platziert, erzeugt er einen Kopplungs-QR-Code; nach dem Scannen öffnet sich auf dem Telefon eine Controller-Oberfläche mit einem großflächigen Touch-Joystick und einem horizontalen Yaw-Schieberegler darunter. Das Smartphone streamt normalisierte X/Y/Yaw-Steuerwerte (−1…+1) mit ~30 Hz über denselben Peer-to-Peer-WebRTC-Kanal in die Simulation, der auch vom RemoteSensor-Block genutzt wird — kabellos und ohne App-Installation.
Für das Joystick-Feld stehen auf dem Telefon zwei Steuermodi zur Verfügung (der Yaw-Regler verhält sich in beiden identisch):
- Touch (Standard): Daumenbedienung auf dem On-Screen-Joystick. Beim Loslassen federt der Regler in die Mitte zurück.
- Tilt: Nutzt die Lagesensoren des Smartphones (DeviceOrientation). Neigen nach links/rechts steuert X, Neigen nach vorne/hinten steuert Y. Die neutrale Position wird beim Aktivieren des Modus kalibriert; durch Antippen der Fläche kann jederzeit neu zentriert werden.
Der Yaw-Streifen ist ein eigenständiges horizontales Bedienelement unterhalb des Pads — nach links/rechts ziehen, beim Loslassen federt er auf 0 zurück. Er ist unabhängig vom Touch- oder Tilt-Modus stets aktiv.
Verwenden Sie diesen Block für interaktive Demonstrationen, bei denen eine Mausbedienung unzureichend ist: Steuerung einer simulierten Drohne, Lenkung eines Fahrzeugmodells oder manuelle Vorgabe von Sollwerten in Regelkreisen. Seine X/Y-Ausgangsports tragen identische Bezeichner wie jene von Joystick2D, wodurch er überall als drahtloser 1:1-Ersatz fungieren kann — einschließlich der Vorlage Fly the Quadcopter (Phone).
Ein- & Ausgänge
| Direction | ID | Label | Typ | Status |
|---|---|---|---|---|
| ← Out | x |
X | number | Output |
| ← Out | y |
Y | number | Output |
| ← Out | yaw |
Yaw | number | Output |
Parameter
| Parameter | Label | Typ | Standardwert | Beschreibung |
|---|---|---|---|---|
playoutDelay |
Playout Delay (ms) | number | 80 |
Network jitter buffer. Lower = more responsive control, higher = smoother signal on flaky connections. |
interpolation |
Interpolation | select | linear |
How to reconstruct the control signal between received joystick packets. |
outputLabels |
Output Labels | vector | x,y,yaw |
Anwendungsbeispiele
Smartphone-Joystick — Lage-Demo
Laden Sie die integrierte Vorlage Phone Joystick — Attitude Demo (aus dem Block-Beispielmenü). Ihr Daumen steuert die Fluglage eines simulierten Quadcopters: X dient als Roll-Sollwert, Y als Nick-Sollwert (Pitch), jeweils moduliert durch eine Lagedynamik 2. Ordnung und auf einer 3D-Kardanaufhängung (Gimbal) visualisiert:
PhoneController ──► [X] ──► Gain(30) ──► 2nd Order System ──► Gimbal3D [roll]
──► [Y] ──► Gain(30) ──► 2nd Order System ──► Gimbal3D [pitch]
Scannen Sie den QR-Code, tippen Sie auf Grab Control, starten Sie die Simulation — die Drohne reagiert direkt auf Ihren Daumen.
Die Quadcopter-Vorlage vollständig drahtlos steuern
Die Vorlage Fly the Quadcopter (Phone) (Beispielmenü → Regelungssysteme) verbindet alle drei Ausgänge — x/y mit den Roll-/Nick-PID-Regelkreisen (über ein Gain-Element, analog zum internen Faktor von Joystick2D) und yaw direkt mit dem Gier-PID-Regler — und steuert die komplette 3-Achs-Regelung samt Motormischer und 3D-Gimbal an. Zusätzliche Schieberegler auf der Leinwand entfallen.
Manuelle Sollwertvorgabe für einen PID-Regelkreis
PhoneController ──► [Y] ──► Gain ──► (setpoint) Subtraction ──► PIDController → plantHinweise & Best Practices
- Quellenblock: Alle drei Kanäle sind Ausgangsports (rechte Seite). X ist nach rechts positiv, Y nach vorne/oben positiv (Joystick nach oben drücken liefert +1), Yaw ist nach rechts positiv.
- Feste 30-Hz-Übertragung: Das Smartphone sendet kontinuierlich — auch in der Ruheposition —, um den Puffer aktiv und die Latenzschätzung stabil zu halten.
- Totzone: Eine kleine Totzone (±0,02) auf dem Smartphone garantiert, dass ein ruhender Daumen exakt den Wert 0 liefert.
- Simulation wartet auf Kopplung: Wie bei allen Echtzeit-Hardwareblöcken wird der Simulationsstart angehalten, bis das Smartphone gekoppelt ist und die ersten Datenpakete eingetroffen sind.
- WebRTC erforderlich: Smartphone und Desktop benötigen Internetzugang für das PeerJS-Signalisierungs-Handshake. Eigene PeerJS-Server werden über dieselben
localStorage-Schlüssel wie bei RemoteSensor unterstützt (blockwerk_peer_host/blockwerk_peer_port/blockwerk_peer_path/blockwerk_peer_secure). - Ein Controller pro Blockdiagramm: Die Kanäle X/Y/Yaw sind global (
remote:joy.x/remote:joy.y/remote:joy.z); zwei PhoneController-Blöcke würden dieselben Werte empfangen. - Ausgangswerte im getrennten Zustand: Alle drei Ports halten den Wert
0, bis das Telefon verbunden ist und Daten übermittelt.
Verwandte Blöcke
- RemoteSensor: Beschleunigungsmesser, Gyroskop, Magnetometer, Barometer und GPS des Telefons anstelle von Steuerhebeln streamen.
- ExternalInput: Schlanke Quelle für manuell injizierte oder skriptbasierte Zahlenwerte.
- Gimbal3D: 3D-Lagevisualisierung — das ideale Ziel für Demonstrationen dieses Blocks.