User Tools

Site Tools


doc:lps:index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
doc:lps:index [2017-05-11 14:31]
bjorn
doc:lps:index [2019-03-22 12:39]
kristoffer
Line 1: Line 1:
-<WRAP center round info> +====== Loco positioning system ======
-**IMPORTANT**+
  
-We're currently working on updating the documentation for the Loco positioning system. Until the documentation is completed you can find the early access documentation [[doc:lps:earlyaccess|here]]. +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: 
-</WRAP>+  * [[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]]
  
-====== Loco positioning system ======+====== Terminology ======
  
-The Loco Positioning system (LPS) project is set of hardware and software designed to implement a local positioning system (LPS). Current hardware comprises one [[projects:lps:node|LPS Node]] and one [[projects:lps:deck|LPS Deck]]. Both are based on the Decawave DWM1000 chip.+To make the documentation easier to grasp there'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 =====+====== 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. 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.
  
-The system supports a number of different modes: +====== Documentation subjects ======
-  * ToA ([[doc:lps:lpp|protocol]]) +
-  * TDMA (experimental) +
-  * [[doc:lps:tdoa|TDoA]] (experimental)+
  
-===== Getting started =====+===== 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]]
  
-This getting started documentation is intended to guide you from receiving your Loco Positioning Indoor Explorer Bundle to having an autonomous Crazyflie 2.0.+===== Principles ===== 
 +  * [[doc:lps:tdoa:principles|TDoA positioning principles]]: A description of how positioning using TDoA works 
 +  
  
-==== Tools ====+===== 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: 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 for setting updebugging and flying+  * [[doc:crazyflie:client:pycfclient:index#loco_positioning|Crazyflie Python Client]] - Used to set the anchor positionsvalidate 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: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   * [[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
-It is also possible to script movements using the [[https://github.com/bitcraze/crazyflie-lib-python|Crazyflie Python Library]] ([[https://github.com/bitcraze/crazyflie-lib-python/blob/master/examples/autonomousSequence.py|example]]+
- +
-==== Prerequisites ==== +
- +
-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 based on the [[https://store.bitcraze.io/collections/bundles/products/indoor-explorer-bundle|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 [[https://github.com/bitcraze/crazyflie-firmware|Github]] and put the following lines in your tools/make/config.mk: +
-<file make config.mk> +
-ESTIMATOR = kalman +
-</file> +
- +
-Compile and flash the Crazyflie: +
-<code> +
-make clean +
-make +
-make cload +
-</code> +
- +
-<WRAP center round info> +
-For "make cload" to work, you need to have the [[https://github.com/bitcraze/crazyflie-clients-python|Crazyflie client]] cloned and installed in the same folder as the Crazyflie firmware. +
-</WRAP> +
- +
-==== Preparing the LPS nodes ==== +
- +
-Use the [[doc:lps:tools#lps_configuration_tool|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 [[https://github.com/bitcraze/bitcraze-mechanics/blob/master/LPS-anchor-stand/anchor-stand.stl|these]] 3D printed stands. +
- +
-{{:doc:lps:locorefdist.png?400|}} +
- +
-Power the anchors with 5V using either the micro-USB connector, the terminal or the DJ-jack. +
- +
-{{:projects:lps:dwm-setup.jpg|}} +
- +
-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 [[https://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)|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 [[https://en.wikipedia.org/wiki/Right-hand_rule|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. +
- +
-Use the LPS tab of the Crazyflie client to store the physical anchor positions in the anchors. The communication from the client to the anchors is bridged through a Crazyflie, so you must have a Crazyflie with an Loco Positioning deck connected to the client. +
- +
-==== 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: +
-{{:doc:lps:locorefv3.png|}} +
- +
-{{ :doc:lps:crazyflie_isometric_drawing_2.png?600 |}} +
- +
- +
-==== Verifying system setup using the PC-client ==== +
- +
-The [[doc:crazyflie:client:pycfclient:index#loco_positioning|Loco Positioning tab in the PC-client]] is used to set the anchor positions, 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 [[misc:investigations:lps-precision|Measurements of accuracy and precision of the Loco Positioning system]].+
  
doc/lps/index.txt · Last modified: 2020-05-12 14:56 by kimberly