This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
doc:lps:toda3 [2018-06-15 08:08] kristoffer |
doc:lps:toda3 [2018-10-31 18:21] kristoffer |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== TDoA 3 set up ====== | ====== TDoA 3 set up ====== | ||
- | <WRAP center round tip 80%> | + | TDoA 3 is part of the official Crazyflie and LPS Node firmware releases since 2018.10. |
- | **NOTE** | + | |
- | The TDoA3 mode is experimental. The protocol and implementation might change but is fairly stable. | + | |
- | </ | + | |
- | ===== Compile | + | The Crazyflie will automatically detect that the positioning system is using TDoA3 and switch to the correct mode. |
+ | If you want to force the Crazyflie to use TDoA3 on startup, use the LPS_TDOA3_ENABLE=1 compile option | ||
- | To try it out you will have to do the following: | + | ==== The LPS Nodes ==== |
- | ==== The Crazyflie ==== | + | * Configure the Nodes as anchors, and set the mode to TDoA 3 |
+ | * Set anchor positions, see below. | ||
- | * Get the latest source code for the firmware from [[https:// | + | ===== Setting anchor positions ===== |
- | * Compile for TDoA3 and force the TDoA mode with '' | + | |
- | * Flash the Crazyflie with '' | + | |
- | ==== The LPS Nodes ==== | + | Anchor positions can be set by the python client or the tool in the lps-node-firmware repo. |
+ | You might have to move the Crazyflie close to all anchors to transfer the positions from the Crazyflie. | ||
+ | |||
+ | ===== Sniffing ===== | ||
+ | |||
+ | If an anchor is configured to act as a sniffer, it can be used to listen to the UWB messages in the system. To set an anchor to sniffer mode, connect via USB and configure it to sniffer mode. | ||
+ | |||
+ | ==== Basic sniffing ==== | ||
+ | |||
+ | Connect the sniffer via USB and check in /dev which port that it uses. Use this as the first argument | ||
+ | The second argument is the output format, use yaml | ||
+ | example: '' | ||
+ | |||
+ | ==== TDoA 3 parsing ==== | ||
+ | |||
+ | Pipe the yaml into the TDoA 3 decoder to see TDoA 3 data unpacked | ||
+ | |||
+ | example: '' | ||
+ | |||
+ | This will show all data that the sniffer receives. To limit the output it is possible to filter which anchors to show. Add one or more ids at the end to only show data from only these anchors. | ||
+ | |||
+ | example: '' | ||
+ | |||
+ | ==== Time of flight and anchor to anchor distance | ||
+ | |||
+ | By piping the TDoA 3 data into the TOF tool, the measured anchor to anchor distances will be displayed. By adding the ' | ||
+ | |||
+ | example: '' | ||
- | * Get the latests source code for the firmware from [[https:// | ||
- | * Compile | ||
- | * Flash the nodes using '' | ||
- | * Configure the Nodes as anchors, and set the mode to TDoA 3 | ||
- | * Anchor positions can be set using the python client (0 - 7) but if you have more anchors you will have toools/ | ||
===== 2D positioning ===== | ===== 2D positioning ===== | ||
Line 29: | Line 48: | ||
Recompile the Crazyflie firmware using the LPS_2D_POSITION_HEIGHT compile flag set to the desired Z. | Recompile the Crazyflie firmware using the LPS_2D_POSITION_HEIGHT compile flag set to the desired Z. | ||
- | For instance '' | + | For instance '' |
- | ===== Longer range ===== | + | ===== Longer range and lower bitrate |
+ | |||
+ | Note: this is experimental functionality that is not fully tested or might not work as expected. | ||
In this mode the UWB bitrate is lower and the data of messages can be read at a longer distance. The packet rate will be reduced though. | In this mode the UWB bitrate is lower and the data of messages can be read at a longer distance. The packet rate will be reduced though. | ||
- | Recompile | + | Recompile |
- | Example: '' | + | Example: '' |
+ | |||
+ | There is a setting for the bitrate in the Anchor configuration when connecting using USB. | ||
===== Longer preamble ===== | ===== Longer preamble ===== | ||
+ | |||
+ | Note: this is experimental functionality that is not fully tested or might not work as expected. | ||
It is possible to use a longer preamble, this will also reduce packet rate. There is no compile flag for this setting, it requires some code modifications in the Crazyflie and the anchors. | It is possible to use a longer preamble, this will also reduce packet rate. There is no compile flag for this setting, it requires some code modifications in the Crazyflie and the anchors. | ||
+ | The preamble is used by the anchor radios to detect messages and a longer preamble increase the probability and thus the useful distance. | ||
+ | Note that the radios might detect the preamble but fail at reading the data of the packet (see lower bitrate above). The " | ||
==== The Crazyflie ==== | ==== The Crazyflie ==== | ||
Line 52: | Line 79: | ||
==== The LPS Nodes ==== | ==== The LPS Nodes ==== | ||
- | * Find the src/uwb.c file | + | * There is a configuration setting for the preamble length |
- | * Locate the call to dwEnableMode() | + | |
- | * Change the second argument to MODE_LONGDATA_MID_ACCURACY | + | |
- | * Find the src/ | + | |
- | * Locate the line where PREAMBLE_LENGTH_S is defined | + | |
- | * Change it to 1024 bits: #define PREAMBLE_LENGTH_S ( 1024 * 1017.63e-9 ) | + | |
- | * Compile and flash | + | |
- | ===== Sniffing ===== | ||
- | |||
- | If an anchor is configured to act as a sniffer, it can be used to listen to the UWB messages in the system. To set an anchor to sniffer mode, connect via USB. | ||
- | |||
- | ==== Basic sniffing ==== | ||
- | |||
- | Connect the sniffer via USB and check in /dev which port that it uses. Use this as the first argument | ||
- | The second argument is the output format, use yaml | ||
- | example: '' | ||
- | |||
- | ==== TDoA 3 parsing ==== | ||
- | |||
- | Pipe the yaml into the TDoA 3 decoder to see TDoA 3 data unpacked | ||
- | |||
- | example: '' | ||
- | |||
- | This will show all data that the sniffer receives. To limit the output it is possible to filter which anchors to show. Add one or more ids at the end to only show data from only these anchors. | ||
- | |||
- | example: '' | ||
- | |||
- | ==== Time of flight ==== | ||
- | |||
- | By piping the TDoA 3 data into the TOF tool, the measured anchor to anchor distances will be displayed. By adding the ' | ||
- | |||
- | example: '' |