Efficient Deployment of UWB Anchors for Wide-Area Positioning Coverage Using Bipartite Graph

Indoor mobile robots have been developed rigorously, with more diversified functions and wide applications. The research of indoor robot positioning systems is increasingly critical, and UWB is one of the most accurate methods. However, due to its short reception range, current UWB systems are limited to small activity spaces. Two important questions need to be answered to enable UWB systems to be used in a wider area. How many anchors does it need? Where are these anchors? For the first time, this study converts the problem of deploying anchors into finding an ensemble of bipartite graphs. The problem is an np-hard problem, which will be addressed in the study. Nevertheless, the study presents a systematic approach to efficiently solving the number and placement of UWB anchors. The generalized method applies to all places where UWB anchors can be deployed, regardless of spatial shape or size constraints. Moreover, a systematic approach can be used when the total number of UWB anchors is limited; the process can find where to place the anchors so that the robot can be positioned within the maximum range. This method enables the UWB indoor positioning system to be widely and efficiently applied in more fields. Experiments were also conducted to verify the feasibility of this method.


I. INTRODUCTION
Wi-Fi [1] and Ultra-Wide-Band (UWB) [2] are commonly used RF Indoor positioning systems [3]. UWB, together with ToF, TDoA, and other positioning techniques, mainly performs trilateration or multi-lateration with multiple anchors [4] to obtain decimeter accuracy. However, it has two most significant drawbacks [3]: the short receiving range and the high cost of building and maintaining an anchor. In the current UWB positioning research, most of them on anchors placement focuses on the effect on the accuracy of different positioning based on the same number of anchors in a small activity space [5], [6], [7]. Since the small activity space, the above two disadvantages can be ignored, but they are pretty severe in the larger activity space. A systematic method is The associate editor coordinating the review of this manuscript and approving it for publication was Kegen Yu . needed to reduce the impact of these two drawbacks, enabling the UWB system to be applied in larger areas.
The study is focused on locating a robot in a dynamic environment where people come and go. Due to the movement of crowds, the Lidar commonly used in robots is easily blocked by crowds or obstacles and cannot be used. Taking advantage of the fact that RF can penetrate crowds, multiple UWB anchors can be deployed on the ceiling to locate the robot. However, numerous anchors need to be deployed in a large area. How to efficiently get the locations to build these anchors so that the robot can be located in the entire activity space and how to minimize the number of anchors to reduce the construction cost effectively are challenging issues.
For the first time, this anchor deployment problem is converted into a generalized bipartite graph, and an algorithm is proposed to solve the required number and locations of deployments. It can be effectively applied to various activity spaces and precision requirements. For example, a different number of anchors can be set for multi-lateration to improve localization accuracy so that no matter where the robot is, there is always at least the required number of UWB signals for positioning. It can be applied when the total number of anchors is limited, and the algorithm will find the locations of these anchors to make the most use of them.
The rest of the study is organized as follows. Section II explains in detail the optimal algorithm for choosing the anchor locations. Section III conducts experiments to deploy anchors at locations based on the algorithm's results and verifies that the entire region can be located. The algorithm uses software to simulate the effects of RF wave propagation due to reflection, scattering, fading, and attenuation in a laboratory environment. Following in Section IV are the brief conclusions.

II. ALGORITHM
The algorithm section is divided into two parts for the optimal selection of UWB anchor locations. The first part converts the initial deployment problem into a problem of graph theory and indicates how to construct the graph. The second part solves the deployment set using a greedy algorithm with the graph made in the first part.

A. COVERT INITIAL PROBLEM TO GRAPH THEORY PROBLEM
The initial deployment problem is finding a set of locations to deploy UWB anchors, which makes the whole active area capable of receiving signals from x UWB anchors, where x is a threshold of the anchors that are required for operating multi-lateration.

