ORACLE: Occlusion-Resilient and Self-Calibrating mmWave Radar Network for People Tracking

Abstract: Millimeter wave (mmWave) radar sensors are emerging as valid alternatives to cameras for the pervasive contactless monitoring of people in indoor spaces. However, commercial mmWave radars feature a limited range (up to $6$-$8$ m) and are subject to occlusion, which may constitute a significant drawback in large, crowded rooms characterized by a challenging multipath environment. Thus, covering large indoor spaces requires multiple radars with known relative position and orientation and algorithms to combine their outputs. In this work, we present ORACLE, an autonomous system that (i) integrates automatic relative position and orientation estimation from multiple radar devices by exploiting the trajectories of people moving freely in the radars' common fields of view, and (ii) fuses the tracking information from multiple radars to obtain a unified tracking among all sensors. Our implementation and experimental evaluation of ORACLE results in median errors of $0.12$ m and $0.03^\circ$ for radars location and orientation estimates, respectively. Fused tracking improves the mean target tracking accuracy by $27\%$, and the mean tracking error is $23$ cm in the most challenging case of $3$ moving targets. Finally, ORACLE does not show significant performance reduction when the fusion rate is reduced to up to 1/5 of the frame rate of the single radar sensors, thus being amenable to a lightweight implementation on a resource-constrained fusion center.

\section{Introduction}
\label{sec:intro}
Industry $4.0$ envisions pervasive contactless monitoring systems based on radio-frequency (RF) sensing \cite{savazzi2019use}, enabling applications such as contactless people tracking \cite{pegoraro2021real}, personnel recognition \cite{zhao2019mid, pegoraro2021real} and movement classification \cite{singh2019radhar}. These will be key features of highly dynamical yet safe work environments, featuring tight human-machine interaction.

Radars operating in the mmWave frequency band have emerged as valid alternatives to cameras for indoor monitoring, as they are robust to changing and poor lighting conditions, and raise less privacy concerns~\cite{shah2019rf}.
However, commercial mmWave radars have limited range~\cite{zhao2019mid} (up to \mbox{$6$-$8$~m}) and are subject to occlusion~\cite{pegoraro2021real}, which may constitute a significant drawback in large industrial plants containing machinery and obstacles. Covering large indoor spaces thus requires multiple radars (radar networks), with \textit{known} relative position and orientation. As a result, we necessitate algorithms and methods to combine their output information.
In this work, we are concerned with the largely unexplored design of distributed mmWave radar networks to monitor people in indoor spaces. Our aim is to develop automatic calibration and sensor fusion algorithms to enable the deployment of multiple, jointly operating radars with no human intervention. For this, we need to solve two main issues: \textit{(i)} to automatically obtain the positions and orientations of the radars (\textit{self-calibration}), as they are often unknown, or it is impractical to measure them at deployment time; and \textit{(ii)} to combine the environment perception capabilities of the multiple radars (\textit{sensor fusion}), so as to boost their sensing accuracy and mitigate occlusion.
The few existing solutions to point \textit{(i)} present significant practicality and usability limitations in real scenarios \cite{li2021pedestrian, iwata2021multiradar}, whereas point \textit{(ii)} has not been investigated with indoor mmWave radars, to the best of our knowledge.

In this paper we propose ORACLE, a solution to the mmWave radar network deployment and integration problem. Our contribution is twofold. As a first step, ORACLE automatically estimates the location and orientation of multiple radars with respect to a common coordinate system. For this, ORACLE takes the trajectories of people moving in the environment as a reference.
Then, the system fuses the information about moving people tracked by different radars at a fusion center (FC), enhancing the resilience of the tracking process in case of occlusion.
ORACLE processes local information, transmitted by the radars to the FC, in a slotted-time fashion, thus handling the high variability in the frame rate of commercial radars. Then, it leverages the \textit{information decorrelation} principle \cite{chong2000architectures} to merge local tracks and provide a global representation of the moving targets in the environment.

The original contributions of this work are:
\begin{enumerate}
\item We propose ORACLE, a novel plug-and-play system for the real-time, automatic self-calibration and integration of multiple mmWave radars for indoor people tracking.
\item As a first component of ORACLE, we design a fully-automated method for the self-calibration of multiple mmWave radars. The algorithm estimates the relative positions and orientations of the radars with a median error of $0.18$~m and $2.86^\circ$, respectively, using the information obtained by tracking people moving freely in the field-of-view (FoV) of multiple radars.
\item ORACLE includes a radar track-to-track fusion algorithm that combines information about the same subject collected by different radars. This improves mean tracking accuracy by up to $6\%$ (see \secref{sec:evaluation-metrics}) with respect to single-sensor tracking.
\item We evaluate our method via an extensive measurement campaign involving $2$ commercial mmWave radars and multiple subjects, deployed in realistic conditions including possibly challenging human motion, achieving a tracking accuracy of $93\%$ and a mean tracking error (see \secref{sec:evaluation-metrics}) as low as $0.14$~m, in case of 2 subjects moving freely in the environment.

\end{enumerate}
The remainder of this paper is organized as follows: \secref{sec:rel-work} gives a summary of the related work. In \secref{sec:problem}, we introduce and formalize the challenges of designing a mmWave radar network. \secref{sec:approach} presents and discusses ORACLE, the proposed method, while \secref{sec:results} describes the experimental results on our testbed. Finally, we draw concluding remarks in \secref{sec:concl}.

\section{Related work}
\label{sec:rel-work}

\smallsection{Radar networks}
A large body of work has considered the use of radar networks in airborne and automotive applications to improve the detection and tracking capabilities of the standalone sensors, e.g.,
\cite{ledergerber2020multi, shu2007data, folster2005data}.
These works consider radar setups that are significantly different from mmWave radar network deployments. mmWave radars are typically deployed indoors, or in short-range ($6$-$8$~m) outdoor scenarios, where the presence of multiple subjects may create crowded scenes and occlusions. The latter occur when people or objects block the line of sight between a radar and the target.

Moreover, existing works on mmWave radar networks rely on very simple data association rules between different sensors based on \textit{known} sensors positions and offline data association, with no data fusion to improve the tracking accuracy \cite{guendel2021continuous, meng2020gait}. These limitations are solved by the proposed algorithm, which is the first system that \textit{(i)} combines the information from multiple radars, \textit{(ii)} automatically estimates their relative positions and orientations, and \textit{(iii)} shows robust real-time performance thanks to its low complexity and distributed computation load.

