Distributed location determination of access points in wireless corporate networks
Patent Information
- Application Number
- DE102023113125
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-07-26
- Filing Date
- 2023-05-17
- Publication Date
- 2026-09-03
- Estimated Expiration
- 2043-05-17
AI Technical Summary
Existing systems lack an efficient method for determining the precise locations of access points in wireless networks, particularly in large environments like offices or warehouses, which affects network coverage and device tracking.
A distributed method using peer-to-peer messaging between access points, where anchor points with known locations share their coordinates, allowing unanchored points to calculate their positions through multilateration based on neighboring anchor and pseudo-anchor points, assuming a uniform elevation.
Enables accurate, automated location determination of all access points within a wireless network without relying on central servers, ensuring comprehensive network coverage and device tracking.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
background
[0001] Access points, sometimes referred to as APs, are wireless communication devices designed to create and provide access to a wireless local area network (WLAN) at a desired location. Access points are commonly used in spaces such as offices, warehouses, or other large areas where greater coverage is required than a single wireless router can provide. Access points can be used in certain environments to allow users to move within the coverage area while maintaining a connection to the network.
[0002] In many cases, it can be useful to know the locations of the various access points in a wireless network. The locations of the access points can be used, for example, to determine network coverage within a specific area, to determine the location of devices operating on the network, and to determine other features and functions related to the network and / or its devices. Brief description of the drawings
[0003] The present disclosure will be described in detail in accordance with one or more various embodiments with reference to the following figures. The figures are for illustrative purposes only and represent typical or exemplary implementations. Fig. shows an example of the deployment of a wireless network in accordance with different implementations. Fig. shows an access point in a system that enables automatic AP localization according to various implementations. Fig. shows a computer device for automatic AP location according to various implementations. Fig. is an example of a computing component that can be used to perform location determination for distributed access points in accordance with various implementations. Fig. is an example of a computing component that can be used to perform location determination for distributed access points in accordance with various implementations. Fig. is an example of a computing component that can be used to perform location determination for distributed access points in accordance with various implementations. Fig. shows an example of trilateration to perform positioning in accordance with different implementations. Fig. shows a block diagram of an example computer system in which the technology described herein may be implemented.
[0004] The figures are not exhaustive and do not limit the present disclosure to the precise form disclosed. Detailed description
[0005] Implementations of the technology disclosed herein may be implemented to provide systems and methods for using a distributed method that enables multiple access points in a wireless network to automatically calculate their physical locations within the network. Example implementations may use peer-to-peer messaging between the access points to exchange information useful for calculating their locations.
[0006] Implementations can rely on anchor access points, each with known locations, where the locations can be determined automatically (e.g., by a GPS receiver or other positioning system) or by a user manually entering the location of the respective access point. The anchor access points, with their respective known locations, can communicate information about their location and capabilities to other access points in the network. Neighboring access points with unknown locations (i.e., unanchored access points) can be configured to receive this advertised location information and calculate their own location by tracking a plurality of the anchor access points that are within range (e.g., within communication range).After determining their respective physical locations, these previously unanchored access points become pseudo-anchor access points with respective locations calculated based on the known locations of the anchor access points, e.g., by performing multilateration positioning. Accordingly, by determining their respective physical locations, these unanchored access points become pseudo-anchor access points and can be re-designated or re-designated as such.
[0007] This process can continue with another group of one or more unanchored access points in the network. This set can include one or more access points that are not in communicative contact with a sufficient number of anchor access points to determine their location from anchor access points, but are in communicative contact with (within range of) a plurality of pseudo-anchor access points or a combination of anchor and pseudo-anchor access points in sufficient quantity to determine their location. For example, this set can be in communicative contact with at least one anchor access point and two pseudo-anchor access points, two anchor access points and one pseudo-anchor access point, or three pseudo-anchor access points.This other set of unanchored access points receives location information from its neighboring anchor / pseudo-anchor access points (where applicable), determines areas, and determines its location based on this information, e.g., by performing multilateration positioning.
[0008] This process can be extended to other groups of unanchored access points in the network, each of which can receive location information and perform a distance measurement to a group of anchor / pseudo-anchor access points with which the respective unanchored access point is within communication range. Accordingly, each remaining unanchored access point can determine its own location based on the locations of the other access points in the network that have a known or determined location. In this way, the access point locations can be determined for all unanchored access points in the network.
[0009] In some implementations, the method may assume that all access points in the network are at the same elevation and that positioning calculations can only be performed using two-dimensional coordinates (e.g., latitude and longitude). This assumption is practical because in many applications, such as office buildings, warehouses, etc., access points are generally located at the same elevation throughout the network installation. For example, in a given installation, access points may be evenly spaced on the ceilings, at a specific height below the ceiling, or at the height of the power outlet. This allows two-dimensional location calculations to be performed without compromising accuracy due to the lack of elevation information.
[0010] Before describing the implementations of the disclosed systems and methods in detail, it is useful to describe an example network installation with which these systems and methods could be implemented in various applications. Fig. shows an example configuration of a wireless network 100 that may be implemented for an organization, such as a business, educational institution, government agency, healthcare facility, or other organization. This diagram illustrates an example configuration implemented in an organization with multiple users (or at least multiple client devices 110) and possibly multiple physical or geographic locations 102, 132, 142. Client devices may also be referred to as stations (STAs).
[0011] The wireless network 100 may include a main site 102 that communicates with a network 120. The wireless network 100 may also include one or more remote sites 132, 142 that communicate with the network 120. These different sites 102, 132, 142 may, for example, represent installations on different floors of a building, different sections of a building, different buildings, different geographic locations, or combinations of the foregoing. Although the sites 102, 132, 142 each depict a different specific example configuration, other configurations are also possible for each site 102, 132, 142, such as different network topologies, different quantities of routers, access points, switches, and other components, etc.
[0012] The primary site 102 may include a primary network, which may be, for example, an office network, a home network, or other network installation. The primary network 102 may be a private network, such as a network that may include security and access controls to restrict access to authorized users of the private network. Authorized users may include, for example, employees of a company at the primary site 102, residents of a home, customers of a company, etc.
[0013] In the example shown, the primary site 102 includes a controller 104 that communicates with the network 120. The controller 104 may provide communication with the network 120 for the primary site 102, although it need not be the sole point of communication with the network 120 for the primary site 102. A single controller 104 is shown, although the primary site may include multiple controllers and / or multiple points of communication with the network 120. In some implementations, the controller 104 communicates with the network 120 via a router (not shown). In other implementations, the controller 104 provides router functions to devices at the primary site 102.
[0014] A controller 104 can configure and manage network devices, e.g., at the main site 102, and can also manage network devices at the remote sites 132, 142. The controller 104 can configure and / or manage switches, routers, access points, and / or client devices connected to a network. The control device 104 can itself be an access point or provide the functionality of one.
[0015] Controller 104 can communicate with one or more switches 108 and / or wireless access points (APs) 106A-C. Switches 108 and wireless APs 106A-C provide network connectivity to various client devices / STAs 110A-J. Through a connection to a switch 108 or AP 106A-C, an STA 110A-J can access network resources, including other devices on the network (primary site 102) and on the network 120.
[0016] As used herein, a client device or STA refers to a device with a processor, memory, and I / O interfaces for wired and / or wireless communications. Examples of STAs may include: desktop computers, laptop computers, servers, web servers, authentication servers, authentication-authorization-accounting (AAA) servers, Domain Name System (DNS) servers, Dynamic Host Configuration Protocol (DHCP) servers, Internet Protocol (IP) servers, virtual private network (VPN) servers, network policy servers, mainframe computers, tablet computers, e-readers, netbook computers, televisions and similar monitors (e.g., smart TVs), content receivers, set-top boxes, personal digital assistants (PDAs), cellular phones, smart phones, intelligent terminals, silent terminals, virtual terminals, video game consoles, virtual assistants, Internet of Things (IOT) devices, specialty computing devices, instruments, sensors, and other client devices.
[0017] Within primary site 102, a switch 108 is included as an example of an access point to the network established at primary site 102 for wired STAs 1101-J. STAs 1101-J can connect to switch 108 and access other devices within wireless network 100 through switch 108. STAs 1101-J can also access network 120 through switch 108. STAs 1101-J can communicate with switch 108 via a wired connection 112, 114. In the example shown, switch 108 communicates with controller 104 via a wired connection 112, although this connection may also be wireless.
[0018] Wireless APs 106A-C are another example of an access point to the network established at main site 102 for STAs 110A-H. Each of APs 106A-C may be a combination of hardware, software, and / or firmware configured to provide wireless network connectivity to wireless STAs 110A-H. In the illustrated example, APs 106A-C may be managed and configured by controller 104. APs 106A-C communicate with controller 104 and the network via wired connections 112, 114, which may be either wired or wireless interfaces.
[0019] An AP generally refers to a network device that enables a client device or STA to connect to a wired or wireless network, in this case, wireless network 100. An AP may include a processor, memory, and I / O interfaces, including wired network interfaces such as IEEE 802.3 Ethernet interfaces, as well as wireless network interfaces such as IEEE 802.11 Wi-Fi interfaces, although the examples of the disclosure are not limited to such interfaces. An AP may include memory, including random access memory, and a hierarchy of persistent storage such as ROM, EPROM, and flash memory. Furthermore, as used herein, an AP may refer to receive points for any known or suitable wireless access technology that may later become known. In particular, the term AP is not intended to be limited to IEEE 802.11-based APs.
[0020] The wireless network 100 may include one or more remote sites 132. A remote site 132 may be located at a different physical or geographical location than the primary site 102. In some cases, the remote site 132 may be located at the same geographical location or possibly in the same building as the primary site 102, but may not have a direct connection to the network of the primary site 102. Instead, the remote site 132 may utilize a connection through another network, such as the network 120. A remote site 132, as in Fig. shown, may be, for example, a satellite office, a different floor or suite in a building, etc. The remote location 132 may include a gateway device 134 for communicating with the network 120. A gateway device 134 may be a router, a digital-to-analog modem, a cable modem, a DSL modem, or other network device configured to communicate with the network 120. The remote location 132 may also include a switch 138 and / or an AP 136 that communicates with the gateway device 134 via either wired or wireless connections. The switch 138 and the AP 136 provide connectivity to the network for various client devices 140A-D.
[0021] In various implementations, the remote site 132 may be in direct communication with the primary site 102, such that the client devices 140A-D at the remote site 132 access the network resources at the primary site 102 as if those client devices 140A-D were located at the primary site 102. In such implementations, the remote site 132 is managed by the control unit 104 at the primary site 102, and the control unit 104 provides connectivity, security, and accessibility that enable the remote site 132 to communicate with the primary site 102. Once connected to the primary site 102, the remote site 132 may function as part of a private network provided by the primary site 102.
[0022] In various implementations, the wireless network 100 may include one or more smaller remote sites 142 that include only a gateway device 144 for communicating with the network 120 and a wireless AP 146 through which various client devices 150A-B access the network 120. Such a remote site 142 may be, for example, the home of an individual employee or a temporary remote office. The remote site 142 may also communicate with the main site 102 so that the client devices 150A-B at the remote site 142 access network resources at the main site 102 as if those client devices 150A-B were located at the main site 102. The remote site 142 may be managed by the controller 104 at the main site 102 to enable this transparency.Once connected to the main site 102, the remote site 142 may function as part of a private network provided by the main site 102.
[0023] The network 120 may be a public or private network, such as the Internet or another communications network, that provides connection between the various locations 102, 130-142, as well as access to the servers 160A-B. The network 120 may include third-party telecommunications lines, such as telephone lines, broadcast coaxial cable, fiber optic cable, satellite communications, cellular communications, and the like. The network 120 may include any number of intermediate network devices, such as switches, routers, gateways, servers, and / or controllers, that are not directly part of the wireless network 100 but facilitate communication between the various parts of the wireless network 100 and between the wireless network 100 and other devices connected to the network. The network 120 may include various content servers 160AB.Content servers 160A-B may include various providers of downloadable multimedia and / or streaming content, including audio, video, graphics, and / or text content, or any combination thereof. Examples of content servers 160a-b include web servers, streaming radio and video providers, and cable and satellite television providers. Client devices 110A-J, 140A-D, and 150AB may request and access the multimedia content provided by content servers 160A-B.
[0024] The parts of the network 120 and / or the individual sites 102, 132, 142 may use DFS channels for communication. These DFS channels must be automatically cleared upon receipt of a valid radar signal. Valid radar signals may conform to one or more suitable standards and may vary depending on the country, region, or jurisdiction in which the network and / or the individual site 102, 132, 142 are located. Clearing a DFS channel may impact the experience of network users. Therefore, it is desirable not to change the channel unnecessarily. However, interference may inadvertently appear as a radar signal and lead to a false positive.
[0025] In various applications of the systems and methods disclosed herein, the distributed location determination functionality for the access points can be performed at the respective access points. Thus, each access point involved in determining its position or the position of other access points can have processing capabilities to perform the described functions. In various applications, the location determination of the access points (e.g., access points 106A-C) can be performed without relying on the services of a central server or controller.
[0026] Fig. shows an example of an access point in a system enabling distributed AP location according to various implementations. In this example, an access point 200, designated AP-1, may be one of multiple APs in a wireless network in a facility. In this simplified example, the set of access points includes four access points, AP-1, AP-2, AP-3, and AP-4, each in communication contact with each other. Each access point 200 may, for example, be an access point operating according to one or more IEEE 802.11 (Institute of Electrical and Electronics Engineers) standards. In different applications, each of AP-1, AP-2, AP-3, and AP-4 may have the same or a similar configuration, while in other implementations, the access point configurations may vary from one access point to another.
[0027] In the example shown, the access point 200 includes one or more of the following components: a processing unit 205, a wireless transmit / receive circuit 210, a power supply 215, a memory 220, a communication port 225 for wired network connections, and an antenna 230. Each access point 200 may also include firmware 240 or other software instructions.
[0028] Processing unit 205 may include one or more GPUs, CPUs, microprocessors, or any other suitable processing system. Processing unit 205 may include one or more single-core or multi-core processors. Memory 220 may include one or more various forms of volatile or non-volatile memory or data storage (e.g., flash, RAM, disk, etc.) that may be used to store instructions (e.g., firmware 240), data and variables for processing unit 205, and other suitable information. Memory 220 may be comprised of one or more modules of one or more different memory types and may be configured to store data and other information, as well as operating instructions, that may be used by processing unit 205 to perform positioning options as disclosed herein, as well as other access point operations.
[0029] In some implementations, the firmware 240 includes instructions or hardware to enable ranging 245 between the access point and another access point in the network. In some implementations, ranging 245 uses time-of-flight measurements of signals between pairs of access points by access points to determine the distance between those pairs of access points. In some applications, ranging may include support for Fine Timing Measurement (FTM).
[0030] Although the example in Fig. While the access points are illustrated using processor and memory circuitry, the access points, as described below with reference to the circuitry disclosed herein, may be implemented using any form of circuitry, such as hardware, software, or a combination thereof. As another example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logic components, software routines, or other mechanisms may be implemented to form the various access points in the network.
[0031] The access point 200 in this example includes a wireless transceiver circuit 210 with an associated antenna 230 and a wired I / O interface with an associated hardwired data port 225. As this example illustrates, the various access points in the network may include both wired and wireless communication circuitry. The wireless transceiver circuit 210 may include one or more transmitters and receivers to enable wireless communication over a variety of communication protocols, such as Wi-Fi (IEEE 802.11 family), WiMAX (IEEE 802.16 family), Bluetooth, Near Field Communication (NFC), Zigbee, and a variety of other wireless communication protocols, whether standardized, proprietary, open, point-to-point, meshed, or otherwise.Antenna 230 is communicatively coupled to wireless transceiver circuitry 210 and is used to wirelessly transmit radio signals to other access points and other wireless devices to which it is connected, and to receive radio signals from these other devices. These RF signals can contain almost any type of information transmitted or received by access points to / from other devices, including other access points.
[0032] Port 225 may provide a hard-wired interface to other components. For example, port 225 may be configured to communicate with other devices via Ethernet or any other wired communications protocol (standardized, proprietary, open, point-to-point, networked, or otherwise).
[0033] The power supply 215 may include one or more batteries (such as Li-ion, Li-polymer, NiMH, NiCd, NiZn, and NiH batteries2, to name a few, whether rechargeable or primary), a power connector (e.g., for connecting to an external power supply, etc.), an energy collector (e.g., solar cells, piezoelectric system, etc.), a DC / DC or AC / DC power converter for receiving power from an external source (e.g., from an AC outlet) and converting the received power into a power suitable for the access point, or any other suitable power supply.
[0034] In operation, upon receiving a request to arrange, e.g., from another access point 200, each access point AP-1 through AP-4 can be configured to participate in ranging operations to enable a distance measurement between the other access points to arrive at a set of pairwise distance measurements for the access points. For example, a distance determination, such as an FTM measurement, can be performed between AP-1 and any other access point, in this example, AP-2, AP-3, and AP-4, as well as for the other pairs of access points.
[0035] In various applications, the access points in the network can be configured to determine their own positions using multilateration techniques with other access points in the network based on distance measurements to other access points at known locations.
[0036] Fig. shows two different examples of wireless networks with a distribution of access points according to different implementations. In particular, this drawing shows two example wireless networks 331, 332, each with a plurality of sets of one or more access points 335, 336, 337, 338. Anchored access points (e.g., access points 335) are access points that know their own physical location, such as through the use of a built-in GPS capability or because their actual location has been manually programmed. Pseudo-access points (e.g., access points 336, 337) are access points that have derived their physical location based on measurements to multiple (e.g., three or more) anchor access points (Tier 0 APs) or other pseudo-anchor access points (Tier 1 to (n-1) APs). Unanchored access points are access points whose physical locations have not yet been determined.
[0037] Implementations of distributed location technology can be used to enable multiple access points 336, 337, 338 in their respective wireless networks 331, 332 to automatically calculate their own physical locations within the network. Example implementations can use peer-to-peer messages between the access points 335, 336, 337, 338 to exchange information useful for calculating their locations.
[0038] Fig. shows an example of a process for determining the position of a distributed access point according to various implementations. To clarify the discussion, the higher-level example is shown in Fig. with reference to the example networks in Fig. described, but can be applied in any number of different network configurations or topologies.
[0039] The example in Fig. is described in terms of operations performed by access points with a known location, such as anchor access points or pseudo-anchor access points, and operations performed by an unanchored access point with no known location. Fig. shows an example of the interaction between these types of access points during their operation. The steps of each access point in the overall process of Fig. will be discussed later in the examples of Fig. and Fig. In particular, example operations of anchor access points and pseudo-anchor access points on the one hand and example operations of unanchored access points on the other hand are described with reference to Fig. and Fig. illustrated and described later. 5 and 6, respectively.
[0040] As in Fig. As shown, the anchor and pseudo-anchor access points 470 set their respective LCI ranks in operation 472. In some implementations, the LCI rank may be set to the highest value for that access point. LCI generally refers to location configuration information for an access point that represents the location coordinates of the access point (e.g., latitude, longitude, and elevation coordinates, or another coordinate system). LCI may contain data uncertainties. In some implementations, the locations of the access points in the network are all assumed to be at the same elevation. Accordingly, the coordinates may contain only latitude and longitude, or they may contain actual latitude and longitude data and a fixed or assumed elevation value.
[0041] The LCI rank is a value that represents the hierarchy in propagating LCI information to other access points. In one application, anchor access points are referred to as Tier 0 access points and can accordingly be assigned a highest rank in the system. Tier 1 has the next highest rank, and so on. For example, a Tier 1 pseudo-anchor access point derives its physical location from three or more Level 0 anchor access points; Level 2 pseudo-anchor access points derive their physical location from Level 0 anchor access points, from Level 1 pseudo-anchor access points, or from a combination of Level 0 and Level 1 pseudo-anchor access points; and Level n pseudo-anchor access points derive their physical location from Level 0 anchor access points, from Level 1 to n-1 pseudo-anchor access points, or from a combination of the above.In multilateration implementations, a combination of three or more higher-ranking access points is used for location determination.
[0042] At operation 474, the anchor and pseudo-anchor access points 470 transmit information to the unanchored access points within communication range to facilitate location determination by those unanchored access points. This may include information that can be used by the unanchored access points to determine their locations. In particular, in some applications, the anchored access points and pseudo-anchored access points may provide their respective ranging capabilities (i.e., whether they support the FTM protocol or other ranging capabilities), LCI, and LCI rank. As previously mentioned, the LCI represents the location of the transmitting access point.For an anchor node, this can be set to the manually configured or GPS-based location coordinates, and for a pseudo-anchor node, this can be the location determined by that node during its location determination operation. The anchor or pseudo-anchor access points can send their LCI in an FTM response message to the unanchored access point, indicating the actual location of the anchor or pseudo-anchor access point.
[0043] As mentioned earlier, the LCI rank establishes a hierarchy of access points. This can be sent in beacons to the receiving unanchored access points. This value can be set to the highest value for anchored access points (e.g., 255 for anchored access points) and to lower values as assignments move down the rank order.
[0044] The access points' FTM responder capabilities and LCI ranks can be broadcast in beacons and made available to all neighboring access points. While the LCI could be broadcast in the access points' beacons, some applications may implement a more limited approach. For example, in some implementations, the access points' respective LCIs may only be included in FTM responses when a neighboring access point initiates FTM measurements to the anchor access point.
[0045] Now that the anchor or pseudo-anchor access points LCI have been determined and the respective transmission capabilities and LCI ranks of these anchor or pseudo-anchor access points 470 have been announced, neighboring unanchored access points 480 can use this information to determine their respective locations.
[0046] Thus, the unanchored access points 480 discover neighboring access points in operation 482. In some implementations, unanchored access points 480 in the network may scan the network communication channels to discover neighboring anchor or pseudo-anchor access points 470 in the network. In various implementations, this may be done using standard discovery techniques. For example, unanchored access points 480 may be configured to scan all radio channels to discover FTM responders and neighboring anchor or pseudo-anchor access points within communication range. In various networks, this discovery may be made based on information transmitted by anchor and pseudo-anchor access points 470 in operation 474. In various applications, this determination may also be made based on other information transmitted by anchor or pseudo-anchor access points 470 in the network (e.g.,during beaconing).
[0047] In operation 484, each unanchored access point 480 examines the received information to determine whether it can begin an operation to determine its location. As part of this operation, each unanchored access point 480 may discover anchor or pseudo-anchor access points 470 within communication range. Upon discovering anchor or pseudo-anchor access points 470 within communication range, each unanchored access point 480 may check the LCI rank of its neighbors to determine if the LCI rank is higher than its own LCI rank (which it may have previously determined). As described above, the LCI rank is included in the information sent by the anchor and pseudo-anchor access points 470 at operation 474.
[0048] If there are no neighbors with a higher LCI rank within communication range of an unanchored access point 480, no ranging is performed for that unanchored access point 480, and the unanchored access point 480 can continue to search for neighbors in its vicinity. If additional neighbors are discovered within communication range, the unanchored access point 480 can determine whether any of the additional neighbors have a higher LCI rank.
[0049] If there are neighbors within the communication range of the unanchored access point 480 that have a higher LCI rank than the unanchored access point 480, the unanchored access point 480 can determine whether there are a sufficient number of neighbors with a higher LCI rank. As mentioned above, multilateration in two dimensions uses three or more neighbors to determine the position. Therefore, the unanchored access point 480 in question can determine whether there are three or more neighbors with a higher LCI rank than its own.
[0050] If there are not enough neighbors with a higher LCI rank than the unanchored access point 480 in question, the access point in question may continue scanning to find additional anchor or pseudo-anchor access points. If there are a sufficient number of anchor or pseudo-anchor access points 470 near the unanchored access point 480 in question, the process for determining the location of the unanchored access point 480 may continue.
[0051] Thus, in operation 486, for the relevant unanchored access point 480 that is within communication range of a sufficient number of anchor or pseudo-anchor access points 470, the device performs ranging measurements and compiles the ranging data. As mentioned above, in some implementations, the ranging measurements are performed by measuring distances to three or more anchor or pseudo-anchor access points with known locations. As mentioned above, in some implementations, this can be done using the FTM (Fine Timing Measurement) protocol, which is based on a round-trip time or time of flight, as specified in IEEE 802.11mc. In this protocol, the distance between two access points is estimated based on a time of flight using signal propagation. An initiating access point sends an FTM request to the other access points, requesting them to begin the ranging process.It can do this individually for each access point in its vicinity. The anchor and pseudo-anchor access points 470 can respond by transmitting ranging information in operation 476. After the initiator receives the responder's response to the FTM request, the ranging process between the pair of access points can begin.
[0052] During the ranging process, the responder sends the FTM frame at time t1 and waits for an acknowledgment (ACK) from the initiator. The initiator receives the FTM frame at time t2 and responds with its ACK at time t3. The responder receives the ACK at time t4. The responder can now send an FTM frame containing data indicating the times t1 and t4. After receiving the FTM frame, the initiator now has data indicating the times t1, t2, t3, and t4. The difference between times t1 and t4 (e.g., t4-t1) includes the processing time for signaling between the access points. This processing time (t3-t2) is subtracted from the total time to determine the flight time. The round trip time is therefore calculated from the total time minus the processing time, i.e. (t4-t1) - (t3-t2).This time of flight is multiplied by the speed of information propagation (the speed of light) to determine the distance traveled by the signals between the access points. However, since this is a round-trip distance, it is divided by two to obtain the one-way distance between the two access points. Random backoff can be used in the measurements to avoid deadlocks caused by two access points starting their distance measurements at the same time, and to ensure there is no overlap or ambiguity caused by measuring the distance to the wrong access point.
[0053] As part of this process, the access points may compile the distance information collected in this step into a set of information that can be used to perform the location measurement. In one example, the information for an unanchored access point 480 may be compiled to include an identification of each neighbor (e.g., BSSID), the calculated range to the relevant neighbors, the LCI for those neighbors, and the LCI rank of those neighbors. As previously mentioned, in some implementations, elevation data is not considered and the access points are assumed to be in the same plane. An example of this data is presented in tabular form in Table 1 below. Table 1 - Table with distance information BSSID (Nachbar-ID) FTM Bereich LCI (falls vorhanden) keine Höhe; LCI-Rang (falls verfügbar) 1A:3E:5D:XX:XX:X1 5.2 m 37.1212N, 121.3214E 255 1A:3E:5D:XX:XX:X2 6.8m 37.1211N, 121.3214E 255 1A:3E:5D:XX:XX:X3 7.3m 37.1210N, 121.3215E 255
[0054] In process 488 of Fig. The unmoored access point 480, having a sufficient set of information collected in operation 486, uses this information to determine its position (e.g., to calculate its coordinates). An example of trilateration to perform the position determination is described below with reference to Fig. described.
[0055] The subject unanchored access point 480 now has position coordinates and is therefore re-designated a pseudo-anchor access point 470. In operation 490, the subject (previously unanchored) access point (now re-designated a pseudo-anchor access point 470) calculates and sets its LCI rank and transmits its LCI rank and LCI. The LCI transmission may include the coordinates for the subject access point. The LCI rank of the access point may be determined based on the LCI rank of the anchor access points or pseudo-anchor access points 470 used for its location estimate. In particular, in some implementations, the LCI rank of the subject access point may be decremented by one from the LCI rank of the anchor or pseudo-anchor access points 470 used for its location estimate.If a combination of anchor or pseudo-anchor access points with different LCI ranks is used, the LCI rank of the access point in question can be decremented by one from the lowest LCI rank of these neighbors. In other applications, other amounts can be subtracted to determine the LCI rank. After determining its location and transmitting its information, the access point in question can now act as a pseudo-anchor access point 470 and be used by the remaining unanchored access points in determining their locations.
[0056] The above-described process for determining the location of the unanchored access points can be repeated for each remaining unanchored access point 480 in the network. This can be performed by the respective unanchored access points such that there are no remaining unanchored access points in the network and all access points are connected to their respective physical location.
[0057] In some implementations, a pseudo-anchor access point may be configured to recalculate its position under certain circumstances. For example, a pseudo-anchor access point may recalculate its LCI (and possibly its LCI rank) when a new threshold number of higher-ranked neighbors is discovered. This may occur, for example, when a new level-0 anchor access point is added and is within range, or when new higher-ranked pseudo-anchor access points are added and are within range.
[0058] Fig. shows an example of a computer component implemented at an anchor or pseudo-anchor access point to facilitate location determination at an unanchored access point. For context and clarity of discussion, the example is omitted. Fig. with respect to the anchor or pseudo-anchor access points 470 and the unanchored access points 480 of Fig. described. Regarding Fig. For example, the computing component 500 may be a server computer, a controller, or other similar computing component that can process data. In the example implementation of Fig. the computer component 500 comprises a hardware processor 502 and a machine-readable storage medium 504.
[0059] The hardware processor 502 may be one or more central processing units (CPUs), semiconductor-based microprocessors, and / or other hardware devices capable of retrieving and executing instructions stored in the machine-readable storage medium 504. The hardware processor 502 may retrieve, decode, and execute instructions, such as instructions 506-510, to control processes or operations for distributed automatic location of access points. Alternatively, or in addition to retrieving and executing instructions, the hardware processor 502 may include one or more electronic circuits containing electronic components for performing the functionality of one or more instructions, such as a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or other electronic circuitry.
[0060] A machine-readable storage medium, such as machine-readable storage medium 504, may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. For example, machine-readable storage medium 504 may be random access memory (RAM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), a storage device, an optical disk, or the like. In some embodiments, machine-readable storage medium 504 may be a non-transitory storage medium, where the term "non-transitory" does not include transitory transmission signals. As described in detail below, machine-readable storage medium 504 may be encoded with executable instructions, such as instructions 506-510.
[0061] As in Fig. As shown, the hardware processor 502 of an anchor or pseudo-anchor access point 470 may execute instruction 506 to set the LCI rank for the particular anchor or pseudo-anchor access point 470. In some implementations, the LCI rank may be set to a highest value for that access point.
[0062] The hardware processor 502 of the anchor or pseudo-anchor access point 470 may execute instruction 508 to send information to unanchored access points 480 that may be used by the unanchored access points 480 to determine their locations. Specifically, in some applications, the anchor access points and pseudo-anchor access points 470 may provide their respective ranging capability (i.e., whether they support the FTM protocol or another ranging capability), LCI, and LCI rank.
[0063] The hardware processor 502 of the anchor or pseudo-anchor access point 470 may execute command 510 to communicate its location information to the unanchored access points 480. This information may be provided, for example, in response to an FTM range request received from one or more neighboring unanchored access points 480. As previously mentioned, its location may be represented as LCI (Location Configuration Information), which represents the access point's location coordinates (e.g., latitude, longitude, and elevation coordinates, or another coordinate system). In some implementations, the locations of the access points in the network may all be assumed to be at the same elevation.Accordingly, the coordinates may contain only the latitude and longitude, or they may contain the actual latitude and longitude data and a fixed or assumed value for the altitude. This information can be used by the receiving unmoored access points 480 to determine their respective locations.
[0064] Fig. shows an example of a computer component implemented at a non-anchored access point to perform location determination for the non-anchored access point. For context and clarity of discussion, the example of Fig. with respect to the anchor access points or pseudo-anchor access points 470 and the non-anchored access points 480 of Fig. The computing component 600 may, for example, be a server computer, a controller, or other similar computing component capable of processing data. In the example implementation of Fig. the computer component 600 comprises a hardware processor 602 and a machine-readable storage medium 604.
[0065] The hardware processor 602 may be one or more central processing units (CPUs), semiconductor-based microprocessors, and / or other hardware devices capable of retrieving and executing instructions stored in the machine-readable storage medium 604. The hardware processor 602 may retrieve, decode, and execute instructions, such as instructions 606-616, to control processes or operations for distributed automatic access point location. Alternatively, or in addition to retrieving and executing instructions, the hardware processor 602 may include one or more electronic circuits containing electronic components for performing the functionality of one or more instructions, such as a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or other electronic circuitry.
[0066] A machine-readable storage medium, such as machine-readable storage medium 604, may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. For example, machine-readable storage medium 604 may be random access memory (RAM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), a storage device, an optical disk, or the like. In some implementations, machine-readable storage medium 604 may be a non-transitory storage medium, where the term "non-transitory" does not include transitory transfer signals. As described in detail below, machine-readable storage medium 604 may be encoded with executable instructions, such as instructions 606-616.
[0067] As in the example of Fig. As can be seen, the hardware processor 602 of a non-anchored access point 480 may execute instruction 606 to cause the relevant non-anchored access point 480 in the network to scan the network communication channels to discover neighboring anchor or pseudo-anchor access points 470 in the network. In various implementations, this may be done using standard discovery techniques. For example, non-anchored access points 480 may be configured to scan all radio channels to discover FTM responders and neighboring anchor or pseudo-anchor access points within communication range. In various networks, this discovery may be done based on information transmitted by anchor and pseudo-anchor access points 470 (e.g., as described in operation 474 in Fig. and in Instruction 508 in Fig. shown).
[0068] The hardware processor 602 of an unanchored access point 480 may execute instructions 608 and 610 to cause the unanchored access point 480 in question to examine the received information to determine whether it can begin operations to determine its location. As part of this process, the unanchored access point 480 in question may discover one or more anchor or pseudo-anchor access points 470 within communication range. Upon discovering one or more anchor or pseudo-anchor access points 470 within communication range, the unanchored access point 480 in question may check the LCI rank of its neighbors to determine if the LCI rank is higher than its own LCI rank (which it may have previously determined). This is illustrated in instruction 608.As described above, the LCI rank is included in the information sent by the anchor and pseudo-anchor access points 470 (e.g., as described in operation 474 of . Fig. and in Instruction 508 of Fig. shown).
[0069] If there are no neighbors with a higher LCI rank within communication range of the access point in question, no ranging is performed for that unanchored access point 480, and operations for that access point resume at instruction 606, at which point that unanchored access point 480 may continue to search for neighbors in its vicinity. If additional neighbors are discovered, the hardware processor 602 may again execute instruction 608 to determine if any of the additional neighbors have a higher LCI rank. Furthermore, since the LCI rank of neighbors may change over time, the hardware processor 602 may periodically repeat instruction 608 for the unanchored access point 480 in question to determine if there are any neighbors with a higher LCI rank.
[0070] On the other hand, if there are neighbors within communication range of the unanchored access point 480 that have a higher LCI rank than the unanchored access point 480, the hardware processor 602 may execute instruction 610 to determine whether there are a sufficient number of neighbors that have a higher LCI rank than the unanchored access point 480. As mentioned above, multilateration in two dimensions uses three or more neighbors for positioning. Therefore, instruction 610 may be configured to cause the unanchored access point 480 in question to determine whether there are three or more neighbors with a higher LCI rank.
[0071] If there are not enough neighbors with a higher LCI rank than the subject unanchored access point 480, the process continues at instruction 606, where the access point may continue scanning to discover additional anchor or pseudo-anchor access points 470, and where periodic rechecking may be performed by executing instructions 608 and 610. On the other hand, if there are a sufficient number of anchor or pseudo-anchor access points near the subject unanchored access point 480, the process of determining the location of the subject unanchored access point 480 may continue.
[0072] The relevant unanchored access point 480, which is within communication range of a sufficient number of anchor or pseudo-anchor access points 470, performs ranging measurements and compiles the ranging data. As mentioned above, in some implementations, the ranging measurements are performed by measuring distances to three or more anchor or pseudo-anchor access points with known locations. Accordingly, the hardware processor 602 may execute instruction 612 at the relevant unanchored access point 480 to perform the ranging measurements. When using the FTM protocol, the distance between two access points may be estimated by a time of flight using signal propagation. In such implementations, an initiator access point may send an FTM request to the anchor or pseudo-anchor access points 470, requesting these access points to begin the ranging process.The respective unanchored access point 480 may do this individually for each access point in its vicinity. The anchor and pseudo-anchor access points 470 may respond by transmitting ranging information (e.g., as described in operation 476 of FIG. Fig. and in Instruction 510 of Fig. shown). After the initiator receives the response to the FTM request from the responder, the ranging process between the pair of access points can begin.
[0073] The hardware processor 602 executes the instruction 614 to perform a position determination for the unanchored access point 480 (e.g., to calculate the coordinates). An example of the position determination is described below with reference to Fig. described.
[0074] Hardware processor 602 executes instruction 616 to cause the subject access point (now a newly designated pseudo-anchor access point) to calculate and set its LCI rank and to transmit its LCI rank and LCI. The LCI transmission may include the coordinates for the subject access point (now a pseudo-anchor access point 470). The LCI rank of the access point may be determined based on the LCI rank of the anchor access points or pseudo-anchor access points 470 used for its location estimate. In particular, in some implementations, the LCI rank of the subject access point is a value that is decremented by one from the LCI rank of the anchor or pseudo-anchor access points used for its location estimate.If a combination of anchor or pseudo-anchor access points 470 with different LCI ranks is used, the LCI rank of the access point in question can be decremented by one from the lowest LCI rank of these neighbors. In other applications, other amounts can be subtracted to determine the LCI rank. After determining its location and transmitting its information, the access point in question can now act as a pseudo-anchor access point 470 and be used by the remaining unanchored access points 480 in its vicinity to determine their locations.
[0075] As mentioned above with reference to Fig. As mentioned above, the process of determining the location of the unanchored access points can be repeated for each remaining unanchored access point in the network. This can be done for each of the respective unanchored access points, so that there are no remaining unanchored access points in the network and all access points are connected to their respective physical location.
[0076] As indicated above, in some implementations, the positioning process described here may assume that all access points in the network are at the same elevation and that positioning calculations can be performed using only two-dimensional coordinates (e.g., latitude and longitude). This assumption is practical because in many applications, such as office buildings, warehouses, etc., access points are generally located at the same elevation throughout the network installation. For example, in a given installation, access points may be evenly spaced on the ceiling, at a specific height below the ceiling, or at the height of the power outlet. This allows two-dimensional location calculations to be performed without compromising accuracy due to the lack of elevation information.
[0077] Fig. shows an example of trilateration (a form of multilateration) for performing positioning according to various implementations. In the illustrated example, three access points 755 are the anchor access points (or pseudo-anchor access points) with which the unanchored access point 756 (with unknown coordinates) performed ranging operations and obtained ranging data.
[0078] The position of the unanchored access point 756 can be determined using conventional trilateration techniques by converting the coordinates of the neighboring anchor point into a two-dimensional reference plane. In some implementations, the elevation data is simply ignored, or it is first confirmed that the elevation data of the anchor or pseudo-anchor access points are within a certain difference range.
[0079] This example describes how to calculate the position of the unanchored access point 756 based on three access points 755. However, if there are more than three neighboring access points with known coordinates, common multilateration techniques can be used to improve the location estimate of the unanchored access point 756.
[0080] To calculate the longitude / latitude of the anchor access point 756, the Vincenty formula can be used, which uses inputs based on the starting coordinates, bearing, and distance. Since the coordinates and distance are known (e.g., from the information in Table 1 above), the bearing from one of the access points 755 to the access point 756 can be calculated. Therefore, a triangle is formed between two of the anchor or pseudo-anchor access points 755 and the unanchored access point 756. This example is shown on the right side of Fig. shown.
[0081] In this example, the distances between the two anchor access points 755A and 755B, between the "north" anchor point 755A and the unanchored access point 756, and between the "east" anchor point 755B and the unanchored access point 756 are c, b, and a, respectively. The bearing from the unanchored access point 756 to the northern anchor access point 755A is represented as angle B: B=90°+A
[0082] A is calculated using the sine law as follows: A=arccos(a2+b2−c2 / 2ab)
[0083] To obtain more precise coordinates for the unanchored access point 756, the calculation described above for 755A, 755B, and 756 is also performed for other combinations of the anchored or pseudo-anchored access points with the unanchored access point 756. The average result of the various combinations is used to calculate the coordinates for the unanchored access point 756. The unanchored access point 756 now has position coordinates and is therefore now referred to as a pseudo-anchored access point.
[0084] Fig.shows a block diagram of an exemplary computer system 800 in which the technology described herein may be implemented. Computer system 800 includes a bus 802 or other communication mechanism for conveying information, and one or more hardware processors 804 connected to bus 802 for processing information. Hardware processor(s) 804 may be, for example, one or more general-purpose microprocessors.
[0085] Computer system 800 also includes main memory 806, such as random access memory (RAM), a cache, and / or other dynamic storage devices connected to bus 802 for storing information and instructions to be executed by processor 804. Main memory 806 may also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by processor 804. Such instructions, stored in storage media accessible by processor 804, make computer system 800 a special-purpose machine adapted to perform the operations specified in the instructions.
[0086] Computer system 800 also includes a read-only memory (ROM) 808 or other static storage device connected to bus 802 for storing static information and instructions for processor 804. A storage device 810, such as a magnetic disk, an optical disk, or a USB flash drive, etc., is provided and connected to bus 802 for storing information and instructions.
[0087] Computer system 800 may include a user interface module for implementing a graphical user interface, which may be stored on a mass storage device as executable software code executed by the computing device(s). This and other modules may include, for example, components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables.
[0088] In general, the word "component," "engine," "system," "database," "data store," and the like, as used herein, may refer to logic embodied in hardware or firmware, or to a collection of software instructions that may have entry and exit points and be written in a programming language such as Java, C, or C++. A software component may be compiled and linked into an executable program, installed in a dynamic link library, or written in an interpreted programming language such as BASIC, Perl, or Python. It is understood that software components may be called by other components or by themselves, and / or may be called in response to detected events or interrupts. Software components configured to run on computing devices may be embodied on a computer-readable medium, such as a hard disk.a compact disc, digital video disc, flash drive, magnetic disk, or other tangible medium, or as a digital download (and may be originally stored in a compressed or installable format that requires installation, decompression, or decryption before execution). Such software code may be stored partially or entirely in a memory of the executing computing device so that it can be executed by the computing device. Software instructions may be embedded in firmware, such as an EPROM. In addition, the hardware components may consist of interconnected logic units, such as gates and flip-flops, and / or programmable units, such as programmable gate arrays or processors.
[0089] Computer system 800 may implement the techniques described herein using custom hard-wired logic, one or more ASICs or FPGAs, firmware, and / or program logic that, in combination with the computer system, causes or programs computer system 800 to be a special-purpose machine. According to one implementation, the techniques described herein are performed by computer system 800 in response to processor(s) 804 executing one or more sequences of one or more instructions contained in main memory 806. Such instructions may be read into main memory 806 from another storage medium, such as storage device 810. Execution of the instruction sequences contained in main memory 806 causes processor(s) 804 to perform the process steps described herein.In alternative implementations, hard-wired circuits may be used instead of or in combination with software instructions.
[0090] The term "non-volatile media" and similar terms as used herein refer to any media that stores data and / or instructions that cause a machine to operate in a particular manner. Such non-volatile media may include non-volatile media and / or volatile media. Non-volatile media includes, for example, optical or magnetic hard disks, such as storage device 810. Volatile media includes dynamic memory, such as main memory 806. Common forms of non-volatile media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape or other magnetic data storage media, CD-ROMs, other optical data storage media, physical media with hole patterns, RAM, PROM and EPROM, FLASH EPROM, NVRAM, other memory chips or cartridges, and networked versions thereof.
[0091] Non-transitory media are distinct from transmission media but can be used in conjunction with them. Transmission media are involved in the transfer of information between non-transitory media. Examples of transmission media include coaxial cables, copper cables, and fiber optic cables, including the wires that make up bus 802. Transmission media can also take the form of sound or light waves, such as those generated in radio wave and infrared data communications.
[0092] Computer system 800 also includes a communications interface 812 connected to bus 802. Communications interface 812 establishes a two-way data communications connection to one or more network connections connected to one or more local area networks. For example, communications interface 812 may be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem for establishing a data communications connection to a corresponding type of telephone line. As another example, communications interface 812 may be a Local Area Network (LAN) card for establishing a data communications connection to a compatible LAN (or a WAN component for communicating with a WAN). Wireless connections may also be implemented.In each of these implementations, the communication interface 812 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams containing various types of information.
[0093] A network connection typically enables data communication across one or more networks to other data devices. For example, a network connection may connect across a local area network to a host computer or to data devices of an Internet service provider (ISP). The ISP, in turn, provides data communication services across the worldwide packet data communication network, now commonly referred to as the "Internet." Both the local area network and the Internet use electrical, electromagnetic, or optical signals that carry digital data streams. The signals across the various networks and the signals on the network connection and across the communication interface 812 that carry the digital data to and from the computer system 800 are examples of transmission media.
[0094] Computer system 800 can send messages and receive data, including program code, over the network(s), the network connection, and the communications interface 812. In the Internet example, a server could transmit requested code for an application program over the Internet, the ISP, the local network, and the communications interface 812.
[0095] The received code may be executed by processor 804 upon receipt and / or stored in storage device 810 or other non-volatile memory for later execution.
[0096] Each of the processes, methods, and algorithms described in the preceding sections may be embodied in, and fully or partially automated by, code components executed by one or more computer systems or computer processors comprising computer hardware. The one or more computer systems or computer processors may also operate to support performance of the corresponding operations in a cloud computing environment or as software as a service (SaaS). The processes and algorithms may be partially or fully implemented in application-specific circuitry. The various features and methods described above may be used independently of one another or combined in various ways.Various combinations and subcombinations are intended to be within the scope of this disclosure, and certain method or process blocks may be omitted from some implementations. The methods and processes described herein are also not limited to any particular order, and the associated blocks or states may be executed in other suitable orders, in parallel, or otherwise. Blocks or states may be added to or removed from the disclosed example implementations. The execution of certain operations or processes may be distributed among computer systems or computer processors located not only in a single machine, but distributed across a number of machines.
[0097] A circuit may be implemented in any form of hardware, software, or a combination thereof. For example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logic components, software routines, or other mechanisms may be implemented to form a circuit. In implementation, the various circuits described herein may be implemented as discrete circuits, or the described functions and features may be distributed, in part or in whole, among one or more circuits. Even though various features or functional elements are individually described or claimed as separate circuits, those features and functions may be shared by one or more common circuits, and such description is not intended to assume or imply that separate circuits are required to implement those features or functions.If a circuit is implemented in whole or in part with software, that software may be implemented to operate with a computer or processing system capable of performing the functionality described with respect thereto, such as computer system 800.
[0098] As used herein, the term "or" can be interpreted both inclusively and exclusively. Furthermore, descriptions of resources, operations, or structures in the singular should not be construed as excluding the plural. Conditional expressions such as "may," "could," "might," or "may" are generally intended to convey that certain implementations include certain features, elements, and / or steps, while other implementations do not, unless explicitly stated otherwise or the context otherwise indicates.
[0099] Unless expressly stated otherwise, the terms and expressions used in this document, as well as their variations, are to be understood as open-ended and not limiting. Adjectives such as "conventional," "traditional," "existing," "normal," "standard," "known," and terms of similar import are not to be construed as limiting the subject matter described to a particular period of time or to a subject matter available at a particular time, but should be understood to include conventional, traditional, existing, normal, or standard technologies that may be available or known now or at any time in the future.The presence of broader words and phrases such as “one or more,” “at least,” “but not limited to,” or similar phrases in some cases should not be construed as meaning that the narrower case is intended or required in the absence of such broader phrases.
Claims
[1] A wireless network consisting of: a plurality of anchor access points each having known locations, each anchor access point comprising a processor and a memory containing instructions that, when executed, cause the processors of the anchor access points to broadcast their respective known locations to other access points in the network; a first plurality of unanchored access points adjacent to the anchor access points, each unanchored access point of the first plurality of unanchored access points comprising a processor and a memory containing instructions that, when executed, cause the processors of the first plurality of unanchored access points to receive location information from the anchor access points and to perform distance measurements to the anchor access points to determine their respective locations in the wireless network, thereby becoming pseudo-anchor access points; and a second plurality of non-anchored access points in communicative contact with the first plurality of non-anchored access points, each non-anchored access point of the second plurality of non-anchored access points comprising a processor and a memory containing instructions that, when executed, cause the processors of the second plurality of non-anchored access points to receive certain location information from the pseudo-anchor access points and to perform ranging measurements to the pseudo-anchor access points to determine their respective locations in the wireless network, thereby becoming pseudo-anchored access points. [2] The wireless network of claim 1, wherein the access points of the second plurality of unanchored access points are not within communication range of the anchor access points. [3] The wireless network of claim 1, further comprising a remaining unanchored access point comprising a processor and a memory having instructions that, when executed, cause the processor of the remaining unanchored access point to receive information about a particular location from a plurality of neighboring pseudo-anchored access points, to perform distance measurements to the pseudo-anchored access points to determine its location in the wireless network, the remaining unanchored access point thereby becoming a pseudo-anchored access point. [4] The wireless network of claim 1, wherein an access point of the second plurality of unanchored access points is further in communicative contact with an anchor access point and receives the determined location information from the anchor access point and from a plurality of pseudo-anchor access points and performs distance measurements to the anchor access point and the plurality of pseudo-anchor access points to determine its respective location in the wireless network. [5] The wireless network of claim 1, wherein an access point of the second plurality of unanchored access points is further in communicative contact with a plurality of anchor access points and receives the determined location information from the plurality of anchor access points and from a pseudo-anchor access point and performs distance measurements to the plurality of anchor access points and the pseudo-anchor access point to determine its respective location in the wireless network. [6] The wireless network of claim 1, further comprising unanchored access points that adjust their respective LCI rank when becoming a newly designated pseudo-anchor access point, wherein a newly designated pseudo-anchor adjusts its LCI rank to be lower than the lowest LCI rank of the neighboring access points from which it derived its physical location. [7] The wireless network of claim 6, further comprising anchor and pseudo-anchor access points that broadcast their respective LCI rank to other nodes in the wireless network. [8] The wireless network of claim 1, wherein instructions of the anchor access points and pseudo-anchor access points further cause the anchor access points and pseudo-anchor access points to send their respective location information to other nodes in the wireless network. [9] The wireless network of claim 1, wherein the instructions, when executed, further cause the processor of an unanchored access point of the second plurality of unanchored access points to receive an LCI rank of one of the plurality of pseudo-anchored access points with which it is in communication contact and to determine whether the received LCI rank is higher than its own LCI rank before reaching that pseudo-anchored access point. [10] A method for determining physical locations of access points in a wireless network, comprising: Receiving location information from a plurality of anchor access points at a first access point; Measuring distances between the first access point and the plurality of anchor access points based on the received location information; Determining a location of the first access point based on the measured distances and the received location information; and Receiving certain location information from a plurality of access points with known locations at a second access point, measuring distances between the second access point and the plurality of access points with known locations, and determining a location of the second access point based on the measured distances. [11] The method of claim 10, further comprising: Receiving specific location information from multiple neighboring pseudo-anchor access points at an unanchored access point; Performing distance measurements to the plurality of neighboring pseudo-anchor access points to determine a location of the unanchored access point in the wireless network; and Identify the unanchored access point as a pseudo-anchor access point. [12] The method of claim 11, further comprising repeating the method of claim 11 for each remaining unanchored access point in the wireless network to determine a location for each remaining unanchored access point in the wireless network. [13] The method of claim 10, wherein measuring distances between the second access point and the plurality of access points with known locations comprises measuring distances only between the second access point and pseudo-anchor access points. [14] The method of claim 10, wherein measuring distances between the second access point and the plurality of access points with known locations comprises measuring distances between the second access point and a combination of anchor access points and pseudo-anchor access points. [15] The method of claim 10, further comprising setting an LCI rank of the first access point in determining its location in the wireless network. [16] The method of claim 15, wherein setting the LCI rank comprises setting the LCI rank to be lower than the lowest LCI rank of the plurality of anchor access points from which the first access point derives its physical location. [17] The method of claim 15, wherein the anchor access points and the first access point propagate their respective LCI rank to other nodes in the wireless network. [18] The method of claim 10, further comprising anchor and pseudo-anchor access points sending their respective location information to other nodes in the wireless network. [19] The method of claim 10, further comprising an unanchored access point receiving an LCI rank of one of the access points with known locations and determining whether the received LCI rank is higher than its own LCI rank before switching to that pseudo-anchored access point with a known location. [20] A wireless access point comprising: a processor; and a memory containing instructions which, when executed, cause the processor to perform the following operations: Receiving known locations of a plurality of anchor access points in a wireless network; Conducting range measurements to the plurality of anchor access points; Determining a location of the wireless access point based on known locations of the plurality of anchor access points in the wireless network and the known locations of the plurality of anchor access points; and wherein, when the processor determines the location of the wireless access point, the wireless access point becomes a pseudo anchor access point in the wireless network.
Citation Information
Patent Citations
Method of refining node position information in wireless sensor network
US20070159986A1
SYSTEMS, METHODS, AND DEVICES FOR INDOOR POSITIONING USING Wi-Fi
US20160219549A1
Generating and publishing validated location information
US20170127373A1
AP106A