User Tools

Site Tools


Loco positioning system

The Loco Positioning system (LPS) project is a set of hardware and software designed to implement a local positioning system. This wiki page aims at giving reference documentation for various parts of the system, for other documentation please see the following:


To make the documentation easier to grasp there's a few terms that should be clear:

  • Deck and node: These refer to pieces of hardware (Loco positioning deck, Loco positioning node)
  • Tag and anchor: These refer to roles when ranging (i.g depending on configuration a node can act as either a tag or an anchor)
  • Ranging mode: The protocol used for communicating between tags/anchors to create a measurement for the range (i.g TWR or TDoA)

System overview

The local positioning system is based on the DecaWave DWM1000 module. The system consists of a number of anchors that are continuously pinged from the Crazyflie 2.0 deck that's based on the same module. The anchors are placed around the room at known positions.

Documentation subjects

System set-up


  • TWR protocol: Documents the protocol used for Two Way Ranging (TWR)


For working with the Loco positioning system there's a variety of tools available:

  • Crazyflie Python Client - Used to set the anchor positions, validate anchor positions and to verify that the estimated position is reasonable
  • LPS configuration tool - Used for firmware upgrades, changing mode and setting the address of Loco positioning nodes
  • ROS - Used for controlling Crazyflies

It is also possible to script movements using the Crazyflie Python Library (example)

Experimental functionality

  • TDoA: How to build custom Crazyflie 2.0 firmware and enable TDoA mode in the anchors
doc/lps/index.txt · Last modified: 2017-05-26 15:30 by macke