\smallsection{Radar networks self-calibration}
To the best of our knowledge, only two works have tackled the problem of self-calibration in mmWave radar networks, i.e.,~\cite{li2021pedestrian, iwata2021multiradar}.
Both these approaches have practical limitations: \cite{li2021pedestrian} requires that just a single subject, following a linear walking trajectory, appears in the FoV of the radars, while \cite{iwata2021multiradar} can handle multiple subjects, but all of them need to be static (e.g., sitting). Such assumptions significantly limit the application scope of these systems. Conversely, our method completely automates the calibration process, working with movement trajectories of arbitrary shapes and multiple concurrently moving targets. Actually, ORACLE \textit{benefits} from having multiple trajectories of complex and irregular shape that span a large portion of the FoVs of the radars, as they lead to a more accurate calibration.

\section{Problem outline}
\label{sec:problem}

In this section we first present an overview of mmWave Multiple-Input Multiple Output (MIMO) radars. Then, we formalize the problems of combining the information obtained by the different radars in the network at a central fusion entity, and of estimating their relative positions and orientations.

\subsection{mmWave MIMO radars}
\label{sec:prel}

A MIMO FMCW radar jointly estimates the distance, the radial velocity, and the angular position of the targets with respect to the radar device~\cite{patole2017automotive}. During the sensing process, the radar transmits sequences of linear chirp signals with bandwidth $B$. A full sequence, or ``radar frame", is repeated with a period of $T$ seconds.
The distance, $r$, and velocity, $v$, of the targets are computed from the frequency shift induced by the delay of each reflection, usually by applying discrete Fourier transform (DFT) processing. The FMCW radar distance resolution is related to the bandwidth $B$ by $\Delta r = c/(2B)$, where $c$ is the speed of light. This makes \mbox{mmWave} devices accurate to the level of a few centimeters using a bandwidth of $2$-$4$~GHz~\cite{pegoraro2021real}.
Furthermore, using a 2D array of multiple receiving antennas makes it possible to obtain the angle of arrival (AoA) of the reflections along the azimuth ($\theta$), and the elevation ($\phi$) domains, by leveraging phase shifts across different antenna elements. The azimuthal AoA resolution depends on the number of antennas $N$ in the array and is given by $\Delta \theta = \lambda/(Nd\cos\theta)$, where $d$ is the spacing between the antennas.
Due to the high ranging resolution, a human presence in the environment generates a large number of reflecting points, which are detected by the radar. This set of points, usually termed {\it radar point cloud}, can be transformed into the $3$-dimensional Cartesian space using the distance, azimuth, and elevation angles information of the multiple body parts.
Each point is described by vector \mbox{$\left[x, y, z\right]^T$}, including its spatial coordinates $x,y,z$ obtained transforming $r, \theta$ and $\phi$.
Movement trajectories can be tracked across time from the point-clouds.

\subsection{Sensor fusion in mmWave radar networks}
\label{sec:fusion-problem}

Consider a mmWave radar network consisting of $S$ monostatic radar sensors. Each radar has local computational capabilities and a communication interface that enables them to transmit information to a fusion center (FC). The sensors are identified by indices $s=1, \dots, S$, while quantities related to the FC are denoted by superscript $^c$. All radar sensors operate on discrete time steps (radar \textit{frames}), of duration $T$, indexed by variable $k$. The FC also operates on discrete time steps that, in general, may have a different duration $T_c$ and that are indexed by variable $m$.

The people tracking problem relates to estimating the subjects' movement trajectories in the $(x, y)$ horizontal plane across time, exploiting the measurements of the multiple radar sensors.
For this, we define the \textit{state} of subject $u$, seen by the FC at time $m$, as \mbox{$\vv{x}_m(u) = \left[ x_m(u), y_m(u), \dot{x}_m(u), \dot{y}_m(u) \right]^T$}, containing the subject's $x$ and $y$ position and the corresponding velocity components $\dot{x}_m(u)$ and $\dot{y}_m(u)$.
We assume that the state's evolution obeys a constant-velocity (CV) model~\cite{wagner2017radar}.
At the FC, the state model for target $u$ is
\begin{equation}\label{eq:state-evol}
    \vv{x}_m(u) = \vv{F}_{T_c}\vv{x}_{m-1}(u) + \vv{w}_m(u),
\end{equation}
where $\vv{F}_t$ is the state transition matrix that projects the state forward by a time duration $t$, according to the CV model, while $\vv{w}_m(u)$ is the (global) Gaussian process noise, having zero-mean and covariance matrix $\vv{W}$ \cite{pegoraro2021real,chong2000architectures}. The process noise is here considered to be generated by a random acceleration that is not explicitly accounted for by the CV model \cite{pegoraro2021real}.
Sensor measurements of the state of target $n$, at time $k$, are obtained according to
\begin{equation}\label{eq:state-obs}
    \vv{z}^s_k(n) = \vv{H}\vv{x}_{k}(n) + \vv{v}^s_k(n), \quad s = 1, \dots, S,
\end{equation}
where $\vv{z}^s_k(n)$ is the observation obtained from sensor $s$, $\vv{H}$ is the observation matrix relating the observation to the state and $\vv{v}^s_k(n)$ is the sensor-specific measurement noise having covariance matrix $\vv{V}_k$ \cite{pegoraro2021real}. In our system, all sensors are of the same type and have the same specifications. Therefore, we can safely assume that the measurement error processes have the same zero-mean, Gaussian distribution, whose covariance is time varying due to the dependence of the radars' resolution on the position of the targets in the FoV \cite{pegoraro2021real}. The aim of our system is to estimate $\vv{x}_m$ over time, exploiting the measurements collected by the sensors. Note that:
\textit{(i)} the correspondence between the targets tracked by each sensor is \textit{unknown}, and finding a suitable association between them is part of the problem we tackle,
\textit{(ii)} the algorithm can handle the fact that the same target may be tracked simultaneously by one or more sensors, and \textit{(iii)}  the sensors may collect the measurements and obtain state estimates at a different time granularity than that of the FC.

