This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
doc:lps:tdoa:protocol [2017-08-31 16:45] arnaud |
doc:lps:tdoa:protocol [2020-05-12 14:02] (current) kimberly |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | <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:// | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| ====== TDoA Anchor protocol V2 ====== | ====== TDoA Anchor protocol V2 ====== | ||
| Line 17: | Line 23: | ||
| ===== Packets format ===== | ===== Packets format ===== | ||
| + | There is only one packet format. This packet is sent at the begining of each time-slot by the anchor allowed to transmit in the timeslot. | ||
| + | |||
| + | <code c> | ||
| + | typedef struct rangePacket_s { | ||
| + | uint8_t type; | ||
| + | uint8_t seqs[8]; | ||
| + | uint32_t timestamps[8]; | ||
| + | uint16_t distances[8]; | ||
| + | } __attribute__((packed)) rangePacket_t; | ||
| + | </ | ||
| + | |||
| + | Assuming the current anchors is of ID **anchor_id** | ||
| + | * **type** is 0x22 | ||
| + | * **seqs[i]** | ||
| + | * **If i == anchor_id** Sequence number of the current packet | ||
| + | * **If i != anchor_id** Sequence number of the latest receive packet from anchor **i** | ||
| + | * **timestamps[i]** | ||
| + | * **If i == anchor_id** Transmit time of the current packet expressed in current anchor clock | ||
| + | * **If i != anchor_id** Receive time of the latest receive packet from anchor **i** expressed in current anchor clock | ||
| + | * **distances[i]** | ||
| + | * **If i == anchor_id** Reserved for future use | ||
| + | * **If i != anchor_id** Time of flight between current anchor and anchor **i** in radio timer tick expressed in current anchor clock | ||
| + | |||
| + | ===== Tag implementation ===== | ||
| + | |||
| + | A TDoA tag is simply an UWB sniffer. A sniffer can use the data in the packets together with the packet receive timestamps to calculate its position. | ||
| + | |||
| + | In order to save some electric power, a tag implementation can choose to track the TDMA timeslots and only listen when packets are transmitted. Though this is not a requirement. | ||
| + | ===== Calculating TDoA ===== | ||
| + | [[doc: | ||