User Tools

Site Tools


We're currently working on updating the documentation for the Loco positioning system. Util the documentation is completed you can find the old early access documentation here.

Loco positioning system

The Loco Positioning system (LPS) project is a set of hardware and software designed to implement a local positioning system (LPS). Current hardware comprises one LPS Node and one LPS Deck. Both are based on the Decawave DWM1000 chip.

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.

The system supports a number of different modes:

Getting started

This getting started documentation is intended to guide you from receiving your Loco Positioning Indoor Explorer Bundle to having an autonomous Crazyflie 2.0.


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

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


In order to illustrate how to set up a system we document a reference system and how we've set it up. The referance system is base on the Indoor explorer bundle which contains the following:

  • 6 x Loco positioning node
  • 1 x Crazyflie 2.0
  • 1 x Loco positioning deck
  • 1 x Crazyradio PA

Preparing the Crazyflie 2.0

The Kalman filter used position Crazyflie in the LPS is not yet part of the default firmware so you need to compile the Crazyflie firmware with Kalman support activated. Clone or pull the latest version from Github and put the following lines in your tools/make/
ESTIMATOR = kalman

Compile and flash the Crazyflie:

make clean
make cload

For “make cload” to work, you need to have the Crazyflie client cloned and installed in the same folder as the Crazyflie firmware.

Preparing the LPS nodes

Use the LPS configuration tool to update the firmware and set the addresses of the nodes from 0-5. Note the address on the nodes.

The nodes should be placed at least 15 cm away from walls or ceiling. In our reference set-up we accomplish this by using these 3D printed stands.

Power the anchors with 5V using either the micro-USB connector, the terminal or the DJ-jack.

Note; If you're not following our reference set-up for placing the nodes try to space them out at lest 2 meters apart and at different heights (see Dilution Of Precision).

The position in X/Y/Z of the anchor UWB antenna needs to be measured. To do so chose an origin (in a square/rectangular room one of the corners is a good choice), choose your axis to be a right-handed coordinates. Finally you can measure the X/Y/Z position of the anchors in this coordinate system. Using a corner as origin means that you can use a laser-ranger against the walls to get a direct reading of the coordinates.

Reference set-up

In our reference setup we have placed 3 anchors above and 3 anchors bellow the flight area, shaped in inverse triangles. This allows to get good accuracy in X, Y and Z.

This is the reference system from which measurement where taken:

Verifying system setup using the PC-client

The Loco Positioning tab in the PC-client can be used to validate anchor positions and to verify that the estimated position is reasonable.

Measurements taken from our reference set-up

To validate the system we took a series of measurement from the reference system. You can see the results in the page Measurements of accuracy and precision of the Loco Positioning system.

doc/lps/index.txt · Last modified: 2017-03-28 15:19 by bjorn