Each sensor performs local tracking of the targets in the environment. The common approach to people tracking from mmWave radar point-clouds~\cite{zhao2019mid, meng2020gait, pegoraro2021real} includes \textit{(i)} a detection phase via density-based clustering algorithms (e.g., DBSCAN~{\cite{ester1996density}}) to separate the reflections from multiple subjects, \textit{(ii)} applying Kalman filtering techniques \cite{kalman1960new} on each cluster centroid to track the movement trajectory of each subject in space.
The KF used at each sensor provides, at each time step, an estimate of the state of the targets in its FoV and the corresponding error covariance. We call $N_k^s$ the number of such targets at time $k$, $\hat{\vv{x}}_{k|k}^s(n)$ the estimated state of target $n$ after the KF update step, and $\vv{C}_{k|k}^s(n)$ the associated error covariance. Note that the above quantities are sensor-dependent, as different sensors provide their own estimates of the state of the same target.
We denote by $\mathcal{T}^s_k(n) = \{\hat{\vv{x}}_{k|k}^s(n), \vv{C}_{k|k}^s(n)\}$ the track corresponding to target $n$ as estimated by sensor $s$, expressed with respect to \textit{its own} reference frame. In addition, we assume that each sensor is able to provide a timestamp, $\tau_k^s$, corresponding to the current time step, according to its local time reference (e.g., internal clock or network time). For the timestamps to match between different sensors, some level of synchronization is needed within the radar network.  At the end of each time step, sensor $s$ transmits the set of its tracks, denoted by $\boldsymbol{\mathcal{T}}^s_k = \{\mathcal{T}^s_k(1), \dots, \mathcal{T}^s_k(N_k^s), \tau^s_k\}$ to the FC, together with the corresponding timestamp.

If the same target is tracked by more than one sensor, the FC should maintain a single track for it, which is updated and improved by fusing the information coming from the sensors.
Our aim is to develop an algorithm to estimate the position of the targets across time at the FC, in the form of \textit{central tracks} $\mathcal{T}^c_m(u) =  \{\hat{\vv{x}}_{m|m}^c(u), \vv{C}_{m|m}^c(u)\}$, obtained by combining the sensor information $\boldsymbol{\mathcal{T}}^s_k, \, s=1, \dots, S$. The above problem is complicated by \textit{correlation} between the estimation errors of the tracks obtained at the sensors and at the FC.
From \eq{eq:state-evol}, one can see that some correlation exists between all the tracks that refer to the same target (also in different sensors), as the process noise is the same, but this can be typically neglected if the process noise has low intensity or if the radar measurement rate is high with respect to the subject's motion \cite{chong2000architectures}.
Conversely, the error correlation between a central track and a sensor track of the same target can not be ignored as the FC obtains its own tracks as functions of the sensor tracks. This is especially true for our real-time application, where the fusion is done frequently, e.g., from $10$ to $15$ times per second.

\subsection{Self-calibration of mmWave radar networks}
\label{sec:selfcal-problem}
The track sets that the radars transmit to the FC are expressed in the local reference frames of the sensors. Any algorithm that fuses them to improve the tracking accuracy requires to know the sensors' relative position and orientation. However, manually measuring them is impractical and prone to errors, therefore an automatic self-calibration procedure would be highly appealing.
Here, we propose to exploit the trajectories of \emph{targets of opportunity} that move within the radars' FoVs, independently tracked by each sensor.
Tracks from different radars that correspond to the same target should have almost the same \emph{shape}, up to a rigid transformation and to some noise.
Estimating such rigid transformation parameters corresponds to estimating the sensors' relative position and orientation.

Considering the system of $S$ radars, deployed in a monitored space, call \mbox{$\mathcal{F}_s, \, s=1, \dots, S$}, their reference systems (RSs). Each RS consists in a pair \mbox{$\mathcal{F}_s = \{\vv{t}_s,\vv{R}_s\}$}, where \mbox{$\vv{t}_s$} is the vector of coordinates of the origin of the $s$-th RS and $\vv{R}_s$ corresponds to the \mbox{$2 \times 2$} rotation matrix specifying its orientation.
Without loss of generality, in this paper we consider a \textit{global} RS (of the FC), which coincides with the RS of radar $1$, and for which it holds that \mbox{$\vv{t}_1 = \boldsymbol{0}$} and \mbox{$\vv{R}_1 = \vv{I}_2$}, which is the \mbox{$2 \times 2$} identity matrix. To perform a self-calibration of the system, our objective is to estimate $\mathcal{F}_s, \, s=2, \dots, S$.
We define the \textit{movement trajectory} of target $n$, as seen by sensor $s$, as the sequence of position estimates of the target, $\hat{\vv{p}}^s_k(n) = [\hat{x}^s_k(n), \hat{y}^s_k(n)]^T$, for $k = 1, \dots, \, K$.
Note that $\hat{\vv{p}}^s_k(n)$ contains the first two components of the KF state estimate $\hat{\vv{x}}^s_{k|k}(n)$.
An estimate of the rotation matrix and the translation vector between radar $s$ and radar $1$ (our reference) can be obtained solving the following Least-Squares (LS) problem

\begin{equation}
\label{eq:opt-problem}
 \argmin_{\substack{\vv{R}_s \in SO(2) \\ \vv{t}_s \in \mathbb{R}^2}}
    \sum_{k=1}^{K} \left|\left|(\vv{R}_s \hat{\vv{p}}^s_{k}(n) + \vv{t}_s) - \hat{\vv{p}}^1_{k}(n)\right|\right|_2,
\end{equation}
where $SO(2)$ denotes the special orthogonal group in dimension $2$ and $||\cdot||_2$ is the Euclidean norm.
While the translation vector of sensor $s$ with respect to the global RS is directly obtained by solving \eq{eq:opt-problem}, the orientation angle, denoted by $\theta_s$, is given by $\theta_s = \cos^{-1}\left({ \trace(\vv{R}_s)}/2\right)$.

In \secref{sec:selfcal-method} we present the proposed approach to solve the self-calibration problem in the more complex and realistic scenario where \textit{(i)} multiple sensors concurrently track multiple targets,
\textit{(ii)} the track-target correspondence among different sensors is \textit{unknown}, so an association strategy has to be developed, and
\textit{(iii)} the trajectories should be aligned in time before using \eq{eq:opt-problem}.

\section{Proposed approach}
\label{sec:approach}
\begin{figure}[t!]
	\begin{center}
		\includegraphics[width=8.4cm]{figures/tii_workflow.pdf}
		\caption{Proposed workflow.
		}
		\label{fig:workflow}
	\end{center}
\end{figure}
In this section, we first present a high-level overview of the processing blocks of ORACLE and then provide a detailed description of each of them. \fig{fig:workflow} presents the workflow of ORACLE.

\smallsection{Self-calibration} In this phase, the relative positions and orientations of the radars are obtained from the trajectories of targets of opportunity (see \secref{sec:selfcal-method}). The steps are:
\begin{enumerate}
    \item \textit{Time alignment.}

    A time alignment between the $N^1_k$ tracks maintained by radar $1$ and the $N^s_k$ trajectories from radar $s$ is sought, by minimizing the distance between the trajectories' timestamps (\secref{sec:time-alignment}).
    \item \textit{Rigid transformation.} Using the time alignment from point $1$), we solve the problem in \eq{eq:opt-problem} for all trajectory pairs, obtaining the corresponding rotation matrices and translation vectors (see \secref{sec:rigid-transform}).
    \item \textit{Trajectories association and radar calibration.} Radar calibration is performed using the best matching trajectory pairs according to a novel loss function (\secref{sec:tracks-association}).

\end{enumerate}
\smallsection{Multi-radar fusion} Here, the tracks from the radars are fused at the FC to build a set of \textit{central} tracks associated with the subjects in the environment (see \secref{sec:multirad-fusion}). This includes:
\begin{enumerate}
    \item \textit{Slotted sensor information processing.} The tracks information from the sensors are sent to the FC and processed using a slotted protocol, as detailed in \secref{sec:slotted-proc}.
    \item \textit{Track-to-track association.} A method to associate, frame-by-frame, tracks that correspond to the same target, according to their statistical similarity, is used to select pairs of tracks to be fused (see \secref{sec:tt-assoc}).
    \item \textit{Radar track fusion algorithm.}
    The fusion algorithm combines sensor tracks with the central tracks using the information decorrelation rule (\secref{sec:track-fusion}).

\end{enumerate}

\subsection{Self-calibration}\label{sec:selfcal-method}

\subsubsection{Time alignment}\label{sec:time-alignment}
Since track set $\boldsymbol{\mathcal{T}}_k^s$, sent by sensor $s$ to the FC at time $k$, contains also the corresponding timestamp $\tau_k^s$,
for the targets' trajectories $n_1$ and $n_s$ maintained by radars $1$ and $s$, we have the corresponding timestamp sequences.
Note that each trajectory may have a different duration.
The time alignment is then performed so that each position estimate of trajectory $n_1$ is associated with the position estimate of trajectory $n_s$ that minimizes the time difference between the two acquisition instants. This operation reduces the trajectories to a common length of $K$ time-aligned positions. Elements of trajectory $n_1$ that do not have a corresponding element of trajectory $n_s$ within $T$ seconds (recall that $T$ is the duration of a sensor time step) are discarded. After this last operation, we retain only the portions of the trajectories that are sufficiently well synchronized, in order to avoid performing the rigid transformation on wrongly associated points.
Once the trajectory association has been established, we define the \emph{mean time shift} of the pair \mbox{$\{n_1, n_s\}$} as

$\bar{\tau}{(n_1, n_s)} = \frac{1}{K} \sum_{k=1}^{K} |\tau_k^{n_1} - \tau_k^{n_s}|.$
The value of $\bar{\tau}{(n_1, n_s)}$ is related to the alignment quality of the two trajectories and will be used in the association step (see \secref{sec:tracks-association}).

\subsubsection{Rigid transformation}
\label{sec:rigid-transform}

Our algorithm computes the rigid transformation parameters $\{\vv{R}^{(n_1, n_s)}_s, \vv{t}^{(n_1, n_s)}_s\}$ for all the aligned trajectory pairs from radars $1$ and $s$,  $\{n_1, n_s\}$, with $s = 2, \dots, \, S$. Then, to perform the association step, we solve the LS problem in \eq{eq:opt-problem} using only the time-aligned position estimates extracted from trajectories $n_1, n_s$. The solution is obtained in closed-form using a Singular-Value Decomposition (SVD) method \cite{sorkine2017least}. The computed translation vectors and rotation matrices give the positions and orientation angles of the other $S-1$ radars in the RS of the reference radar.

\subsubsection{Tracks association and radar calibration}
\label{sec:tracks-association}

Our data association strategy consists in computing a \textit{cost} for each association \mbox{$(n_1 \leftrightarrow  n_s)$} and solving the resulting combinatorial cost minimization problem to obtain the best associations.
We assume to have $N_1$ and $N_s$ trajectories available at radars $1$ and $s$, respectively. Our cost function incorporates different aspects: \emph{(i)} the length of the trajectories, as longer trajectories are assumed to provide a better calibration; \emph{(ii)} the time alignment of the trajectories, as we should compare position estimates acquired almost simultaneously by the different radars; and \emph{(iii)} the quality of the rigid transformation, in terms of residual error in superimposing trajectories from the different radars. We define the association cost, $A$, for the pair \mbox{$\{n_1, n_s\}$}, as
\begin{equation}
\label{eqn:cost_function}
    A(n_1, n_s) = -\rho(K, \bar{\tau}) \left[1 + \xi(n_1, n_s)\right]^{-1},
\end{equation}
where $\xi(n_1, n_s)$ is the sum of the LS residuals, after applying the time alignment and the rigid transformation, while $\rho(K, \bar{\tau})$ is a factor that favors trajectory pairs with a long overlap and a low mean time shift. Recalling that $T$ is the sampling interval of the system, the corrective term is formalized as
$\rho(K, \bar{\tau}) = \ln(KT) \left[1 + \bar{\tau}(n_1, n_s)\right]^{-1}$.
Note that this corrective term favors trajectories which are longer and better time aligned, and penalizes the others.
Costs $A(n_1,n_s)$, \mbox{$n_1=1,\,\dots,\,N_1$}, \mbox{$n_s=1,\,\dots,\,N_s$}, are arranged into a \mbox{$N_1 \times N_s$} cost matrix, $\vv{A}_{1s}$, and the optimal association of trajectories is obtained by minimizing the overall cost, computed through the Hungarian algorithm~\cite{kuhn1955hungarian}. This yields $\min \left(N_1, N_s\right)$ pairs of associated trajectories, which are possibly the same targets seen by the two radars. Due to the presence of spurious trajectories, ghost targets and clutter, we select a subset of the associated trajectory pairs that have a cost below a threshold $A_{\rm thr}$, which represents a confidence value under which the pair is truly a trajectory pair generated by a human. The $N_{t}$ trajectory pairs which are selected in this way are then stacked together and used to set up a rigid transformation problem as in \eq{eq:opt-problem}.
The problem is solved with the same procedure described in \secref{sec:rigid-transform}, obtaining the final rotation matrix and translation vector to calibrate radar $s$, namely $\{\vv{R}_s^*, \vv{t}_s^*\}$. This step exploits all the available information from multiple subjects, improving the calibration accuracy by increasing the number of useful measurements per time frame.
Note that, even though target occlusion events may split a trajectory into multiple components, our algorithm still works by exploiting each resulting sub-trajectory.

\subsection{Multi-radar fusion}
\label{sec:multirad-fusion}

\begin{figure}[t!]
	\begin{center}
		\includegraphics[width=8.4cm]{figures/tii_fusion.pdf}
		\caption{Scheme of the proposed fusion algorithm with $2$ radar sensors.
		}
		\label{fig:fusion}
	\end{center}
\end{figure}

Once the radar network is calibrated, i.e., we have an estimate $\{\vv{R}_s^*, \vv{t}_s^*\}, \forall s$, we can fuse the information coming from the $S$ radars at the FC.
In the following, we consider $S=2$ for better clarity in the algorithm description, but the method works for an arbitrary $S$.
We denote the \textit{precision matrix}, which is defined as the inverse of a covariance, by $\vv{P} = \vv{C}^{-1}$.
The fusion algorithm, represented in \fig{fig:fusion}, is described as follows:

\subsubsection{Slotted sensor information processing}\label{sec:slotted-proc} The FC maintains a central time variable, denoted by $\tau_m^c = \tau_0 + mT_c$, which is incremented at the end of each central time step and where $\tau_0$ is the time when the FC starts operating.
In order to cope with the random variations in the sensor acquisition and processing time and in the communication time,
the FC operates on time slots of duration $T_c$. Specifically, several track sets from different sensors can be received during time step $m$ due to differences between the FC and the sensors' time steps and the variable communication time. Using the timestamp information contained in the received tracks, at time $m$ the FC filters out all the track sets that are not received within the interval $(\tau_{m-1}^c, \tau_m^c]$ and retains only the most recent track set from each sensor.
Formally, for each $s$, the track set whose timestamp is the solution to $\argmin_{\tau_{k}^s}( \tau_{m}^c - \tau_{k}^s)$ is selected.
In the following, to highlight that a track set has been selected from sensor $s$ to be processed in time step $m$, we denote it as $\boldsymbol{\mathcal{T}}^s_m$, using the time index of the FC rather than that of the sensor, and we do the same for all the tracks it contains.

The slotted processing procedure is aimed at \textit{(i)} reducing the number of fusion steps to be carried out by the FC, using only the most recent information available from each sensor, and \textit{(ii)} avoiding erroneous fusion of outdated tracks, which may negatively affect the tracking performance at the FC.

After the sensor tracks selection, the FC transforms them into its own reference system, using the information about the location and orientation of the radar sensors.
Then, according to the CV model, they are propagated to the FC current time.
The equations for the transformation of the state and the covariance of the sensors are reported next. We denote by $\bar{\mathbf{t}}^*_s = [\mathbf{t}^*_s, \boldsymbol{0}_{1\times 2}]^T$ the augmented translation vector and by $\bar{\mathbf{R}}_s^* = \blkdiag(\mathbf{R}_s^*, \mathbf{R}_s^*)$
the $4 \times 4$ augmented rotation matrix of sensor $s$, where $\blkdiag(\cdot)$ returns a block diagonal matrix of its inputs. The transformation is performed as
\begin{equation}\label{eq:sens-conv-state}
    \hat{\mathbf{x}}_m^s(n) =  \vv{F}_{\tau_m^c - \tau_k^s}\left[\bar{\mathbf{R}}_s^*\hat{\mathbf{x}}_m^{s'}(n) + \bar{\mathbf{t}}^*_s\right],
\end{equation}
\begin{equation}\label{eq:sens-conv-cov}
    \mathbf{C}_m^s(n)  = \vv{F}_{\tau_m^c - \tau_k^s}\bar{\mathbf{R}}_s^*\mathbf{C}_m^{s'}(n) \left(\bar{\mathbf{R}}_s^*\right)^T\vv{F}_{\tau_m^c - \tau_k^s}^T,
\end{equation}
with $\hat{\mathbf{x}}_m^{s'}(n)$ and $\mathbf{C}_m^{s'}(n)$ being the state and covariance communicated by sensor $s$ that have been selected in the current central slot, expressed in the reference frame of sensor $s$, while $\hat{\mathbf{x}}_m^{s}(n)$ and $\mathbf{C}_m^{s}(n)$ are expressed in the reference frame of the FC. In \eq{eq:sens-conv-state} and \eq{eq:sens-conv-cov}, the state evolution matrix $\vv{F}_{\tau_m^c - \tau_k^s}$ projects the sensor state/covariance estimates forward by $\tau_m^c - \tau_k^s$, so that they are up to date with the current FC time.
Similarly, the FC also performs a prediction step, for a time duration $T_c$, on all its maintained tracks, by leveraging their motion model. For this, the standard KF prediction equations are used
\begin{equation}\label{eq:pred-central-state}
\vv{C}_{m|m-1}^c(u) = \vv{F}_{T_c} \vv{C}_{m-1|m-1}^c(u) \vv{F}_{T_c}^T + \vv{W},
\end{equation}
\begin{equation}\label{eq:pred-central-cov}
\hat{\vv{x}}_{m|m-1}^c(u) = \vv{F}_{T_c} \hat{\vv{x}}_{m-1|m-1}^c(u).
\end{equation}

\subsubsection{Track-to-track association}\label{sec:tt-assoc}
The FC has to compute track-to-track associations before being able to fuse the information from the sensors with its own tracks, as it needs to identify which tracks correspond to the same target.
There can be \emph{(i)} \emph{sensor-to-center} associations (SC), to verify whether the sensor tracks correspond to any of the maintained central tracks, and \emph{(ii)} \emph{sensor-to-sensor} associations (SS), only for sensor tracks which didn't find a SC association, to establish which tracks correspond to the same targets and consequently initialize the correct number of central tracks.
In both cases, our method operates in the same way. The aim is to find a one-to-one association between two sets of $M$ and $L$ tracks, respectively, indicized by variables $i$ and $j$. Note that $i$ and $j$ may refer to two sensor tracks, in case of an SS association, or to a central track and a sensor track in case of an SC association. As the first thing, an $M \times L$ association cost matrix, $\vv{\Lambda}$, is obtained, where
$\Lambda_{ij} = \left(\hat{\vv{x}}(i) - \hat{\vv{x}}(j)\right)^T \vv{P}(ij)\left(\hat{\vv{x}}(i) - \hat{\vv{x}}(j)\right)$
is the squared Mahalanobis distance \cite{shalom2009probabilistic} between the two estimates of the state $\hat{\vv{x}}(i)$ and $\hat{\vv{x}}(j)$.
The precision matrix inducing the distance is computed as $\vv{P}(i, j) = [\vv{C}(i) + \vv{C}(j)]^{-1}$ for an SS association, whereas we use $\vv{P}(i, j) = \vv{P}(i) + \vv{P}(j) - \bar{\vv{P}}(j)$ for an SC association, where, without loss of generality, we assume $j$ is the sensor track and $i$ the central track and $\bar{\vv{P}}(j)$ is the last precision matrix of track $j$ communicated by the sensor to the FC.
For SC associations, the tracks are always significantly correlated, so the metric needs to take this into account by removing the common information. This is achieved by using the \textit{information decorrelation} principle \cite{chang1997optimal, chong2000architectures}, which consists in subtracting the last precision matrix that the sensor has transmitted from the sum of the central and sensor's precision matrices.

Once matrix $\vv{\Lambda}$ is available, the minimum total cost association is obtained using, e.g., the Hungarian algorithm \cite{kuhn1955hungarian}.

\subsubsection{Radar track fusion algorithm}\label{sec:track-fusion}
The track fusion algorithm behaves differently in case it has to combine two sensor tracks (SS fusion) or one sensor track with a central track (SC fusion).
If the fusion center is currently not maintaining a track for a certain subject, but one or more radars are, a new central track needs to be initialized based on the received information from the local sensors. Specifically, two cases may happen: \textit{(i)} if a target $n_1$ is currently tracked by one sensor only, the corresponding central track is initialized using the state and covariance of track $n_1$; \textit{(ii)} if the two sensors transmit to the FC two tracks that can be associated, say $n_1$ and $n_2$, these are fused by the FC into a single, new track $u$ (SS fusion). The local tracks from sensors $1$ and $2$ have uncorrelated errors as they are two sensor tracks, so they can be fused with a weighted combination of their states. The states are weighted by the precision matrices associated with the estimation errors at each sensor. The fusion equations used for the initialization of a new central track in case \emph{(ii)} are
\begin{equation}\label{eq:first-cov}
    \vv{C}_{0|0}^c(u) = \left[\vv{P}_{0}^1(n_1) + \vv{P}_0^2(n_2) \right]^{-1},
\end{equation}
\begin{equation}
\begin{multlined}\label{eq:first-state}
    \hat{\vv{x}}_{0|0}^c(u) = \vv{C}_{0|0}^c(u) \left[\vv{P}_{0}^1(n_1)\hat{\vv{x}}_{0}^1(n_1) + \vv{P}_{0}^2(n_2)\hat{\vv{x}}_{0}^2(n_2) \right],
\end{multlined}
\end{equation}
for the couple of associated tracks $n_1$ and $n_2$.
This fusion rule is typically used when the errors at the sensors are uncorrelated or the correlation can be neglected \cite{chong2000architectures}. Note that, to detect when a SS fusion has to be performed, our algorithm applies the SS association procedure to all the sensor tracks that have \textit{not} been associated to any central track in the current slot.
In case more than $2$ sensors are available, the above process is repeated sequentially using sensors $1$ and $2$ first, then fusing the resulting track with the information from sensor $3$ and so on until the track sets of all $S$ sensors are used.

On the other hand, if the FC has already initialized the track for a subject, the fusion has to be performed between the central track and a sensor track corresponding to the same subject.
Denote by $\boldsymbol{\mathcal{T}}^c_m$ the set of tracks maintained by the FC at the central time step $m$.
Upon receiving the local information $\boldsymbol{\mathcal{T}}^s_m$, the FC runs the track-to-track association algorithm to find pairs of corresponding tracks $\{\mathcal{T}^c_m(u), \mathcal{T}^s_m(n)\}$. Once such pairs are available, each central track is updated with its corresponding sensor track using the \textit{information decorrelation} method \cite{chang1997optimal, chong2000architectures} as follows
\begin{equation}\label{eq:fusion-cov}
    \vv{C}_{m|m}^c(u) = \left[ \vv{P}_{m|m-1}^c(u) + \vv{P}_{m}^s(n) - \bar{\vv{P}}^s(n) \right]^{-1},
\end{equation}
\begin{equation}\label{eq:fusion-state}
\begin{multlined}
    \hat{\vv{x}}_{m|m}^c(u) = \vv{C}_{m|m}^c(u) \left[ \vv{P}_{m|m-1}^c(u) \hat{\vv{x}}_{m|m-1}^c(u)+  \right. \\ \left. + \vv{P}_{m}^s(n)\hat{\vv{x}}_{m}^s(n) - \bar{\vv{P}}^s(n)\bar{\vv{x}}^s(n)\right],
\end{multlined}
\end{equation}
where $\bar{\vv{P}}^s(n)$ and $\bar{\vv{x}}^s(n)$ are the last communicated precision matrix and state estimate of track $n$ from sensor $s$ to the FC.
Information decorrelation copes with the problem of correlated tracks between the FC and the radar sensors, by removing the most recently received information about target $n$ (or $u$ from the FC perspective), as, otherwise, this would be accounted for twice by just summing $\vv{P}_{m|m-1}^c(u)$ and $\vv{P}_{m}^s(n)$.

\subsection{Track initialization and termination}\label{sec:track-man}
To deal with the initialization and termination of central tracks, while keeping the complexity of the system as low as possible, we follow a \mbox{so-called} $\texttt{m}/\texttt{n}$ logic, similar to what is done for the local tracking process of each radar sensor \cite{pegoraro2021real}. Specifically, a track is maintained if it is associated with any of the received sensor tracks for at least $\texttt{m}$ out of the last $\texttt{n}$ frames. Similarly, received sensor tracks that are not associated with any existing central track are initialized as new tracks if they are detected for at least $\texttt{m}$ out of the last $\texttt{n}$ frames. As detailed in \secref{sec:track-fusion}, before initializing a new central track, the received selected tracks form the radars are associated and fused with an SS fusion step, whenever possible. In this way, we avoid multiple initializations of the tracks corresponding to the same targets.

\section{Experimental results}\label{sec:results}
\begin{figure}
    \centering
    \subfloat[][\label{fig:setup-1}]
    {\includegraphics[width=.11\textwidth]{figures/setup/setup1.pdf}} \,
        \subfloat[][\label{fig:setup-2}]
    {\includegraphics[width=.11\textwidth]{figures/setup/setup2.pdf}} \,
        \subfloat[][\label{fig:setup-3}]
    {\includegraphics[width=.11\textwidth]{figures/setup/setup3.pdf}} \,
        \subfloat[][\label{fig:setup-4}]
    {\includegraphics[width=.11\textwidth]{figures/setup/setup4.pdf}} \,

     \caption{Setup schemes. The dots represent the radar devices and the arrows identify their pointing direction. The green areas are the movement regions.}
    \label{fig:setups}

\end{figure}

We implemented ORACLE using Texas Instruments IWR1843BOOST mmWave radars\footnote{https://www.ti.com/tool/IWR1843BOOST} connected to two NVIDIA Jetson TX2 edge computing devices\footnote{https://developer.nvidia.com/embedded/jetson-tx2} communicating via Ethernet. The radars operate in the \mbox{$77$-$81$~GHz} band in real-time at a frame rate of \mbox{$1/T = 15$~Hz} with a FoV of $\pm 60^{\circ}$ and $\pm 15^{\circ}$ over the azimuth and elevation planes, respectively. Next, we present the experimental results obtained by testing the system in different scenarios, with $2$ radar devices and up to $2$ concurrently moving subjects.

\subsection{Measurements setup and Dataset}
\label{sec:setup-dataset}
To assess the performance of the proposed method, we conducted tests in a $7\times 4$~m research laboratory (see \fig{fig:setup-1}) equipped with a motion tracking system featuring $10$ cameras. This provides the ground truth (GT) 3D localization of a set of markers placed on
the radars and on the moving subjects
with millimeter-level accuracy.
We considered $4$ different scenarios with $2$ radars and $1$ or $2$ moving targets.
The locations and orientations of the radars in the different setups are shown in \fig{fig:setups}, where the black circles represent the radars, the arrows identify their orientations, and the green area is the region of the laboratory where the subjects were allowed to move.
We also asked the subjects to move according to $3$ possible different trajectories:
\emph{(i)} straight, identifying a movement along a straight line, \emph{(ii)} $8$-shape, and \emph{(iii)} free, corresponding to an arbitrary trajectory.
Denoting by $x$T a measurement sequence involving $x$ targets, we collected $24$ 1T sequences and $8$ 2T sequences, where each sequence is $40$~s long.

\subsection{Evaluation metrics}
\label{sec:evaluation-metrics}
To evaluate the self-calibration algorithm performance, we define the \emph{orientation error} as the absolute value of the difference between the true orientation angle of a radar and the estimated one. This is derived from the corresponding rotation matrix, after calibration, as explained in \secref{sec:selfcal-problem}.
The \emph{position error} is defined as the Euclidean distance between the estimated position of the radar and its true position.
In order to assess the tracking performance, we adopt the \emph{Multiple Object Tracking Performance Accuracy} (MOTA) metric, which accounts for the number of misses, false positives, and switches in the object detections, and the \emph{Multiple Object Tracking Performance Precision} (MOTP) metric, which represents the mean position error by considering only correctly tracked objects. More details about these metrics can be found in \cite{bernardin2006multiple}.

\subsection{Self-calibration} \label{sec:selfcal-res}

\emph{Qualitative results}.
\fig{fig:exampleTrack} shows a qualitative example of the calibration process.
Here, after finding the optimal rotation and translation parameters, we applied the rigid transformation to the trajectory seen by radar $2$ (blue line), so as to superimpose it with the one of radar $1$ (orange line). The transformed trajectory (green line) matches well with the reference one, showing a good calibration result.
We represent the reference radar with a red square (located at $[0, 0]^T$), while the black triangle and the purple square mark the estimated position of radar $2$ and its GT, respectively.
\begin{figure}[]
        \centering
        \includegraphics[width=0.7\columnwidth]{figures/seq_217_trackNTII.pdf}
        \caption{Example of the transformation of a free movement trajectory.}        \label{fig:exampleTrack}
\end{figure}

\emph{Position and orientation errors}.
\tab{tab:perfMetric} summarizes the calibration performance. The orientation error is about $3^\circ$ in all cases, while the position error, in case of 1T sequences, is lowest for the $8$-shape trajectory, with a value as low as $11$~cm. In case of free movement, the median error raises to $25$~cm. However, with 2 subjects concurrently (and freely) moving, the self-calibration gives a position error of $18$~cm, which is a significant improvement with respect to the 1T free movement case. This is a distinctive advantage of our track association method, which allows to simultaneously exploit all trajectories seen by the two radars, yielding a higher number of available measurements for the calibration during the same observation time. In the experiments, we empirically set $A_{\rm{thr}}=-2$.
\begin{table}[t!]
    \centering
    \caption{Summary of the median errors for different setups}
    \label{tab:perfMetric}
    \scalebox{0.67}{
        \begin{tabular}{ccccc}
            \toprule

            \textbf{Median error}& \textbf{1T Straight} & \textbf{1T 8-Shape} & \textbf{1T Free} & \textbf{2T Free}\\
            \midrule
            \textbf{Orientation [$^\circ$}] & 3.10 & 2.78 & 2.66 & 2.86 \\
            \textbf{Position [m]} & 0.21 & 0.11 & 0.24 & 0.18 \\
            \bottomrule
        \end{tabular}
    }
\end{table}

\emph{Calibration quality assessment}. We propose a practical method to assess the calibration quality at run time, by examining the number of samples ORACLE needs to achieve a sufficiently low residual error, namely, the value of $K$ in \eq{eq:opt-problem}.
As a measure of the calibration quality, we use the residual error after transforming the trajectories of radar $s$ to radar $1$ reference system: if the tracks from the two radars match well, we can assume the calibration has reached a low positioning and orientation error. \fig{fig:ConvergencePlot} shows the residual error (RMSE) as the the number of sequence samples $K$ (see \eq{eq:opt-problem}) used for the calibration varies from $15$ to $150$ (i.e., when the calibration time interval spans $1$ to $10$~s). The dotted lines represent the median error on the estimated position of radar $s$ with respect to the GT. A practical way of assessing the calibration quality is important because GT is not available in a real scenario. From the figure, we see that $90$ samples ($6$~s) are enough to reach low values for both the RMSE and the true positioning error.

\begin{figure}[t!]
        \centering
        \includegraphics[width=0.85\columnwidth]{figures/boxplotConvTII.pdf}

        \caption{Residual error as a function of the number of samples $K$. The dotted line shows the median position error using with respect to the GT.}
        \label{fig:ConvergencePlot}
\end{figure}

\subsection{Fusion center tracking accuracy} \label{sec:fc-acc}
Since radar-based human tracking systems from the literature typically use single sensors \cite{zhao2019mid} \cite{canil2022-milliTRACE-IR}, beside the centralized fusion algorithm, we also implemented a single radar tracking system to compare against.
We evaluate the performance of the fusion algorithm in two cases: \emph{(i)} using the roto-translation parameters obtained from the GT, and \emph{(ii)} using their estimations from the self-calibration algorithm. In order to evaluate ORACLE in a more realistic scenario, when using the self-calibration, the transformation parameters are computed only once per setup,
that is, the first time a sequence from that setup is elaborated. Then, all sequences from the same setup use the same parameters.
\tab{tab:motmetrics} summarizes the results in terms of mean and standard deviation of MOTA and MOTP.
With one target (1T) single sensors performance (S1 and S2) are almost equal to those of the fusion center, we only see a slight decrease in the MOTP when using the self-calibration (FC-Self) with respect to the GT (FC-GT), due to the slightly imprecise estimation of the roto-translation parameters in that case.
With two targets (2T), single sensors experience a remarkable decrease in the MOTA ($8$-$10\%$) while the FC maintains high performance when using both the GT and the self-calibration, reducing the MOTA by only $3$-$4\%$.
This is due to the fact that multiple targets may often create occlusions with respect to single radars, thus increasing the number of misses and switches in the tracks.
Instead, this can be mitigated by fusing data from different points of view. This also shows that the proposed self-calibration algorithm works well in combination with the FC and can be effectively used to estimate the roto-translation parameters of multiple radars. MOTP remains constant when moving to the 2T case, as it is computed only for the correctly tracked objects.

\begin{table}[t!]
\centering
\caption{Summary of tracking algorithm performance}
\label{tab:motmetrics}
\scalebox{0.67}{
    \begin{tabular}{ccccc}
        \toprule

        & \textbf{S1} & \textbf{S2} & \textbf{FC-GT} & \textbf{FC-Self} \\
        \midrule

        \textbf{1T-MOTA} & $0.97 \pm 0.02$ & $0.96 \pm 0.02$ & $0.97 \pm 0.01$ & $0.97 \pm 0.01$ \\
        \textbf{1T-MOTP [m]} & $0.06 \pm 0.01$ & $0.10 \pm 0.03$ & $0.08 \pm 0.03$ & $0.14 \pm 0.06$ \\

        \midrule
        \textbf{2T-MOTA} & $0.87 \pm 0.09$ & $0.88 \pm 0.08$ & $0.94 \pm 0.03$ & $0.93 \pm 0.03$ \\
        \textbf{2T-MOTP [m]} & $0.06 \pm 0.01$ & $0.10 \pm 0.03$ & $0.08 \pm 0.03$ & $0.14 \pm 0.06$ \\

        \bottomrule
    \end{tabular}}
\end{table}

\subsection{Robustness to reduced fusion rate} \label{sec:frate-res}

\begin{figure}[t]
    \centering
    \subfloat[][\label{fig:mota-cgt}]
    {\includegraphics[width=4.4cm]{figures/mota_cgt.pdf}} \,
        \subfloat[][\label{fig:motp-cgt}]
    {\includegraphics[width=4.15cm]{figures/motp_cgt.pdf}} \,

    \caption{Average MOTA (a) and MOTP (b) versus different values of the ratio $T_c/T$, when calibration is performed using GT measurements (GT) or with the self-calibration (Self). The shaded areas represent $1$ standard deviation.}
    \label{fig:change-slot-time}

\end{figure}

In certain resource-constrained applications it may be useful to reduce the FC processing rate of the sensors data, in order to reduce the computational burden. However, this requires striking a balance between fusion rate and tracking accuracy, as lowering the processing rate reduces the capability of the FC to follow the tracked subjects' movement.

In \fig{fig:change-slot-time}, we show the MOTA and MOTP curves as a function of the ratio $T_c/T$. This is varied by fixing $T = 66.7$~ms ($15$~fps) and changing $T_c$. We can identify three regions.

\noindent \textit{(i)} For $T_c/T < 0.8$, the MOTA is very low, as the FC runs significantly faster than the sensors and, therefore, has to rely mostly on the KF predictions, which are inaccurate after a few consecutive steps. The MOTP instead is unaffected as it is obtained only on the successfully tracked subjects.

\noindent \textit{(ii)} For $0.8 \leq T_c/T < 1.5$, our system reaches the best performance in terms of MOTA, i.e., over $0.92$. At the same time, the MOTP is still low, reaching at most $20$~cm errors when using self calibration with $T_c/T = 1.5$. This shows that, if necessary, the processing load on the FC can be reduced by $1/3$ without incurring large performance degradation.

\noindent \textit{(iii)} For $T_c/T \geq 1.5$, the MOTA degrades slowly and the MOTP increases. This is because the time-step of the FC, especially towards the end of this region, is too long to accurately follow human movement using the CV model.

Finally, one can notice that the MOTA in region \textit{(ii)} is almost unaffected by using the self-calibration in place of the GT sensor locations and orientations. On the other hand, as expected, the MOTP is slightly worse in case self-calibration is used, as the residual error in the sensors locations due to the self-calibration indirectly affects the FC precision.

\section{Conclusions} \label{sec:concl}
In this work we presented ORACLE, a solution to the mmWave radar network deployment and integration problem for human sensing purposes.
First, ORACLE automatically estimates the relative position and orientation of the radars with respect to a common reference system. Then, it exploits such estimates to fuse the information about people tracked by different radars at a fusion center, enhancing the resilience of the subject localization in case of occlusions.
ORACLE estimates the radars' position and orientation with a median error of $0.18$~m and $2.86^{\circ}$, respectively, exploiting the free movement of tracked people.
Then, by fusing multiple radars tracking information, ORACLE improves on single sensors by up to $6\%$ in mean tracking accuracy, with a mean precision as low as $0.14$~m.
Finally, ORACLE handles different time steps for the single sensors and for the FC, keeping the tracking accuracy higher than $0.92$ when the ratio between the central and the sensors time step is $0.8 \le T_c/T < 1.5$.
These results substantiate ORACLE as a key technology enabler for calibration and unified tracking among multiple radars in radar networks, serving as a base system for various industrial applications like personnel recognition, automatic accident detection, restricted areas access monitoring, and many others.

\bibliographystyle{IEEEtran}

Systems and Control (eess.SY); Signal Processing (eess.SP)