Author: Dominik Grzelak

Guest post by Dominik Grzelak, Dresden University of Technology, Germany

This blog post accompanies a research article published in the XR Salento 2025 proceedings (Springer LNCS).

Setting up a mobile indoor positioning system with the Crazyflie platform—specifically using the Loco Positioning System (LPS)—typically involves walking through a large room with a laser measure, sticky notes, and a bit of patience.

That was exactly my situation at work when setting up UWB anchors for mobile robot demonstrations, which often had to be relocated to different rooms.
And it got me thinking—what if there were a more intuitive, flexible way to define and deploy these setups, especially in labs or educational settings where reconfigurability is key?

This question led to the development of XR-PALS, a mixed reality tool that simplifies the entire LPS configuration process.
Instead of manually measuring anchor positions and inputting coordinates into cfclient, XR-PALS allows users to create and sync virtual and physical setups almost seamlessly—just by moving virtual anchors in space using a VR headset.

Diagram showing the three-step setup for the Bitcraze Loco Positioning System: 1) Connect anchors, 2) Configure the system, 3) Track the Crazyflie drone in 3D space.
Three-step setup process for the Bitcraze Loco Positioning System, illustrating anchor connection, system configuration, and 3D Crazyflie drone tracking.

What is XR-PALS?

XR-PALS (XR-Powered Assistance for Loco Positioning Systems) is a tool we (Victor Victor and Dominik Grzelak) developed for defining cyber-physical spaces using UWB anchors on tripods.
It runs on a passthrough VR headset (we used Meta Quest 3), allowing users to visualize the LPS layout and manipulate anchor placements in a virtual 3D environment until they are virtually and physically aligned.

Once everything is aligned, a single tap on the “Export” button sends the virtual anchor positions to a Rust-based middleware service running on a host machine within the same network as the VR headset.

It’s fast, visual, and eliminates the need for hand-measuring coordinates for our mobile robot demonstrators.

You can watch the system in action in our demo video:

Why We Built It

Usually, the LPS setup involves manual measurements and manual data entry in cfclient.
This is time-consuming when environments change frequently—as is often the case in education and research.

With XR-PALS, the goals are to:

  • Speed up setup – Users in our study completed setups significantly faster.
  • Reduce error – Anchor placement is visual and interactive. No calculations needed.

How It Works

XR-PALS consists of two main components:

  1. VR application
    Runs on a VR headset and displays the full anchor layout. Users can drag anchors, view distances, toggle info layers, and adjust alignment using natural hand gestures.
  2. Middleware service
    A Rust-based REST API that basically bridges the VR app with the LPS anchors. This service receives the coordinates and remotely updates the LPS anchors—enabled by the open-source nature of the LPS firmware: bitcraze/lps-node-firmware. Coordinates are exported as YAML that can be imported by cfclient.
Diagram showing the system architecture for the XR PALS setup, including UWB anchors, Crazyflie drone, tracking system, and XR interface components connected through data and control flows.
System architecture.
Images of XR PALS user interactions, showing a person wearing an XR headset controlling a Crazyflie drone in a physical space with visual overlays and positional feedback.
User interactions.

Real-World Evaluation

We compared XR-PALS against a traditional laser measurement tool in a user study involving 18 participants from our Faculty of Computer Science.
Each participant had to configure a LPS layout (trapezoidal or rectangular) using one of the two tools.

Results:

  • XR-PALS users completed the task faster
  • Fewer measurement errors
  • Higher usability scores and confidence
  • Lower cognitive load, especially for the trapezoidal layout
Bar chart comparing average task completion times for XR-PALS and laser methods, showing XR-PALS with shorter times. Lower values indicate better performance.
Bar chart comparing task completion times between XR-PALS and laser. Lower values are better.
Bar chart comparing average measurement errors for XR-PALS and laser methods, showing XR-PALS with lower errors. Lower values indicate better accuracy.
Measurement error comparison between XR-PALS and Laser. Lower values are better.

The minimal loss in accuracy compared to the time saved is not dramatic for our use cases, compared to the time saved—especially when more participants were able to correctly determine the coordinates overall.
In general, users were more confident using VR glasses than a laser measurement device.

Summary and What’s Next

So if you’re working with dynamic robot setups or swarm experiments, XR-PALS might save you a lot of setup time.

The app works natively with the Bitcraze Loco Positioning System and, so to speak, extends the capabilities of the cfclient.

Here’s what we’re currently thinking about:

  • Supporting larger anchor sets within the app (currently limited to 8 anchors)
  • Improving user interactions based on feedback from our user study
  • Displaying anchor diagnostics (e.g., latency, power levels)
  • Simpler layout reusability (layouts can be saved and shared only via the computer)
  • Adding support for LPS-ROS
  • Releasing the Code here
  • Better casing and docking solutions for the nodes (3D printing)

Check out the project page for updates—and feel free to reach out if you’d like to share how you’re using the LPS.