1) CONSTRUCTION OF A BIPARTITE GRAPH
The target of this part is converting the initial deployment problem to a graph theory problem by constructing an undirected bipartite graph, G(C, S, E), whose vertices can be divided into two disjoint and independent sets, C and S. E denoting the edges of the graph that every edge connects a vertex in C into one in S.
First, the entire robot activity space is divided into multiple non-overlapping subareas, each one denoted as an S-type vertex. Second, all possible candidate locations that can deploy UWB anchors are denoted as C-type vertices. The last step in constructing the bipartite graph is to generate the edges. If a UWB anchor is placed at the candidate position Cx, the robot in the subareas Sx can successfully receive the UWB signal emitted from position Cx; an edge will be added between the vertices Cx and Sx.
Assuming there are m candidate positions for setting anchors, the entire activity space of the robot is divided into n independent subareas. A bipartite graph example constructed is shown in Fig. 1.
For successful robot positioning using multi-lateration, the goal is to let each S-type vertex have at least a predetermined number of edges adjacent to the C-type vertex chosen to be deployed. With this graph, the original anchor deployment problem can be converted to finding a set of C-type vertices to fulfill the goal.
Assume that the predetermined threshold is set to be 1. For this special case, the deployment problem is now converted to finding a set in these lists, making their union can cover all of the elements in S-type. For Fig 2. all of the elements are {1,2,3,4,5,6}. More than one combination of sets can achieve the goal, for example, {C2, C5} or {C3}.
By converting the problem to this format, we can find that the problem becomes the Set Covering Problem (SCP), one of the famous problems in combinatorial optimization. The definition of SCP is that it considers a set of objects (points, or vertices) V and a collection C of sets of these objects. Our goal is to find a subset D ⊆ C of the smallest cardinality such that every element v ∈ V is ''covered'' by (namely, belongs to) at least one of the subsets in D [10]. SCP is one of the problems in Karp's 21 np-complete problems [11].
Knowing the particular case of setting threshold x to 1 is an np-complete problem for the deployment problem. The complexity of the deployment problem is no easier than npcomplete, namely, an np-hard problem.
For the np-hard problem, we need a heuristic algorithm to solve the problem. The algorithm will be described in detail next part.

B. DEPLOYMENT SET SOLUTION USING GREEDY ALGORITHM
This part aims to find where to deploy the anchors to achieve the multi-lateration requirements. In other words, to see which C-type vertices should be selected. VOLUME 11, 2023 Let's define the deployment set D, which is the subset of C, such that all S-type vertices are adjacent to at least x vertices in D. x means how many anchors to be used to apply multilateration, for example, if we want to apply trilateration for positioning, x could be set to 3.
A common and intuitive way for solving SCP is to use the greedy algorithm [12]. The algorithm starts with an empty set D'. Iteratively add a vertex with the maximum number of adjacent vertices that are not selected and not connected to any chosen vertices until every element in S is covered by at least one element in D'. This algorithm has one of the most significant advantages: if there is a solution to achieve the goal, the algorithm can guarantee to find it.
However, to apply multi-lateration positioning, the threshold x must be no less than 3. In this case, the greedy algorithm for solving SCP needs to be extended and modified.

1) INTRODUCTION OF GREEDY ALGORITHM
The algorithm constructs an initially empty set D', that is, a temporary deployment set. Then, iteratively add the most useful C-type vertex in the current situation into D' until the set D' implements the definition of the deployment set.

2) DEFINING PRIORITY IN CHOOSING A VERTEX
We need to define a scoring function for each C-type vertex to select the most useful C-type vertex, the higher the score, the more valuable it is.
It must first define the space state k for each S-type vertex to determine the score function. The space state k is defined as the number of vertices in the set D' connected to this S-type vertex. In the beginning, when the set D' is an empty set, the state space of all S-type vertices is zero. Each round after D' add a new C-type vertex Cx to the set; every S-type vertex with an edge connected to the Cx will add one.
The space state k is needed to differentiate the usefulness of each edge. For example, if we set the threshold x = 3, when an S-type vertex is already connected to more than 3 C-type vertices in the set D', then the edges connect to that S-type vertex are less valuable than other edges. Define a weighting function θ(k) to represent the differentiation. The most intuitive way is to set θ(k) = 1 for k< x; θ(k) = 0 for k ≥ x. However, the chosen anchors may be more dispersed if we set decreasing θ(k) versus k when k increases. An example is θ(0) = 10, θ(1) = 3, θ(2) = 1, and θ(k) = 0 for k ≥ 3. The values of θ(0) = 10, θ(1) = 3 and θ(2) = 1 is kind of arbitrary. The latter part will show more comparisons and detailed results of choosing different weighting functions.
The scoring function can now be defined. To calculate the score for a particular C-type vertex, add up the values of those edges connected to it, which are computed by the weighting function.
Given the graph G and the current temporary deployment set D', the scoring function could be written as where SCx denotes the set of all those S-type vertices adjacent to Cx. Through this function, all the scores of each C-type vertex could be obtained to define the priority of selecting vertices.

3) DETERMINING WHETHER A SOLUTION EXISTS OR NOT
The greedy algorithm guarantees that it can find the deployment set if the set exists. However, in some situations, the set will not exist. It is easy to find whether there exists a possible deployment set or not. After setting the threshold x, check if each S-type vertex is connected to at least x edges. If all of them do, the set exists; if at least one of the S-type vertices fails, the set does not exist.

4) SETTING TERMINATION CONDITION
The algorithm can accomplish two tasks. First, find the deployment set where at least a threshold x number of UWB anchors is received anywhere in the robot's activity space to apply multi-lateration. In this case, two conditions allow the algorithm to complete. The deployment set does not exist, or the algorithm iteratively adds vertices to the temporary deployment set D' until D' satisfies the definition of the deployment set. Second, when the maximum number of anchors is limited, find the locations where UWB anchors are deployed to fully use them. In this case, there are also two conditions for the algorithm to terminate. Successfully find the deployment set or the temporary deployment set D' that already contains as many C-type vertices as the limit.

C. FLOW CHART OF SOLUTION PROCESS
According to two different requirements, there are some differences between the two processes. Task one: Find a way to deploy anchors so that multi-lateration can be applied to the entire space; Task two: Find the way to make the most use of the limited number of anchors; the more place can apply multi-lateration, the better the result is. Fig. 3 shows the flow charts of the whole process.
The inputs of the Algorithm are G(C,S,E), x, and θ. In the Pseudo code from line 1 to line 6 are initialization. At the beginning, D is an empty set. According to equation 1, for each C-type vertex, their initial score is θ(0) times the number of edges connected to it.
The variable named ''cover'' in line 8 represents the number of S-type vertices that are adjacent to at least x vertices in D. From line 10 to line 16: find which C-type vertex is the most valuable. From line 18 to line 21: update the S-type vertices state and update ''cover''. From line 23 to line 26: update the score of C-type vertices.
Note that the pseudo-code assumes the existence of a possible deployment set, and places no limit on the number of chosen C-type vertices. Through pseudo code, we can clearly analyze the computational complexity of our algorithm. Suppose there are m C-type vertices and n S-type vertices. It takes O(m) time VOLUME 11, 2023 for the while loop. The ''for loop'' in line 17 and line 23 takes O(m * n) times to update the score of C-type vertices. So, the computational complexity of the entire algorithm is O(m 2 ×n)

E. TOY EXAMPLE
To wrap up this part, let's tackle a toy example to actually implement each step of all the processes after building the bipartite graph. An example diagram is shown in Fig. 2.
The goal is to find the deployment set. Let's set x = 3 and assign the weighting function θ(k) = 1 when k < 3; and 0 elsewhere.
The first step is to check whether the deployment set exists. Each S-type vertex is adjacent to at least 3 C-type vertices, so it confirms that the set could be found.
The chart below shows the dynamic change of the space status of S-type vertices from S 1 to S 6 , the score of C-type vertices from C 1 to C 5 , and the elements in temporary deployment set D' by order of addition time. Note that the X in the score means it doesn't matter because the vertex is already in the set D'. C1 and C4 have the same highest score, we will choose the first vertex we meet, which is C1. If C 1 is selected for round 3, we can complete the algorithm after round 4 adding (C 3 , C 2 , C 1 , C 5 ) to D'. all of the S-type vertices are adjacent to at least 3 vertices in D', so D' now is the deployment set D that we want to find.
What if we set the weighting function θ(k) to decrease as k increases? For example, θ(0) = 1, θ(1) = 0.5, θ(2) = 0.25, and θ(k) = 0 for k ≥ 3. The result below shows the same result as the first weighting function, but we don't face the same highest score issue this time.

III. EXPERIMENTAL VERIFICATION A. EXPERIMENT ENVIRONMENT SETTING
The experiment was carried out on the entire floor of the Min-Da Hall at National Taiwan University. Fig. 4 is a plan view of the experimental space, and the corridor area enclosed by the black line is the activity space of the robot.
In the experimental space, 94 candidate positions were selected for anchor deployment, and the entire activity space of the robot was divided into 471 independent subareas, each of which was roughly a square space of 0.6m * 0.6m.
By selecting candidate deployment locations and all subareas, we obtain 94 C-type vertices and 471 S-type vertices for the bipartite graph.

B. FINDING EDGES BY WIRELESS SIMULATION
After setting the C-type and S-type vertices, we require a systematic way to generate the edges, in other words, we need to find the relationship between the UWB signal delivered from each candidate position (Cx vertex) and each subarea (Sx vertex).
UWB has the characteristics of resisting multipath and not interfering with other existing services [14]. Although distance information may still be affected by walls or obstacles, considering that a signal can be received, there is always some chance of successful positioning through calibration [6]. Hence, we only need to determine whether the signals can be received or not. We can simulate the receiving status for all subareas when a UWB anchor is deployed at a certain candidate location, and run for each candidate location one by one.
In order to simulate the relationship between candidate locations and each subarea, the three-dimensional (3D) experimental space was modeled using a radio wave propagation software called IBwave. Although the software can not directly simulate whether each subarea can receive UWB signal from a certain candidate location, it can simulate their received signal strength (RSS).
Our goal is to distinguish whether the robot can receive the signal on certain location based on the RSS value. To do this, an RSS threshold requires to be preset from the measurement calibration. When the RSS simulated by IBwave is greater than the threshold, the signal from the UWB anchor is considered available, and the distance can be obtained reliably. Fig. 5 shows the 3D model of the experiment space constructed in IBwave. We calculated the RSS in the entire activity space for each possible candidate location in the simulation via the RF source. Fig. 6 shows an example of the RSS heatmap by placing the anchor in the upper left corner, where the colors represent the RSS values. After completing the simulation, there are 94 datasets, like Fig. 6, for all the candidate deployment locations. Each dataset contains the RSS values for 471 subareas. Suppose the RSS value in a subarea (Sx vertex) is greater than the RSS threshold when placing the anchor at a candidate position (Cx vertex). In that case, set an edge between vertices Cx and Sx in the bipartite graph.
IBwave was designed to estimate WiFi RSS in both the 2.4 and 5 GHz bands. It cannot be directly applied to UWB, and the simulation method needs to be more rigorous. The RSS threshold must be determined by measurement calibration to mitigate inconsistencies.
After all the simulation data for each candidate position were stored in the computer memory, anchors were placed at three candidate positions for actual measurements at the exact locations in the simulation. The three locations are the orange dots shown in Fig. 7. The tag was moved throughout the entire activity space to check whether it can receive the UWB signal or not in each independent subarea.
After measuring all subareas for deploying the anchor at three different locations, there are 1413 (471 times 3) actual measurement data that can be compared with simulations. The final data is shown in Fig. 8. The x-axis is the RSS value (dB) by IBwave simulation. The y-axis represents the number of independent subareas measured with the x value. The orange dotted line represents the number of subareas with a specific simulated RSS value when the actual measurement fails to receive the UWB signal in these subareas. In contrast, the solid blue line represents the number of subareas with a specific simulated RSS value when UWB signals can be actually measured in those subareas.
To find a diving line that separates the data that can and cannot receive signals into two sides. According to Fig. 8, a reasonable criterion is setting −65 dB as the simulated RSS threshold since all subareas with simulated RSS values exceeding −65 dB can successfully receive UWB signals. Conversely, most subareas with simulated RSS values less than −65 dB cannot receive UWB signals.
Based on the setting, the 1413 data will be classified into four types. Type I, the simulated RSS is equal to or larger than −65dB, and it can receive the UWB signal in actual measurement (true positive); 681 data belong to this type. Type II, the simulated RSS is less than −65dB and cannot receive the UWB signal in actual measurement (true negative); 634 data belong to this type. Type III, the simulated RSS is less than −65 dB, but it can receive the UWB signal in actual measurement (false negative); 98 data belong to this type. Type IV, the simulated RSS is equal to or larger than −65 dB, but it cannot receive the UWB signal in actual measurement (false positive); no data belongs to this type.     Table 1 lists the total percentage of these four types of data. It can be found that this threshold can make 1315 data (I plus II) to be correctly classified, resulting in an accuracy of VOLUME 11, 2023  93.1% (1315 out of 1413). More importantly, the probability of false positives is 0. So if the simulation says it can receive the signal, it can 100% receive the UWB signal in the real world, making the simulated data a lower bound on the actual measurement. This guarantees that the deployment set found from this setting applies to the actual situation.

C. FINDING DEPLOYMENT SET USING GREEDY ALGORITHM 1) ALGORITHM SETTING FOR RUNNING THE SIMULATION
After constructing the entire bipartite graph G(C, S, E) by giving the C-and S-type vertices and edges between them, the last step to do before running the algorithm is to set the threshold x and define the weighing function.
First, we set the threshold x = 3, the smallest number at which triangulation can be applied. For comparison, we define the weighting functions as six different functions listed in Table 2 below.

2) GETTING THE SIMULATION DEPLOYMENT SET RESULTS
Using six different weighting function settings, all deployment sets result in the same number of anchors, namely, 11 anchors. However, the locations of anchors are chosen differently by providing a different weight function. Three results are shown in Figs. 9-11, which corresponds to the setting of θ 1 (k) , θ 3 (k) , and θ 5 (k), respectively. The orange dots are the selected locations of anchors, and the numbers on the dots are the order of selection.
Interestingly, in the six results, most of the selected locations are the same, only 15 different candidate locations   are selected. In other words, different weight functions do not significantly affect the deployment set. However, different weighting functions, with their unique selection order, still have their own advantages and disadvantages, which will be discussed in later part.

D. ANALYZE DIFFERENT WEIGHTING FUNCTIONS
To compare the impact of different weighting functions on the deployment set, this part will focus on three aspects, the degree of dispersion of selected locations, the relative angle of anchors for each subarea, and the percentage coverage versus the number of chosen anchors.
The first aspect is about the dispersion of selected locations. When applying triangulation, the localization error is more minor if the robot is near the center of the anchors' network [7]. Therefore, if the nearby anchors are too close, it might lead to larger localization errors. To compare how close the nearby anchors are, we calculate the distance of each anchor between the two anchors closest to it and average all calculated distances. The calculated average distances for the six choices of the weighting functions are listed in Table 3. The second aspect is about the relative angle of anchor locations that can be received on each subarea. As mentioned in the first aspect, the center of the anchor's network has fewer localization errors. In order to be surrounded by anchors, the robot needs to receive anchor signals from different directions.
To compare the separation of direction for signals, connect one subarea to each UWB anchor whose signal can be received. Define ''separation angle'' to be the maximum relative angle. For example, in Fig. 12, three triangles are the anchors that signal can be received from the location of the square. The separation angle is θ 1 which is the maximum relative angle. The average separation angle for all subareas is listed in Table 4. The less the separation angle is, the more dispersed the signals are.  The next aspect is about the percentage of successful areas versus the number of anchors that have been selected in the deployment set. Separate the six results into two groups, from result one to result three, and from result four to result six. Fig. 13 plots the first group and Fig. 14 plots the second group.
Now we can analyze the advantages and disadvantages of these six weighting functions in these three aspects for two main tasks. The first task is to find a better deployment  set, and the second task is to fully use a limited number of anchors.

