Skip to content

Meta Quest Teleoperation: Python subscriber returns None for controller telemetry and web dashboard is missing features #320

Description

@edgarwelteKIT

Bug Description
When attempting to run the teleoperation stack using SimPublisher and the IRIS Meta Quest app, the Python subscriber fails to receive controller telemetry data, continuously returning None.
I am testing this setup primarily on a Desktop PC running an environment within a Docker container on Ubuntu 22.04. I also tried troubleshooting on a secondary Laptop to see if it behaved differently. Both computers and the headset are connected to the same dedicated local router. Even though the headset seems to partially connect to the network, the telemetry silently fails on my active development machine, the VR scene rendering remains incomplete, and functional components are missing from the web dashboard.

Environment Setup
Hardware:

  • Primary Testing Machine: Desktop PC (Connected via Ethernet, running Docker on Ubuntu 22.04m, disabled firewall)
  • Secondary Testing Machine: Laptop (Connected via Ethernet, Ubuntu 22.04, disabled firewall)
  • Headset: Meta Quest 3s
  • Network: Dedicated local router. The testing hosts and the Quest are configured on the same subnet and maintain bidirectional ping connectivity.
    Software:
  • Robot Control Stack (RCS): Sourced from the official RCS repository
  • SimPublisher: Sourced from the official RCS repository
  • XR Application: IRIS Meta Quest App (v1.5)
  • Python Environment: Conda (rcs environment)

Steps to Reproduce
Ensure the primary testing PC and Meta Quest 3 are in the same subnetwork and verify bidirectional ping.
Check the local machine IP using ip addr in the terminal and note the IP address of the network interface in the same subnet as the Quest. Update the configuration variable in examples/teleop/franka.py: MQ3_ADDR = "<your_pc_ip>"
Start the IRIS Meta Quest app on the Quest (located in the Library under "Unknown Sources" after installation).
Execute the quest_align_frame.py script once. Navigate to the local dashboard link printed at the top of the terminal output (typically http://127.0.0.1:5000/) and click "Scan".
Once the Meta Quest is discovered, click "Change Name", input RCSNode, and click "OK" (this sequence is only required once).
Restart both the IRIS app on the headset and the Python script on the host.

Expected Next Steps (Per Documentation):
The script should begin printing numerical arrays representing the controller poses, confirming an active connection.
Upon putting on the Quest, a white sphere with coordinate axes should display within the environment (red representing x, green representing y, and blue representing z).
The right controller is used to align the orientation of the coordinate axes to match the physical robot setup (for Franka: x-front, y-left, z-up).
The user selects the "teleportation scene" button on the active web dashboard.
The alignment script is terminated, and the primary teleoperation script franka.py is executed.

Actual Behavior
The node renaming process to RCSNode registers successfully on the network.
Upon restarting and executing quest_align_frame.py, the console continuously outputs None instead of streaming the expected controller tracking vectors.
The web dashboard initializes but fails to render the "teleportation scene" action button.
Inside the VR headset environment, the virtual Franka robot model loads into the scene successfully, but no tracking data, axis alignment visualizers, or downstream interactions occur.

If you need more information let me know.
Best regards
Edgar

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions