## 4 The IDRR Traffic Control Algorithm  
### General Description  
The IDRR algorithm [16] presents an AGV fleet control strategy based on conflict prevention and detection and resolution. Hence, differently from DRR, which relies on a conflict prevention approach achieved by restricting the access of shared routes to a single AGV, IDRR also deals with conflict resolutions. This allows multiple accesses to shared routes and, consequently, shortens waiting times. For the sake of brevity, specific details on the IDRR algorithm are omitted in this paper, and the interested reader is referred to [16]. However, a brief description of the rationale behind IDRR follows in the next paragraphs. IDRR works on a double-layer architecture basis: a graph model, which acts as a symbolic layer mainly used in path planning, and a geometric layer, superimposed to the former and key in path execution. Essentially, a set of geometric positions, termed Control Points (CPs), is identified in the vicinity of each node, and node-to-node motion is effectively conducted between CPs. Then, nodes with several associated CPs are allowed to accommodate more than one AGV and, consequently, they can be used as conflict resolution zones. Two types of nodes are identified in the layout: (i) those corresponding to pick-up, drop-off, and parking stations, termed Working-Parking (WP) nodes; (ii) crossing nodes, corresponding to aisle intersections, and termed TX nodes according to the specific shapes that can be found in grid-like layouts, namely, 3-way (T) and four-way (X) crossings. WP nodes are linked to the main grid through a TX-crossing, and are allowed single occupancy, i.e., they have an associated unique CP. Instead, T and X nodes have three and four associated CPs, respectively, and it is in the TX nodes where conflict resolutions take place. Figure 4 depicts an X-node with four CPs. Conflict detection and classification is essential in IDRR to allow an AGV to resume to the next node of its trajectory. This is carried out using information on shared routes with other AGVs. Then, the AGV is either forced to wait at the current node or allowed to go ahead according to the traffic rules. Broadly, the conflicts considered by IDRR are:  
* head-on, when two AGVs traveling in opposite directions meet at a node;
* intersection, when the trajectories of two AGVs cross at a node;
* pursuit, when two AGVs traveling in the same direction are located in adjacent nodes;
* loop conflicts, when a closed cycle of pursuit conflicts occurs. In the case of pursuit and loop conflicts, AGVs are forced to wait at the current node for the situation ahead to clear. Instead, in the case of head-on or intersection conflicts, AGVs are allowed to move to the conflicting node, where they maneuver within its CPs so as to resolve the conflict. Figure 5 illustrates the resolution of a head-on conflict:  
* initially, AGVs \(R_{1}\), \(R_{2}\) are located in nodes \(N_{1}\) and \(N_{2}\), respectively, facing a head-on conflict;
* \(R_{1}\) is moved to CP \(N_{22}\) in \(N_{2}\);
* \(R_{2}\) is moved to CP \(N_{23}\) in \(N_{2}\);
* \(R_{1}\) is moved to CP \(N_{21}\) in \(N_{2}\);
* finally, \(R_{2}\) is moved to CP \(N_{22}\) in \(N_{2}\). Now both AGVs are at the respective exit CPs of \(N_{2}\) according to their future trajectories, and hence are ready to resume when possible according to IDRR's traffic rules. Figure 5: Resolution of a head-on conflict with IDRR, from the initial (1) to the final (5) position. \(R_{1}\), \(R_{2}\): AGVs; \(N_{1}\), \(N_{2}\): nodes; \(N_{1j}\), \(N_{2j}\), \(j=1,2,3\): CPs of nodes \(N_{1}\), \(N_{2}\), respectively. Moreover, the possibility of solving head-on or intersection conflicts at a TX node and, at the same time, not inducing deadlocks, is guaranteed by always leaving room enough for it inside a node, and also between adjacent nodes.