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:tdoa3:protocol [2018-05-02 13:45] kristoffer |
doc:lps:tdoa3:protocol [2018-10-31 18:10] kristoffer |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== TDoA Anchor protocol V3 (experimental) ====== | ====== 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. | ||
- | |||
- | </ | ||
- | |||
- | This page describes the [[doc: | ||
===== System architecture ===== | ===== System architecture ===== | ||
- | 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 24: | Line 15: | ||
===== Packet format ===== | ===== Packet format ===== | ||
- | 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 |