This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
doc:lps:tdoa3:protocol [2018-05-02 13:44] kristoffer created |
doc:lps:tdoa3:protocol [2020-05-12 14:08] (current) kimberly |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== TDoA Anchor protocol V3 (experimental) ====== | ||
| - | |||
| - | <WRAP center round tip 80%> | ||
| - | **NOTE** | ||
| - | |||
| - | This is work in progress. The specifications on this page may change at any time without backwards compatibility. | ||
| + | <WRAP center round important 60%> | ||
| + | This page has deprecated and moved to the new documentation framework of the main Bitcraze website. Please go to [[https:// | ||
| </ | </ | ||
| - | This page describes the [[doc: | + | ====== |
| - | ===== System architecture | + | ===== Design goals ===== |
| - | The protocol is designed to be used with a large number of anchors covering a big area. Each anchor has a limited reach and covers only a small area, but by adding more anchors the system | + | The protocol is designed to be used with a large number of anchors covering a big area. Each anchor has a limited reach and covers only a small area, but by adding more anchors the system |
| Each anchor knows its own position in a global coordinate system and broadcasts this information in time stamped packets that are used by one or more Tags to estimate their position. | Each anchor knows its own position in a global coordinate system and broadcasts this information in time stamped packets that are used by one or more Tags to estimate their position. | ||
| Line 20: | Line 16: | ||
| ===== Packet scheduling ===== | ===== Packet scheduling ===== | ||
| - | Packets are transmitted at random times and collisions are handled by the system. | + | Packets are transmitted at random times and collisions are handled by the receiving party. |
| - | ===== Packets | + | ===== Packet |
| - | There is only one packet format. | + | < |
| + | +--------+--------------------+----------+ | ||
| + | Packet | ||
| + | +--------+--------------------+----------+ | ||
| - | <code c> | + | 7 bytes |
| - | typedef struct { | + | <-------------------------------------------> |
| - | | + | 8 bits 8 bits 32 bits 8 bits |
| - | | + | < |
| - | | + | |
| - | uint32_t rxTimeStamp; | + | Header |
| - | } __attribute__((packed)) remoteAnchorData_t; | + | |
| - | typedef struct { | + | |
| - | uint8_t type; // 0x30 | + | 6 or 8 bytes |
| - | | + | < |
| - | | + | 8 bits 1 bit 7 bits 32 bits 0 or 16 bits |
| + | < | ||
| + | +--------+-------------+--------+-------------+--------------+ | ||
| + | Remote anchor data: | | ||
| + | | ||
| + | </ditaa> | ||
| - | | + | |
| - | | + | * **type:** 0x30 |
| - | } __attribute__((packed)) rangePacket3_t; | + | * **seq:** the sequence number of this packet 0 - 127 |
| - | </ | + | * **txTimeStamp: |
| + | * **remoteCount:** the number of slots in the Remote Anchor Data section that are populated with data, max 8 | ||
| + | | ||
| + | * **id:** the id of the remote anchor | ||
| + | * **hasDistance: | ||
| + | * **seq:** sequence number of latest packet received from the remote anchor 0 - 127 | ||
| + | * **rxTimeStamp: | ||
| + | * **distance: | ||
| + | * **LPP data:** See [[doc: | ||
| ===== Tag implementation ===== | ===== Tag implementation ===== | ||
| - | A TDoA tag is simply an UWB sniffer. A sniffer can use the data in the packets together with the packet receive | + | A TDoA tag is simply an UWB sniffer. A sniffer can use the data in the packets together with the timestamps |
| + | |||
| + | ===== Calculating TDoA ===== | ||
| + | |||
| + | [[doc: | ||