1) TASK 1: DEPLOYMENT SET WITH LOWER LOCALIZATION ERROR
The weighting function #1 indicates that θ(k) keeps the same when k increases; weighting function #2 indicates that θ(k) decreases when k increases; while weighting function #3 indicates that θ(k) increases when k increases.
In Table 3, the average distance of nearby anchors for result #2 is much larger than results #1 and #3. This suggests setting the weighting function θ(k) decreases as k increases, making the deployment set more dispersed. Moreover, the separation angle listed in Table 4, for result #2 is also the minimum among the first three results, which is the best for each subarea to receive signals from different directions.
Next, compare functions #4, #5, and #6. As k increases, all three functions decrease; the difference is that the θ(0) -θ(1) is equal to θ(1) -θ(2) in function #4, larger for function #5, and smaller for function #6. Tables 3 and 4 shows that the average distance is the largest for function #5, and the average separation angle is the smallest for function #5, too.
Based on the result, the best way to choose θ(k) is that θ(k) decreases as k increases and the sequence difference decrease as k increases.

2) TASK 2: BETTER USE OF LIMITED NUMBER OF ANCHORS
In Fig.13, the percentage coverage for result #2 is the minimum among the three before the last anchor is selected. For task 2, function #2 would be the worst choice among the first three if the number of anchors is limited.
To determine whether function #1 or #3 is a better choice for task 2. Please see Figs. 9 and 10 for the locations of the first six choices. It is clear that the locations selected for result #1 are much more scattered than those for result #3. Furthermore, the locations of result #3 share more linearity than those of result #1. The more non-linear the anchor, the smaller the localization error [7]. Therefore, weighting function #1 is the best choice for this task.
Based on the analysis, the best choice for task 2 is to set θ(k) to be constant until k is greater than the threshold x.

E. VERIFYING RESULTS WITH REAL MEASUREMENT
To verify the result that can be applied in the real-world environment. We deploy UWB anchors on the exact 11 locations in simulation result #5, the percentage of successful coverage that can be positioned versus the number of anchors is shown in the orange line of Fig. 15.
It shows that deploying UWB anchors on the candidate locations that are generated by entire working process can indeed enable the robot to successfully localize throughout the 100% activity space.   15 also shows that the present approach can cover a greater percentage of the areas in actual measurement than in simulation since blue dashed line grows slower than the orange solid line. This is because our simulated RSS threshold setting is relatively strict to ensure that when the simulation indicates that the UWB signals can be received, it can receive UWB signals with confidence.

IV. CONCLUSION
The study proposes a method for transforming the anchor deployment problem into a graph theory problem and extends the greedy algorithm of the set cover problem to solve the localization task using UWB. This method can be flexibly applied to different fields and other positioning requirements. It can be realized according to different setting conditions. This study also discusses in detail how to set the parameters of the algorithm for different needs and tasks, making the method easier to be implemented.
A systematic working process is proposed, which starts with obtaining the simulated information, followed by generating the bipartite graph, and then implementing the algorithm on the graph. This study successfully shows that it can indeed efficiently achieve the goal of localization.
It might happen that there is a more accurate model for the relationship between the candidate positions and the activity space, or a better algorithm for solving the graph problem transformed from the deployment problem. If it does, they can be applied directly and efficiently to the working process proposed in this paper for better positioning in wide areas using UWB.
TZU-YI YANG was born in Taoyuan, Taiwan, in 2000. He is currently pursuing the degree in electrical engineering with the National Taiwan University, Taipei, Taiwan.
Since 2021, he has been a Research Assistant with the Department of Electrical Engineering, National Taiwan University. His research interests include sensor fusion, positioning, and navigation.