This page has deprecated and moved to the new documentation framework of the main Bitcraze website. Please go to [[https://www.bitcraze.io/documentation/system/]] or [[https://www.bitcraze.io/documentation/repository/]] ====== 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: * [[projects:lps:index|Hardware documentation]] * [[https://www.bitcraze.io/getting-started-with-the-loco-positioning-system|Getting Started Guide]] * [[https://github.com/bitcraze/lps-node-firmware|Loco Positioning Node firmware]] * [[https://github.com/bitcraze/crazyflie-firmware|Crazyflie 2.0 firmware]] ====== Terminology ====== 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 ([[projects:lps:deck|Loco positioning deck]], [[projects:lps:node|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 [[http://www.decawave.com/|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 ===== * [[doc:lps:twr-reference-setup|Reference set-up]]: Our current reference set-up showing node positioning and measurements * [[doc:lps:anchor-setup|Anchor set-up]]: How to set-up, configure and mount the anchor * [[doc:crazyflie:client:pycfclient:index#firmware_configuration|Configure]] the Crazyflie 2.0 in 2Mbit radio mode. This reduces interference with the UWB radio. If the configuration is changed a restart of the Crazyflie 2.0 is required. * [[doc:lps:starting-position|Crazyflie starting position]]: How to place the Crazyflie when using the LPS * [[doc:lps:configure-mode|Configure LPS system mode wirelessly]] * [[doc:lps:toda3|TDoA 3 set up]] * [[doc:lps:anchor-low-level-config|Anchor low level configuration]] ===== Principles ===== * [[doc:lps:tdoa:principles|TDoA positioning principles]]: A description of how positioning using TDoA works * [[doc:lps:tdoa:tdoa2-vs-tdoa3|TDoA2 VS TDoA3]]: A description the differences between TDoA2 and TDoA3 ===== Protocols ===== * [[doc:lps:lpp#two_way_ranging|TWR protocol]]: Documents the protocol used for Two Way Ranging (TWR) * [[doc:lps:tdoa:protocol|TDoA 2 protocol]]: Documentation of the TDoA 2 anchor protocol * [[doc:lps:tdoa3:protocol|TDoA 3 protocol]]: Documentation of the TDoA 3 anchor protocol ===== Implementations ===== * [[doc:lps:tdoa3:implementation|TDoA 3 implementation]]: Documentation of the TDoA 3 implementation ===== Tools ===== For working with the Loco positioning system there's a variety of tools available: * [[doc:crazyflie:client:pycfclient:index#loco_positioning|Crazyflie Python Client]] - Used to set the anchor positions, validate anchor positions and to verify that the estimated position is reasonable * [[doc:lps:tools#lps_configuration_tool|LPS configuration tool]] - Used for firmware upgrades, changing mode and setting the address of Loco positioning nodes * [[doc:lps:ros|ROS]] - Used for controlling Crazyflies * [[https://github.com/bitcraze/crazyflie-lib-python/blob/master/examples/autonomousSequence.py|Autonomous sequence sctripting]] - Example showing how to use the [[https://github.com/bitcraze/crazyflie-lib-python|Crazyflie Python Library]] to create scripted autonomous flights