User Tools

Site Tools


doc:lps:tdoa3:protocol

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
Last revision Both sides next revision
doc:lps:tdoa3:protocol [2018-05-02 14:31]
kristoffer
doc:lps:tdoa3:protocol [2019-09-05 14:45]
kimberly
Line 1: Line 1:
-====== TDoA Anchor protocol V3 (experimental) ====== 
  
-<WRAP center round tip 80%> +<WRAP center round important 60%> 
-**NOTE**+This page is deprecated and is moved to the main Bitcraze website. Please go to:
  
-This is work in progressThe specifications on this page may change at any time without backwards compatibility+ [[ 
 +https://www.bitcraze.io/docs/lps-node-firmware/master/tdoa3_protocol/ 
 +]]
  
 </WRAP> </WRAP>
  
-This page describes the [[doc:lps:tdoa3|TDoA]] anchor protocol V3.+====== TDoA Anchor protocol V3 ======
  
-===== 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 will be able to cover an (virtually) unlimited area. At any point in the covered area, 5-10 anchors should be within range of a Tag. +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 can cover an (virtually) unlimited area. At any point in the covered area, 5-10 anchors should be within range of a Tag. 
  
 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 21:
 ===== 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.
  
 ===== Packet format ===== ===== Packet format =====
- 
-There is only one packet format.  
  
 <ditaa> <ditaa>
-              +--------+--------------------+ +                    +--------+--------------------+----------+ 
-Packet    :   | Header | Remote anchor data | +Packet    :         | Header | Remote anchor data | LPP data | 
-              +--------+--------------------++                    +--------+--------------------+----------+
  
                                   7 bytes                                   7 bytes
-               <-------------------------------------------> +                     <-------------------------------------------> 
-                8 bits   8 bits     32 bits       8 bits +                      8 bits   8 bits     32 bits       8 bits 
-               <------> <------> <-----------> <-----------> +                     <------> <------> <-----------> <-----------> 
-              +--------+--------+-------------+-------------+ +                    +--------+--------+-------------+-------------+ 
-Header    :   |  type  |  seq   | txTimeStamp | remoteCount | +Header    :         |  type  |  seq   | txTimeStamp | remoteCount | 
-              +--------+--------+-------------+-------------++                    +--------+--------+-------------+-------------+
  
    
Line 44: Line 43:
                       8 bits      1 bit      7 bits     32 bits     0 or 16 bits                       8 bits      1 bit      7 bits     32 bits     0 or 16 bits
                      <------> <-----------> <------> <-----------> <------------>                      <------> <-----------> <------> <-----------> <------------>
-                    +--------+--------+-------------+-------------+--------------+ 
-Remote anchor data: |   id   | hasDistance |  seq   | rxTimeStamp |   distance   | 
                     +--------+-------------+--------+-------------+--------------+                     +--------+-------------+--------+-------------+--------------+
 +Remote anchor data: |   id   | hasDistance |  seq   | rxTimeStamp |   distance   |
 +                    +--------+-------------+--------+-------------+--------------+                                                            
 </ditaa> </ditaa>
  
-* Header  +  * **Header** 
-  * type 0x30 +    * **type:** 0x30 
-  * seq the sequence number of this packet 0 - 127 +    * **seq:** the sequence number of this packet 0 - 127 
-  * txTimeStamp transmission time of this packet +    * **txTimeStamp:** transmission time of this packet 
-  * remoteCount the number of slots (max 8) in the following section that are populated with data +    * **remoteCount:** the number of slots in the Remote Anchor Data section that are populated with data, max 8 
-* Remote anchor data +  * **Remote anchor data** 
-  * id the id of the remote anchor +    * **id:** the id of the remote anchor 
-  * hasDistance 1 = distance data is included in the remote anchor data, total length is 8 bytes, otherwise it is 6 bytes. +    * **hasDistance:** 1 = distance data is included in the remote anchor data, total length is 8 bytes, otherwise it is 6 bytes. 
-  * seq sequence number of latest packet received from the remote anchor 0 - 127 +    * **seq:** sequence number of latest packet received from the remote anchor 0 - 127 
-  * rxTimeStamp receive time stamp of latest packet from the remote anchor +    * **rxTimeStamp:** receive time stamp of latest packet from the remote anchor 
-  * distance time of flight between the current anchor and the remote anchor in radio timer ticks+    * **distance:** time of flight between the current anchor and the remote anchor in radio timer ticks 
 +  * **LPP data:** See [[doc:lps:lpp#lpp_short_packets|LPP short packet description]]
  
 ===== 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 timestamps to calculate its position.+A TDoA tag is simply an UWB sniffer. A sniffer can use the data in the packets together with the timestamps when packets are received to calculate its position. 
 + 
 +===== Calculating TDoA ===== 
 + 
 +[[doc:lps:tdoa:principles|Please see TDoA positioning principles]]
  
doc/lps/tdoa3/protocol.txt · Last modified: 2020-05-12 14:08 by kimberly