# Kinetic temperature and radial flow velocity estimation using identified
hadrons and light (anti-)nuclei produced in relativistic heavy-ion collisions
at RHIC and LHC

Junaid Tariq<EMAIL_ADDRESS>Department of Physics, Quaid-i-Azam
University, Islamabad 44000, Pakistan  M. U. Ashraf<EMAIL_ADDRESS>Centre for Cosmology, Particle Physics and Phenomenology (CP3), Université
Catholique de Louvain, B-1348 Louvain-la-Neuve, Belgium  Grigory Nigmatkulov
<EMAIL_ADDRESS>Physics Department, University of Illinois at Chicago,
Chicago, Illinois 60607, USA

###### Abstract

We report the investigation of the kinetic freeze-out properties of identified
hadrons ($\pi^{\pm}$, $K^{\pm}$ and $p(\bar{p})$) along with light
(anti-)nuclei $d(\bar{d})$, $t(\bar{t})$ and ${}^{3}He$ in relativistic heavy-
ion collisions at RHIC and LHC energies. A simultaneous fit is performed with
the Blast-Wave (BW) model to the transverse momentum ($p_{\rm T}$) spectra of
identified hadrons together with light (anti-)nuclei produced in Au+Au
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV at the
RHIC and in Pb+Pb collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76
at the LHC. The energy and centrality dependence of freeze-out parameters,
i.e., kinetic freeze-out temperature ($T_{kin}$) and collective flow velocity
$\langle\beta\rangle$ has been studied. It is observed that light
(anti-)nuclei also participate in the collective expansion of the medium
created in the collision when included in a common fit with the light hadrons.
We observe a marginal rise in the $T_{kin}$ and a slight decrease in
$\langle\beta\rangle$ when compared to the values obtained from the fit to
light hadrons, indicating that heavier particles decouple earlier in time from
the fireball compared to the light hadrons due to higher masses and are more
sensitive to the effects of the radial flow. A similar $\langle\beta\rangle$
and significant larger $T_{kin}$ is observed when fit is performed to only
protons and light (anti-)nuclei. Additionally, we also observe that the
$T_{kin}$ increases from central to peripheral collisions, which is consistent
with the argument of short-lived fireball in peripheral collisions. Whereas
the $\langle\beta\rangle$ shows a decreasing trend from central to peripheral
collisions indicating a more rapid expansion in the central collisions. Both,
$T_{kin}$ and $\langle\beta\rangle$ show a weak dependence on the collision
energy at most energies. We also observe a strong anti-correlation between
$T_{kin}$ and $\langle\beta\rangle$.

###### pacs:

25.75.-q, 25.75.Ld, 25.75.Nq

##  I Introduction

The investigation of the properties of nuclear matter under extreme conditions
is one of the main goals of the heavy-ion program at the Relativistic Heavy
Ion Collider (RHIC) and the Large Hadron Collider (LHC) experiments. The
ultrarelativistic heavy-ion collisions create a condition suitable for light
(anti-)nuclei production, where a significantly high energy density is
achieved over a large volume. These conditions produce a very hot and dense
matter for a very short interval of time ($\approx 10^{-22}$ seconds)
containing approximately equal number of quarks and anti-quarks. This
deconfined matter of quarks and gluons, the Quark-Gluon plasma (QGP), is
formed during the initial state of collisions. Afterwards, the system
experiences a rapid expansion with drop in its temperature and finally
undergoes a phase transition towards hadron gas.

In recent years, there has been a significant emphasis on studying the
production of light nuclei in heavy-ion collisions at the Bevalac [1], SIS [2,
3], AGS [4, 5, 6, 7, 8], SPS [9, 10, 11, 12, 13], RHIC [14, 15, 16, 17, 18,
19, 20, 21], and LHC [22, 23, 24, 25, 26, 27]. The centrality and energy
dependence of the production of light (anti-)nuclei has been a topic of
significant interest and suggested a relevancy between the critical point and
light (anti-)nuclei production [28, 29, 30, 31, 32]. However, the precise
mechanisms and temporal aspects of light nuclei production in relativistic
heavy-ion collisions continue to be subjects of debate due to relatively small
binding energies ($\approx$ few MeV) and finite sizes of these nuclei.

It is of significant importance to study the production of light (anti-)nuclei
for multiple reasons. First of all, it is not well understood how a cluster is
formed in the interior of the fireball during the collision of heavy nuclei,
which requires further quantitative investigation. It is probable that a
substantial fraction of few-nucleon bound states observed near midrapidity are
produced during the latter phases of the reaction, when the hadronic matter
experiences dilution and most of the newly formed hydrogen and helium isotopes
decouple from the source having no subsequent rescatterings. In this scenario,
light (anti-)nuclei may be helpful to probe the dynamics of the fireball at
the time of freeze-out.

The evolution of the system produced in relativistic heavy-ion collisions is
mainly described by chemical and kinetic freeze-out scenarios. The chemical
freeze-out represents the stage when the inelastic collisions among hadrons
stop and there is no further composition of new bound states after this stage
leads to fixed yield of produced particles at this stage. At the kinetic
freeze-out, the ongoing elastic interactions between produced particles
results a change in the momenta of particles. The chemical and kinetic freeze-
outs are assumed to happen simultaneously at the boundary between hadronic and
QGP phases and the system is at chemical and kinetic equilibrium with sudden
freeze-out [33]. At the other end, one might also consider another scenario,
where chemical and kinetic freeze-outs take place at significantly distinct
time frames. The resonances produced at the chemical freeze-out stage would
decay more rapidly and the system tend to evolve with elastic collisions
between hadrons. In this case, the system stays at local thermal equilibrium
until the kinetic freeze-out [34].

The formation of (anti-)nuclei is very sensitive to conditions such as
chemical freeze-out conditions, the dynamics of the emitting source and final
state effects. Numerous scenarios to study the production mechanisms of
(anti-)nuclei have been proposed and are typically discussed within three
approaches. The first is thermal-statistical model that is very successful in
describing the integrated yield of not only hadrons but also for composite
nuclei [35, 36, 37, 38, 39]. The production of light (anti-)nuclei can also be
studied by the coalescence model, in which protons and neutrons with similar
velocities and positions on the kinetic freeze-out surface coalesce to form
nuclei [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]. The third approach is kinetic
theory, which is based on the assumption that when light (anti-)nuclei are
thermally produced at the chemical freeze-out, they might break and formed
again by the final state coalescence during the evolution of the collision
system [50, 51, 52, 53]. Surprisingly, it appears that both, the thermal-
statistical and coalescence approaches give very consistent predictions [54].

Additionally, the blast-wave (BW) [55] parametrization is extensively utilized
to describe the $p_{\rm T}$ spectra of light (anti-)nuclei [19, 21]. The
conceptual basis for the BW model is derived from its similarity to the
freeze-out configuration within the hydrodynamic model [34]. The BW
parametrization provides a remarkably good fit to the $p_{\rm T}$ spectra of
light (anti-)nuclei produced in Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV at RHIC [19] and Pb+Pb
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV at LHC [21].
The only difference between the two different types of collision systems is
the exponent $n$ in the velocity profile ($\beta=\beta_{s}(\frac{r}{R})^{n}$),
which was set to 1 at RHIC, while it was treated as a free parameter at LHC.

Many studies have been performed to investigate the energy and centrality
dependence of kinetic freeze-out temperature ($T_{kin}$) and the radial flow
velocity ($\beta_{T}$) parameters by simultaneously fitting the $p_{\rm T}$
spectra of individual light hadrons (($\pi^{\pm}$, $K^{\pm}$ and
$p(\bar{p})$)) [56, 57] produced in heavy ion collisions as well as combined
with strange hadrons ($\mathrm{K}^{0}_{\mathrm{S}}$ and $\Lambda$) [58, 59],
and with $d,{}^{3}He$ with the BW model [21]. During the expansion phase of
the strongly interacting system, the pressure gradient gives a rise to the
collective flow. This results in a characteristic dependence of the shape of
the $p_{\rm T}$ distribution on the particle mass and can be described with a
common $T_{kin}$ and $\beta_{T}$ [55]. By a thorough analysis on the
simultaneous fit to the $p_{\rm T}$ spectra of light hadrons ($\pi^{\pm}$,
$K^{\pm}$ and $p(\bar{p})$) along with light (anti-)nuclei ($d(\bar{d})$ and
$t(\bar{t})$) we attempt to investigate the freeze-out parameters ($T_{kin}$
and $\beta_{T}$) extracted from the experimental data available for RHIC
energies. In this work, we performed a systematic study of energy and
centrality dependence of $T_{kin}$ and $\beta_{T}$ extracted from fitting the
$p_{\rm T}$ spectra of light hadrons along with light (anti-)nuclei with the
BW model from Au+Au collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7
– 200 GeV and Pb+Pb collisions at 2.76 TeV.

This paper is organized as follows. In Section II, we describe the analysis
method. Results and Discussion are presented in Section III. The conclusion is
summarized in Section IV.

##  II Analysis Method

Blast-Wave (BW) [55] is a phenomenological model commonly used to fit the
hadron as well as light (anti-)nuclei spectra by experimental collaborations
[19, 21]. The model is based on the assumption that particles are emitted
thermally for an expanding source with global variables: temperature ($T$) and
velocity profile ($\beta$ [55, 60]). The functional form can be written as:

$\frac{d^{2}N}{p_{T}dp_{T}}\propto\int_{0}^{R}rdrm_{T}I_{0}(\frac{p_{T}\sinh\rho(r)}{T_{kin}})\times
K_{1}(\frac{m_{T}\cosh\rho(r)}{T_{kin}}),$ (1)

where $m_{T}=\sqrt{p_{T}^{2}+m^{2}}$ is the transverse mass of the hadron
species. The $I_{0}$ and $K_{1}$ are the modified Bessel functions. The
temperature of the localized thermal sources, from which particles radiate, is
denoted by $T_{kin}$. While assuming the longitudinal expansion of the system
to be boost invariant, the velocity profile of the thermal source can be
parameterized as:

$\rho=tanh^{-1}\beta(r)=tanh^{-1}(\beta_{S}(\frac{r}{R})^{n}).$ (2)

The radial distance from the center of the fireball in the transverse plane is
represented by $r$, the radius of the fireball is $R$, the transverse
expansion velocity is $\beta(r)$ at radius $0\leq r\leq R$. The $\beta_{S}$ is
the transverse expansion velocity at the surface and exponent of the velocity
profile is $n$. The average radial flow velocity can be expressed as
$\langle\beta\rangle=\beta_{S}~{}.~{}2/(2+n)$ [61]. In order to study the
light (anti-)nuclei distribution in different colliding systems, $n$ was
treated differently. In Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV at RHIC [19], $n$ was
fixed to 1, while treated as a free parameter in Pb+Pb collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV at LHC [21] for better fit.
This different treatment of $n$ to study the light (anti-)nuclei $p_{\rm T}$
distribution at RHIC and LHC reflects the different dynamical evolution of the
fireball formed in heavy ion collisions. In the current work, to check the
universality of the BW parametrization we use $n=1$ for Au+Au and Pb+Pb
collisions. Therefore, the free parameters are only $T$, $\beta$ and the
normalization factor. Generally, the important parameters to determine the
shape of each spectrum are the $T$, $n$, $\beta$ and the mass of the particle
specie, but with the common $T$ and $\beta$, the mass of particle specie is an
important parameter which determine the shape of the spectrum in BW model
[62].

##  III Results and Discussion

The results of our analysis are presented in this section.

###  III.1 Transverse Momentum ($p_{\rm T}$) Spectra

It is crucial to observe that blast-wave (BW) fits represent a simplified
method that imitates the hydrodynamics involved in radial expansion and comes
with specific constraints. For instance, it is acknowledged that the
temperature is notably influenced by the chosen fit range and the particle
species. Particularly, the quality of the BW fits using the FastReso package
[63] is relatively good using a single temperature of $\approx$ 150 MeV for
chemical and kinetic freeze-out and it has been reported in Ref. [64] that the
temperature from these fits exhibits a weak dependence on centrality and
collision system. This is possible in the FastReco approach through its
explicit consideration of the feed-down effect from resonance decays.
Furthermore, alternative methods utilize an extended BW model approach with
additional parameters employed to LHC data for a better description [75]. The
conventional (Boltzmann-Gibbs) blast-wave parameterization provides a
straightforward and robust method for comparing the spectra of hadrons and
light (anti-)nuclei, which is the objective of the current study.

The measured $p_{\rm T}$ spectra of light hadrons ($\pi^{\pm}$, $K^{\pm}$ and
$p(\bar{p})$) and light (anti-)nuclei ($d(\bar{d})$ and $t(\bar{t})$) in Au+Au
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV from RHIC
[19, 56, 65] and Pb+Pb collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ =
2.76 TeV from LHC [21, 57] at available centrality classes are analyzed for
this purpose. No data available for $\bar{t}$ in Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV and Pb+Pb collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV. Therefore, we use
${}^{3}He$ along with $\pi^{\pm}$, $K^{\pm}$ and $p(\bar{p})$ in Pb+Pb
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV for our
analysis. Details of the data sets of light hadrons and light (anti-)nuclei
under investigation are summarized in Table 1. The simultaneous BW fits to the
$p_{\rm T}$ spectra of particle species under investigation are performed by
minimizing the value of $\chi^{2}/N_{DOF}$, where $N_{DOF}$ is the number of
degrees of freedom and is defined as the number of data points minus the
number of fitting parameters. The minimization procedure in the current
analysis is done by using the MINUIT [66] package available within the ROOT
framework [67].

For light hadrons, we repeated the analysis presented in Ref. [56] for a
simultaneous fit to the $p_{\rm T}$ spectra with BW model. The obtained
parameters from the BW fit are consistent with the previously reported results
[56]. The low $p_{\rm T}$ part of the pion spectra is significantly influenced
by resonance decays therefore, $p_{\rm T}$ $<0.5$ GeV/$c$ is excluded from the
fit. Conversely, at higher $p_{\rm T}$, eventual hard contributions may become
significant, which are not anticipated to be effectively described by the BW
model [68]. Therefore, the sensitivity of the BW model parameters especially
$T_{kin}$ is contingent upon the choice of $p_{\rm T}$ ranges used for fitting
[57]. The fit range for light hadrons have been limited according to Ref. [56]
(0.5 – 1.3 GeV/$c$, 0.25 – 1.4 GeV/$c$, 0.4 – 1.3 GeV/$c$ for
$\pi^{\pm},K^{\pm}$ and $p(\bar{p})$ respectively). However, for light
(anti-)nuclei the spectrum is fitted up to the maximum available $p_{\rm T}$
range. Figures 1 and 2 show the simultaneous BW fit using Eq. 1 to the $p_{\rm
T}$ spectra of light hadrons and light (anti-)nuclei in Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 39 GeV in 0–10%, 10–20% and 40–80%
centrality classes and Pb+Pb collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV in 0–20% and 20–80%
centrality intervals respectively as an example. The spectra of light
(anti-)nuclei are evidently well described by the common BW fit within
uncertainties indicating that relatively heavy particles, like
$d(\bar{d}),t(\bar{t})$ and ${}^{3}He$, also participate in a collective flow
field. The extracted fit parameters and $\chi^{2}/N_{DOF}$ are summarized in
Table 3 and Table 4.

Table 1: References for data System |  $\sqrt{S_{NN}}$ (GeV) |  Particle |  Collaboration |  Reference
---|---|---|---|---
Au-Au |  7.7, 11.5, 19.6, 27, 39 |  $\pi^{\pm}$, $K^{\pm}$, $p$, $\bar{p}$ |  STAR |  [57]
Au-Au |  14.5 |  $\pi^{\pm}$, $K^{\pm}$, $p$, $\bar{p}$ |  STAR |  [69]
Au-Au |  62.4 |  $\pi^{\pm}$,$p$, $\bar{p}$ |  STAR |  [70]
Au-Au |  62.4 |  $K^{\pm}$ |  STAR |  [71]
Au-Au |  200 |  $\pi^{\pm}$,$p$, $\bar{p}$ |  STAR |  [70]
Au-Au |  200 |  $K^{\pm}$ |  PHENIX |  [72]
Au-Au |  7.7, 11.5, 14.5, 19.6, 27, 39, 200 |  $d$, $\bar{d}$ |  STAR |  [19]
Au-Au |  7.7, 11.5, 14.5, 19.6, 27, 39, 200 |  $t$ |  STAR |  [65]
Pb-Pb |  2760 |  $\pi^{\pm}$,$K^{\pm}p$, $\bar{p}$ |  ALICE |  [57]
Pb-Pb |  2760 |  $d$, ${}^{3}He$ |  ALICE |  [21]
Pb-Pb |  5020 |  $\pi^{\pm}$,$K^{\pm}p$, $\bar{p}$ |  ALICE |  [73]
Pb-Pb |  5020 |  $d$,$\bar{d}$, ${}^{3}He$ |  ALICE |  [74]
Figure 1: (Color online) Blast-Wave model simultaneous fit to the $p_{\rm T}$
spectra of $\pi^{\pm}$, $K^{\pm}$, $p(\bar{p}),d(\bar{d})$ and $t(\bar{t})$ in
Au+Au collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 39 GeV in 0–10%,
10–20% and 40–80% centrality classes. Statistical and systematic errors are
added in quadrature. Figure 2: (Color online) Blast-Wave model simultaneous
fit to the $p_{\rm T}$ spectra of $\pi^{\pm}$, $K^{\pm}$,
$p(\bar{p}),d(\bar{d})$ and $t(\bar{t})$ in Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV in 0–20% and 20–80%
centrality classes. Statistical and systematic errors are added in quadrature.

###  III.2 Kinetic Freeze-out Parameters

The extracted freeze-out parameters from the BW fit have been presented in
this section. It is important to point out that the whole measured $p_{\rm T}$
range for all particle species is very well described by the BW function
(individual fit only), however, no physics meaning is attached to the
parameters. A combined BW fits to different particle species can be useful to
provide valuable insights into the freeze-out conditions and allow to compare
quantitatively between different systems colliding at different
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ in terms of hydrodynamic
interpretation. In principle different particle species can decouple at
different times leading to different values of $\langle\beta\rangle$ and
$T_{kin}$ from the hadronic medium due to different hadronic cross sections.
The interpretation of this statement becomes more arguable by forcing all the
particle species to decouple assuming same set of parameters.

Figure 3: (Color online) Centrality dependence of kinetic freeze-out
temperature ($T_{kin}$) of light hadrons and light (anti-)nuclei in Au+Au
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV and Pb+Pb
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV.  Figure 4:
(Color online) Centrality dependence of radial flow velocity
($\langle\beta\rangle$) of light hadrons and light (anti-)nuclei in Au+Au
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV and Pb+Pb
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV.

Figures 3 and 4 show the centrality dependence of temperature ($T_{kin}$) and
radial flow velocity ($\langle\beta\rangle$), respectively. The parameters are
extracted by simultaneous fits to the $p_{\rm T}$ spectra of light hadrons
along with light (anti-)nuclei in Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV from RHIC and Pb+Pb
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV from LHC. For
simplicity, the centrality classes of $\pi^{\pm}$, $K^{\pm}$, $p(\bar{p})$ are
merged and refitted to make it consistent with those used for $d(\bar{d})$ and
$t(\bar{t})$ measurements, i.e. 0–10%, 10–20%, 20–40% and 40–80%. Due to
unavailability of the triton $p_{\rm T}$ spectra from Pb+Pb collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV, we included ${}^{3}He$ in
the fits instead. Grey markers represent the published results for
$\pi^{\pm}$, $K^{\pm}$, and $p(\bar{p})$ from Ref. [56]. Blue markers depict
$\pi^{\pm}$, $K^{\pm}$, and $p(\bar{p})$ data with combined centrality
classes. Red markers correspond to $T_{kin}$ of $\pi^{\pm}$, $K^{\pm}$,
$p(\bar{p})$, and $d(\bar{d})$. It is evident from Fig. 3 that $T_{kin}$
exhibits an increasing trend as a function of centrality for all collision
energies. Furthermore, the inclusion of heavier particle species, such as
light (anti-)nuclei, results in slightly higher temperatures compared to those
of light hadrons. This effect is more prominent at energies
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ $\geq$ 62.4 GeV. Fig. 4 shows that
fitting both light hadrons with light (anti-)nuclei together leads to a
smaller values of $\langle\beta\rangle$ as compared to those when only light
hadrons are considered in the fits. To study the influence of light
(anti-)nuclei data on the global characteristics, we repeat the fit by
excluding $d(\bar{d})$ and $t$ simultaneously exhibiting similar trend with
slight smaller value of $T_{kin}$ and sightly larger values of
$\langle\beta\rangle$. This suggest that heavier particles decouple earlier in
time from the fireball compared to the light hadrons due to higher masses and
are more sensitive to the effects of the radial flow. Moreover, the $T_{kin}$
in mid-central 20–40% and peripheral collisions 40–80% at energies
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ $\leq$ 19.6 GeV is relatively lower as
compared to central collisions and start to increase at energies at energies
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ $\geq$ 27 GeV. On the other hand,
$\langle\beta\rangle$ is slightly larger at the same centrality classes and
energies. This may be related to the change in the collision geometry and
different production mechanisms of light (anti-)nuclei at lower energies
specifically in peripheral collisions where spectators plays an important
role. Thus, a clear hierarchical structure seems to be seen in kinetic freeze-
out suggesting more massive particles leave the medium earlier in time
compared to those of light particles. It is important to note that the
published data from the STAR experiment at RHIC on Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 62.4 GeV and 200 GeV [70, 71, 72]
used a slightly different configuration of the detector setup as compared to
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 39 GeV data sets. This can be
seen as a slight difference between our estimations and the published results.
The foreseen analysis of identified hadrons with recent detector upgrades will
be helpful to understand this slight difference. We have also repeated the
analysis by treating $n$ as a free parameter. It is shown that the best fit
values of the extracted parameters $T_{kin}$ and $\langle\beta\rangle$ are
found to be nearly unaltered when letting the parameter $n$ free for all
energies.

Table 2: Combined parameters extracted from the blast-wave fit to the $p_{\rm T}$ spectra of different set of particle species (light hadrons and light (anti-)nuclei) in central (0–10%) Au+Au collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 27 GeV and Pb+Pb collisions at 2.76 TeV.  $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ |  Sets |  Particle |  $<\beta>$ |  $T$ (MeV) |  $n$ |  $\chi^{2}$/ dof
---|---|---|---|---|---|---
27GeV |  Set A |  $\pi^{\pm}$, $K^{\pm}$, $p$, $\bar{p}$, $d(\bar{d}),t$ |  $0.465\pm 0.003$ |  $116\pm 3$ |  $0.857\pm 0.040$ |  0.53
|  Set B |  $p(\bar{p})$, $d(\bar{d}),t$ |  $0.464\pm 0.017$ |  $129\pm 9$ |  $0.723\pm 0.104$ |  0.72
|  Set C |  $d(\bar{d}),t$ |  $0.460\pm 0.017$ |  $121\pm 10$ |  $0.840\pm 0.132$ |  1.25
|  Set D |  $\pi^{\pm}$, $K^{\pm}$, $p$, $\bar{p}$ |  $0.475\pm 0.033$ |  $116\pm 3$ |  $0.672\pm 0.198$ |  0.28
2.76 TeV |  Set A |  $\pi^{\pm}$, $K^{\pm}$, $p$, $\bar{p}$, $d,^{3}$He |  $0.673\pm 0.003$ |  $115\pm 3$ |  $0.698\pm 0.015$ |  0.75
|  Set B |  $p(\bar{p})$, $d(\bar{d}),^{3}$He |  $0.633\pm 0.08$ |  $149\pm 7$ |  $0.556\pm 0.031$ |  0.41
|  Set B′ |  $p(\bar{p})$, $d(\bar{d}),^{3}$He |  $0.673\pm 0.003$ |  $132\pm 5$ |  $0.688\pm 0.025$ |  2.3
|  Set C |  $d,^{3}$He |  $0.622\pm 0.007$ |  $80\pm 17$ |  $0.779\pm 0.043$ |  0.18
|  Set D |  $\pi^{\pm}$, $K^{\pm}$, $p$, $\bar{p}$ |  $0.640\pm 0.018$ |  $98\pm 5$ |  $0.701\pm 0.120$ |  0.25

In the coalescence model nuclei are assumed to be formed at a later stage of
the collisions precisely at or after the kinetic freeze-out. Under this
condition, one can anticipate that the $p_{\rm T}$ spectra of both protons and
(anti-)nuclei reflect a common temperature and velocity field of the source at
or later stage of the nuclear cluster formation. To provide a more detailed
explanation, we have categorized various particle species into distinct sets
and performed the BW fit. Set A includes $\pi^{\pm}$, $K^{\pm}$, $p(\bar{p})$,
$d(\bar{d})$ and $t$; Set B comprises $p(\bar{p})$, $d(\bar{d})$ and $t$; Set
C consists of $d(\bar{d})$ and $t$; and Set D contains only $\pi^{\pm}$,
$K^{\pm}$, $p(\bar{p})$. Note that we use ${}^{3}He$ instead of $t$ where no
data for triton is available at LHC energies. The extracted parameters from
different set of combinations in (0–10%) central Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 27 GeV are listed in Table 2 as an
example. The similar trend is observed for the rest of energies. It is evident
from the Table 2 that including $p(\bar{p})$ in the fit with light
(anti-)nuclei exhibits a similar velocity profile as observed when
$\pi^{\pm}$, $K^{\pm}$, $p(\bar{p})$ are considered in the fit (Set A).
However, there is a notable difference in the kinetic freeze-out temperature
($T_{kin}$) and is found to be significantly larger ($129\pm 9$) MeV which is
unexpected in the context of final-state coalescence and requires further
investigation. However, the observed results aligns with the hypothesis of
statistical hadronization in which light (anti-)nuclei are formed close to the
phase boundary without undergoing significant interactions at later stages of
the system evolution. The observed scenario might be explained by considering
prehadronic multiquark states and has been discussed in detail in Ref. [36,
75]. We repeat the exercise for Pb+Pb collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV and observed similar
findings. The corresponding extracted parameters are listed in Table 2. The
velocity profile of Set B, when including $p(\bar{p})$ in the fit along with
light (anti-)nuclei, appears to be relatively lower compared to Set A.
However, the $T_{kin}$ is significantly larger ($149\pm 7$) MeV. To understand
this, we introduced another set, denoted as Set B′, in which we keep the same
velocity profile as that of Set A. As a result, the $T_{kin}$ is noticeably
reduced to ($132\pm 5$) MeV and is consistent with ALICE experimental results
from Pb+Pb collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 5.02 TeV
[75].

For further investigation, a simultaneous BW fit is performed to the $p_{\rm
T}$ spectra of only light (anti-)nuclei in Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 27 GeV (Set C). The extracted
$T_{kin}$ is $121\pm 10$ MeV is in good agreement within uncertainties with
the results of Set A, where all particles are included in the fit and are
listed in Table 2. This finding appears to be more consistent with the
expectations of the coalescence model. It suggests that protons freeze-out
earlier at a higher temperature as indicated by Set B. Subsequently, these
protons and neutrons coalesce to form nuclei at a later stage through the
coalescence process. When examining Set D, which considers only 0–10% central
$\pi^{\pm}$, $K^{\pm}$, $p(\bar{p})$ $p_{\rm T}$ spectra in Au+Au collisions
at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 27 GeV in the fit the resulting
$T_{kin}$ is $116\pm 3$ MeV. On the other hand, in Pb+Pb collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV the value of $T_{kin}$ from
Set D relatively lower than that obtained from Set A, suggesting that the
inclusion of the lightest particles contributes to the observation of lower
kinetic freeze-out temperatures. It is observed that $T_{kin}$ in 0–10%
central Au+Au collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 27 GeV is
considerably higher than those in 0–10% central Pb+Pb collisions reported at
LHC energies, as documented in Ref. [57]. It is important to emphasize that
lighter particles are more likely to be influenced by contributions
originating from resonance decays and hard scatterings across a broader
$p_{\rm T}$ range as compared to those of heavier particles. It is important
to mention that the BW model is only a simplified hydrodynamic approach to
understand the collective motion and freeze-out of particles and has certain
limitations; therefore, one should be cautious when making any strong
conclusions.

Figure 5: (Color online) Variation of kinetic freeze-out temperature
($T_{kin}$) with radial flow velocity ($\langle\beta\rangle$) in Au+Au
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV and Pb+Pb
collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV for different
centrality classes. The centrality increases from left to right for a given
energy.

Figure 5 shows the variation of extracted $T_{kin}$ with $\langle\beta\rangle$
for different centrality classes and energies. The grey markers are the
simultaneous fit to $\pi^{\pm},K^{\pm}$ and $p(\bar{p})$ $p_{\rm T}$ spectra
only and are taken from Ref. [56]. The colored markers are our combined BW fit
to the $p_{\rm T}$ spectra of $\pi^{\pm},K^{\pm},p(\bar{p}),d(\bar{d}),t$ and
${}^{3}He$. We observe that including light (anti-)nuclei in the analysis
leads to a slight increase in $T_{kin}$ and slight decrease in
$\langle\beta\rangle$. This might be an indication of earlier freeze-out of
the system by adding more heavier particle to the fit and might be more
sensitive to the effects of radial flow. Moreover, the extracted parameters
show strong two dimensional anti-correlation, i.e. higher values of $T_{kin}$
corresponds to lower values of $\langle\beta\rangle$ and vice-versa.

Figure 6: (Color online) Energy dependence of kinetic freeze-out temperature
($T_{kin}$) (top) and radial flow velocity ($\langle\beta\rangle$) (bottom)
for central heavy-ion collisions.

Energy dependence of kinetic freeze-out temperature ($T_{kin}$) and radial
flow velocity ($\langle\beta\rangle$) extracted from the fit to $p_{\rm T}$
spectra of light hadrons along with light (anti-)nuclei is shown in Fig. 6.
The red markers represent our fit to the $p_{\rm T}$ spectra of
$\pi^{\pm},K^{\pm},p(\bar{p})$ in central (0–10%) Au+Au collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 200 GeV and Pb+Pb collisions at
$\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV. The blue markers are the
world published data for identified particles. Green markers correspond to the
BW fit to the $p_{\rm T}$ spectra of light hadrons together with light
(anti-)nuclei. It is observed that $T_{kin}$ is relatively higher and
$\langle\beta\rangle$ is lower when we include light (anti-)nuclei in the fit.
Overall, they follow the trend of the world data. $T_{kin}$ remains almost
constant from energies $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 – 39 GeV
and starts decreasing towards LHC energies. On the other hand, the transverse
flow velocity $\langle\beta\rangle$ increases over the entire energy range.

##  IV Conclusions

The analysis of transverse momentum $p_{\rm T}$ spectra of produced particles
provide insights into the particle production mechanisms as well as the
freeze-out conditions of the system. We reported the comprehensive
investigation of the kinetic freeze-out properties of identified hadrons
($\pi^{\pm}$, $K^{\pm}$ and $p(\bar{p})$) along with light (anti-)nuclei
$d(\bar{d})$, $t(\bar{t})$ and ${}^{3}He$ in relativistic heavy-ion collisions
at RHIC and LHC energies. The $p_{\rm T}$ distribution of identified hadrons
including light (anti-)nuclei is fitted simultaneously with the Blast-Wave
model. This detailed study suggests that relatively heavier particles like
light (anti-)nuclei participate in a common flow field resulting in a slight
increase in $T_{kin}$ and slight decrease in $\langle\beta\rangle$ in
comparison to those when only identified hadrons are included in the fit. This
indicates that heavier particles decouple earlier in time from the fireball
compared to the light hadrons due to their higher masses and are more
sensitive to the effects of radial flow. The strong anti-correlation between
$T_{kin}$ and $\langle\beta\rangle$, i.e. the value of $T_{kin}$ increases
from central to peripheral collisions indicating shorter-lived fireball in
peripheral collisions, The value of $\langle\beta\rangle$ decrease from
central to peripheral collisions is consistent with the picture of more rapid
expansion of the system in central collisions at both, RHIC and LHC energies.
The extracted $T_{kin}$ show weak energy dependence at RHIC energies while
decreases at the LHC energies and $\langle\beta\rangle$ shows increasing trend
from RHIC to LHC energies. The $T_{kin}$ obtained from the BW fit to only
protons and light (anti-)nuclei is remarkably close to the chemical freeze-out
temperature derived from statistical hadronization models. The certain
limitations in the BW fit should be considered before make strong conclusion.

##  V Acknowledgement

The authors would like to acknowledge M. Aamir Shahzad, A. M. Khan for useful
discussions.

## References

  * [1] S. Nagamiya, M. C. Lemaire, E. Moller, S. Schnetzer, G. Shapiro, H. Steiner, and I. Tanihata.  Production of Pions and Light Fragments at Large Angles in High-Energy Nuclear Collisions.  Phys. Rev. C, 24:971–1009, 1981.
  * [2] W. Reisdorf et al.  Systematics of central heavy ion collisions in the 1A GeV regime.  Nucl. Phys. A, 848:366–427, 2010.
  * [3] J. Adamczewski-Musch et al.  Directed, Elliptic, and Higher Order Flow Harmonics of Protons, Deuterons, and Tritons in $\mathrm{Au}+\mathrm{Au}$ Collisions at $\sqrt{{s}_{NN}}=2.4\text{ }\text{ }\mathrm{GeV}$.  Phys. Rev. Lett., 125:262301, 2020.
  * [4] N. Saito et al.  Composite particle production in relativistic Au + Pt, Si + Pt, and p + Pt collisions.  Phys. Rev. C, 49:3211–3218, 1994.
  * [5] S. Albergo et al.  Light nuclei production in heavy ion collisions at relativistic energies.  Phys. Rev. C, 65:034907, 2002.
  * [6] T. A. Armstrong et al.  Measurements of light nuclei production in 11.5-A-GeV/c Au + Pb heavy ion collisions.  Phys. Rev. C, 61:064908, 2000.
  * [7] T. A. Armstrong et al.  Anti-deuteron yield at the AGS and coalescence implications.  Phys. Rev. Lett., 85:2685–2688, 2000.
  * [8] M. J. Bennett et al.  Light nuclei production in relativistic Au + nucleus collisions.  Phys. Rev. C, 58:1155–1164, 1998.
  * [9] Jehanne Simon-Gillo et al.  Deuteron and anti-deuteron production in CERN experiment NA44.  Nucl. Phys. A, 590:483C–486C, 1995.
  * [10] S. V. Afanasiev et al.  Deuteron production in central Pb + Pb collisions at 158-A-GeV.  Phys. Lett. B, 486:22–28, 2000.
  * [11] R. Arsenescu et al.  An Investigation of the anti-nuclei and nuclei production mechanism in Pb + Pb collisions at 158-A-GeV.  New J. Phys., 5:150, 2003.
  * [12] T. Anticic et al.  Energy and centrality dependence of deuteron and proton production in Pb + Pb collisions at relativistic energies.  Phys. Rev. C, 69:024902, 2004.
  * [13] T. Anticic et al.  Production of deuterium, tritium, and He3 in central Pb + Pb collisions at 20A,30A,40A,80A , and 158A GeV at the CERN Super Proton Synchrotron.  Phys. Rev. C, 94(4):044906, 2016.
  * [14] C. Adler et al.  Anti-deuteron and anti-He-3 production in s(NN)**(1/2) = 130-GeV Au+Au collisions.  Phys. Rev. Lett., 87:262301, 2001.  [Erratum: Phys.Rev.Lett. 87, 279902 (2001)].
  * [15] S. S. Adler et al.  Deuteron and antideuteron production in Au + Au collisions at s(NN)**(1/2) = 200-GeV.  Phys. Rev. Lett., 94:122302, 2005.
  * [16] S. Afanasiev et al.  Elliptic flow for phi mesons and (anti)deuterons in Au + Au collisions at s(NN)**(1/2) = 200-GeV.  Phys. Rev. Lett., 99:052301, 2007.
  * [17] B. I. Abelev et al.  Yields and elliptic flow of d(anti-d) and He-3(anti-He-3) in Au + Au collisions at s(NN)**(1/2) = 200- GeV.  9 2009.
  * [18] H. Agakishiev et al.  Observation of the antimatter helium-4 nucleus.  Nature, 473:353, 2011.  [Erratum: Nature 475, 412 (2011)].
  * [19] Jaroslav Adam et al.  Beam energy dependence of (anti-)deuteron production in Au + Au collisions at the BNL Relativistic Heavy Ion Collider.  Phys. Rev. C, 99(6):064905, 2019.
  * [20] Jaroslav Adam et al.  Precision measurement of the mass difference between light nuclei and anti-nuclei with the ALICE experiment at the LHC.  Nature Phys., 11(10):811–814, 2015.
  * [21] Jaroslav Adam et al.  Production of light nuclei and anti-nuclei in pp and Pb-Pb collisions at energies available at the CERN Large Hadron Collider.  Phys. Rev. C, 93(2):024917, 2016.
  * [22] Jaroslav Adam et al.  ${}^{3}_{\Lambda}\mathrm{H}$ and ${}^{3}_{\bar{\Lambda}}\overline{\mathrm{H}}$ production in Pb-Pb collisions at $\sqrt{s_{\rm NN}}=$ 2.76 TeV.  Phys. Lett. B, 754:360–372, 2016.
  * [23] Shreyasi Acharya et al.  Measurement of deuteron spectra and elliptic flow in Pb–Pb collisions at $\sqrt{s_{\mathrm{NN}}}$ = 2.76 TeV at the LHC.  Eur. Phys. J. C, 77(10):658, 2017.
  * [24] Shreyasi Acharya et al.  Production of deuterons, tritons, 3He nuclei and their antinuclei in pp collisions at $\mathbf{\sqrt{{\textit{s}}}}$ = 0.9, 2.76 and 7 TeV.  Phys. Rev. C, 97(2):024615, 2018.
  * [25] J. Adam et al.  Beam-energy dependence of the directed flow of deuterons in Au+Au collisions.  Phys. Rev. C, 102(4):044906, 2020.
  * [26] M. S. Abdallah et al.  Light nuclei collectivity from $\sqrt{s_{NN}}$ = 3 GeV Au+Au collisions at RHIC.  Phys. Lett. B, 827:136941, 2022.
  * [27] Shreyasi Acharya et al.  Measurement of anti-3He nuclei absorption in matter and impact on their propagation in the Galaxy.  Nature Phys., 19(1):61–71, 2023.
  * [28] Xiaofeng Luo and Nu Xu.  Search for the QCD Critical Point with Fluctuations of Conserved Quantities in Relativistic Heavy-Ion Collisions at RHIC : An Overview.  Nucl. Sci. Tech., 28(8):112, 2017.
  * [29] Kai-Jia Sun, Lie-Wen Chen, Che Ming Ko, and Zhangbu Xu.  Probing QCD critical fluctuations from light nuclei production in relativistic heavy-ion collisions.  Phys. Lett. B, 774:103–107, 2017.
  * [30] Edward Shuryak and Juan M. Torres-Rincon.  Light-nuclei production and search for the QCD critical point.  Eur. Phys. J. A, 56(9):241, 2020.
  * [31] Kai-Jia Sun, Lie-Wen Chen, Che Ming Ko, Jie Pu, and Zhangbu Xu.  Light nuclei production as a probe of the QCD phase diagram.  Phys. Lett. B, 781:499–504, 2018.
  * [32] Junaid Tariq, Sumaira Ikram, and M. U. Ashraf.  Study of strange quark density fluctuations in Au + Au Collisions at $\sqrt{\textrm{s}_{{}_{\textrm{NN}}}}$ = 7.7–200 GeV from AMPT Model.  Eur. Phys. J. A, 59(4):73, 2023.
  * [33] Wojciech Broniowski and Wojciech Florkowski.  Explanation of the RHIC p(T) spectra in a thermal model with expansion.  Phys. Rev. Lett., 87:272302, 2001.
  * [34] Fabrice Retiere and Michael Annan Lisa.  Observable implications of geometrical and dynamical aspects of freeze out in heavy ion collisions.  Phys. Rev. C, 70:044907, 2004.
  * [35] A. Andronic, P. Braun-Munzinger, J. Stachel, and H. Stocker.  Production of light nuclei, hypernuclei and their antiparticles in relativistic nuclear collisions.  Phys. Lett. B, 697:203–207, 2011.
  * [36] Anton Andronic, Peter Braun-Munzinger, Krzysztof Redlich, and Johanna Stachel.  Decoding the phase structure of QCD via particle production at high energy.  Nature, 561(7723):321–330, 2018.
  * [37] Volodymyr Vovchenko, Kai Gallmeister, Jürgen Schaffner-Bielich, and Carsten Greiner.  Nucleosynthesis in heavy-ion collisions at the LHC via the Saha equation.  Phys. Lett. B, 800:135131, 2020.
  * [38] J. Cleymans, S. Kabana, I. Kraus, H. Oeschler, K. Redlich, and N. Sharma.  Antimatter production in proton-proton and heavy-ion collisions at ultrarelativistic energies.  Phys. Rev. C, 84:054916, 2011.
  * [39] A. Andronic, P. Braun-Munzinger, K. Redlich, and J. Stachel.  The thermal model on the verge of the ultimate test: particle production in Pb-Pb collisions at the LHC.  J. Phys. G, 38:124081, 2011.
  * [40] S. T. Butler and C. A. Pearson.  Deuterons from High-Energy Proton Bombardment of Matter.  Phys. Rev., 129:836–842, 1963.
  * [41] Joseph I. Kapusta.  Mechanisms for deuteron production in relativistic nuclear collisions.  Phys. Rev. C, 21:1301–1310, 1980.
  * [42] Kai-Jia Sun and Lie-Wen Chen.  Production of antimatter 5,6Li nuclei in central Au+Au collisions at $\sqrt{s_{NN}}=200$ GeV.  Phys. Lett. B, 751:272–277, 2015.
  * [43] Lilin Zhu, Che Ming Ko, and Xuejiao Yin.  Light (anti-)nuclei production and flow in relativistic heavy-ion collisions.  Phys. Rev. C, 92(6):064911, 2015.
  * [44] Wenbin Zhao, Lilin Zhu, Hua Zheng, Che Ming Ko, and Huichao Song.  Spectra and flow of light nuclei in relativistic heavy ion collisions at energies available at the BNL Relativistic Heavy Ion Collider and at the CERN Large Hadron Collider.  Phys. Rev. C, 98(5):054905, 2018.
  * [45] Lilin Zhu, Hua Zheng, Che Ming Ko, and Yifeng Sun.  Light nuclei production in Pb+Pb collisions at $\sqrt{s_{NN}}=2.76$ TeV.  Eur. Phys. J. A, 54(10):175, 2018.
  * [46] Rui-Qin Wang, Feng-Lan Shao, and Jun Song.  Momentum dependence of light nuclei production in $p-p$ , $p-Pb$ , and Pb-Pb collisions at energies available at the CERN Large Hadron Collider.  Phys. Rev. C, 103(6):064908, 2021.
  * [47] Zi-Jian Dong, Gang Chen, Quan-Yu Wang, Zhi-Lei She, Yu-Liang Yan, Feng-Xian Liu, Dai-Mei Zhou, and Ben-Hao Sa.  Energy dependence of light (anti)nuclei and (anti)hypertriton production in the Au-Au collision from $\sqrt{s_{NN}}=11.5$ to 5020 GeV.  Eur. Phys. J. A, 54(9):144, 2018.
  * [48] Hui Liu, Dingwei Zhang, Shu He, Kai-jia Sun, Ning Yu, and Xiaofeng Luo.  Light nuclei production in Au+Au collisions at sNN = 5–200 GeV from JAM model.  Phys. Lett. B, 805:135452, 2020.  [Erratum: Phys.Lett.B 829, 137132 (2022)].
  * [49] X. G. Deng and Y. G. Ma.  Light nuclei production in Au + Au collisions at $\sqrt{s_{NN}}$ = 7.7-80 GeV from UrQMD model.  Phys. Lett. B, 808:135668, 2020.
  * [50] Rudiger Scheibl and Ulrich W. Heinz.  Coalescence and flow in ultrarelativistic heavy ion collisions.  Phys. Rev. C, 59:1585–1602, 1999.
  * [51] Kai-Jia Sun, Rui Wang, Che Ming Ko, Yu-Gang Ma, and Chun Shen.  Relativistic kinetic approach to light nuclei production in high-energy nuclear collisions.  6 2021.
  * [52] Dmytro Oliinychenko, Long-Gang Pang, Hannah Elfner, and Volker Koch.  Microscopic study of deuteron production in PbPb collisions at $\sqrt{s}=2.76TeV$ via hydrodynamics and a hadronic afterburner.  Phys. Rev. C, 99(4):044907, 2019.
  * [53] Jan Staudenmaier, Dmytro Oliinychenko, Juan M. Torres-Rincon, and Hannah Elfner.  Deuteron production in relativistic heavy ion collisions via stochastic multiparticle reactions.  Phys. Rev. C, 104(3):034908, 2021.
  * [54] J. Steinheimer, K. Gudima, A. Botvina, I. Mishustin, M. Bleicher, and H. Stocker.  Hypernuclei, dibaryon and antinuclei production in high energy heavy ion collisions: Thermal production versus Coalescence.  Phys. Lett. B, 714:85–91, 2012.
  * [55] Ekkard Schnedermann, Josef Sollfrank, and Ulrich W. Heinz.  Thermal phenomenology of hadrons from 200-A/GeV S+S collisions.  Phys. Rev. C, 48:2462–2475, 1993.
  * [56] L. Adamczyk et al.  Bulk Properties of the Medium Produced in Relativistic Heavy-Ion Collisions from the Beam Energy Scan Program.  Phys. Rev. C, 96(4):044904, 2017.
  * [57] Betty Abelev et al.  Centrality dependence of $\pi$, K, p production in Pb-Pb collisions at $\sqrt{s_{NN}}$ = 2.76 TeV.  Phys. Rev. C, 88:044910, 2013.
  * [58] Vardan Khachatryan et al.  Multiplicity and rapidity dependence of strange hadron production in pp, pPb, and PbPb collisions at the LHC.  Phys. Lett. B, 768:103–129, 2017.
  * [59] Betty Bezverkhny Abelev et al.  Multiplicity Dependence of Pion, Kaon, Proton and Lambda Production in p-Pb Collisions at $\sqrt{s_{NN}}$ = 5.02 TeV.  Phys. Lett. B, 728:25–38, 2014.
  * [60] Ekkard Schnedermann and Ulrich W. Heinz.  A Hydrodynamical assessment of 200-A/GeV collisions.  Phys. Rev. C, 50:1675–1683, 1994.
  * [61] O. Ristea, A. Jipa, C. Ristea, T. Esanu, M. Calin, A. Barzu, A. Scurtu, and I. Abu-Quoad.  Study of the freeze-out process in heavy ion collisions at relativistic energies.  J. Phys. Conf. Ser., 420:012041, 2013.
  * [62] Jia Chen, Jian Deng, Zebo Tang, Zhangbu Xu, and Li Yi.  Nonequilibrium kinetic freeze-out properties in relativistic heavy ion collisions from energies employed at the RHIC beam energy scan to those available at the LHC.  Phys. Rev. C, 104(3):034901, 2021.
  * [63] Aleksas Mazeliauskas, Stefan Floerchinger, Eduardo Grossi, and Derek Teaney.  Fast resonance decays in nuclear collisions.  Eur. Phys. J. C, 79(3):284, 2019.
  * [64] Aleksas Mazeliauskas and Vytautas Vislavicius.  Temperature and fluid velocity on the freeze-out surface from $\pi$, $K$, $p$ spectra in pp, p-Pb and Pb-Pb collisions.  Phys. Rev. C, 101(1):014910, 2020.
  * [65] Muhammad Abdulhamid et al.  Beam Energy Dependence of Triton Production and Yield Ratio ($\mathrm{N}_{t}\times\mathrm{N}_{p}/\mathrm{N}_{d}^{2}$) in Au+Au Collisions at RHIC.  Phys. Rev. Lett., 130:202301, 2023.
  * [66] F. James and M. Roos.  Minuit: A System for Function Minimization and Analysis of the Parameter Errors and Correlations.  Comput. Phys. Commun., 10:343–367, 1975.
  * [67] Cern, root, version v.6.28/08, 2023.  http://root.cern.ch.
  * [68] Smbat Grigoryan.  A three component model for hadron $p_{\mathrm{T}}$-spectra in pp and Pb–Pb collisions at the LHC.  Eur. Phys. J. A, 57(12):328, 2021.
  * [69] Jaroslav Adam et al.  Bulk properties of the system formed in $Au+Au$ collisions at $\sqrt{s_{\mathrm{NN}}}$ =14.5 GeV at the BNL STAR detector.  Phys. Rev. C, 101(2):024905, 2020.
  * [70] B. I. Abelev et al.  Energy dependence of pi+-, p and anti-p transverse momentum spectra for Au+Au collisions at s(NN)**(1/2) = 62.4 and 200-GeV.  Phys. Lett. B, 655:104–113, 2007.
  * [71] B. I. Abelev et al.  Systematic Measurements of Identified Particle Spectra in $pp,d^{+}$ Au and Au+Au Collisions from STAR.  Phys. Rev. C, 79:034909, 2009.
  * [72] A. Adare et al.  Spectra and ratios of identified particles in Au+Au and $d$+Au collisions at $\sqrt{s_{NN}}=200$ GeV.  Phys. Rev. C, 88(2):024906, 2013.
  * [73] Shreyasi Acharya et al.  Production of charged pions, kaons, and (anti-)protons in Pb-Pb and inelastic $pp$ collisions at $\sqrt{s_{NN}}$ = 5.02 TeV.  Phys. Rev. C, 101(4):044907, 2020.
  * [74] Shreyasi Acharya et al.  Light (anti)nuclei production in Pb-Pb collisions at sNN=5.02 TeV.  Phys. Rev. C, 107(6):064904, 2023.
  * [75] Shreyasi Acharya et al.  Measurement of (anti)alpha production in central Pb-Pb collisions at $\sqrt{s_{\rm NN}}$ = 5.02 TeV.  11 2023.

Table 3: Extracted kinetic freeze-out parameters in Au+Au collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 - 39 GeV from RHIC and Pb+Pb collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV with fixed $n=1$ quoted with errors. Collision |  Centrality |  $<\beta>$ |  $T$ (MeV) |  $\chi^{2}$/ dof
---|---|---|---|---
Au-Au 7.7 GeV |  $0-10\%$ |  $0.416\pm 0.004$ |  $117\pm 2$ |  2.40
|  $10-20\%$ |  $0.398\pm 0.004$ |  $119\pm 2$ |  0.77
|  $20-40\%$ |  $0.373\pm 0.004$ |  $121\pm 2$ |  1.30
|  $40-80\%$ |  $0.280\pm 0.013$ |  $131\pm 3$ |  3.20
Au-Au 11.5 GeV |  $0-10\%$ |  $0.425\pm 0.003$ |  $119\pm 2$ |  0.61
|  $10-20\%$ |  $0.396\pm 0.004$ |  $124\pm 2$ |  3.10
|  $20-40\%$ |  $0.377\pm 0.004$ |  $127\pm 2$ |  0.80
|  $40-80\%$ |  $0.435\pm 0.04$ |  $118\pm 2$ |  2.11
Au-Au 14.5 GeV |  $0-10\%$ |  $0.418\pm 0.001$ |  $123\pm 2$ |  0.44
|  $10-20\%$ |  $0.405\pm 0.004$ |  $127\pm 2$ |  0.30
|  $20-40\%$ |  $0.378\pm 0.004$ |  $132\pm 2$ |  0.33
|  $40-80\%$ |  $0.303\pm 0.006$ |  $138\pm 2$ |  1.84
Au-Au 19.6 GeV |  $0--10\%$ |  $0.432\pm 0.004$ |  $125\pm 2$ |  0.69
|  $10-20\%$ |  $0.413\pm 0.004$ |  $125\pm 2$ |  0.34
|  $20-40\%$ |  $0.390\pm 0.004$ |  $128\pm 2$ |  0.55
|  $40-80\%$ |  $0.317\pm 0.006$ |  $137\pm 2$ |  0.60
Au-Au 27 GeV |  $0-10\%$ |  $0.448\pm 0.003$ |  $117\pm 3$ |  0.64
|  $10-20\%$ |  $0.431\pm 0.003$ |  $122\pm 3$ |  0.43
|  $20-40\%$ |  $0.404\pm 0.004$ |  $129\pm 3$ |  0.31
|  $40-80\%$ |  $0.310\pm 0.007$ |  $146\pm 3$ |  0.60
Au-Au 39 GeV |  $0-10\%$ |  $0.446\pm 0.003$ |  $121\pm 3$ |  1.29
|  $10-20\%$ |  $0.434\pm 0.003$ |  $126\pm 3$ |  0.45
|  $20-40\%$ |  $0.401\pm 0.004$ |  $135\pm 3$ |  0.39
|  $40-80\%$ |  $0.319\pm 0.005$ |  $150\pm 3$ |  0.72
Au-Au 62.4 GeV |  $0-10\%$ |  $0.464\pm 0.004$ |  $122\pm 3$ |  1.43
|  $10-20\%$ |  $0.442\pm 0.004$ |  $130\pm 3$ |  1.32
|  $20-40\%$ |  $0.412\pm 0.006$ |  $139\pm 4$ |  1.01
|  $40-80\%$ |  $0.317\pm 0.010$ |  $150\pm 4$ |  0.85
Au-Au 200 GeV |  $0-10\%$ |  $0.501\pm 0.003$ |  $114\pm 3$ |  1.01
|  $10-20\%$ |  $0.488\pm 0.003$ |  $120\pm 3$ |  0.86
|  $20-40\%$ |  $0.463\pm 0.003$ |  $130\pm 4$ |  0.58
|  $40-80\%$ |  $0.390\pm 0.005$ |  $149\pm 4$ |  1.90
Pb-Pb 2760 GeV |  $0-20\%$ |  $0.630\pm 0.004$ |  $123\pm 4$ |  2.90
|  $20-80\%$ |  $0.585\pm 0.004$ |  $125\pm 5$ |  1.66
Table 4: Extracted kinetic freeze-out parameters in Au+Au collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 7.7 - 39 GeV from RHIC and Pb+Pb collisions at $\sqrt{\mathrm{s}_{{}_{\mathrm{NN}}}}$ = 2.76 TeV with free $n$ quoted with errors. Collision |  Centrality |  $<\beta>$ |  $T$ (MeV) |  n |  $\chi^{2}$/ dof
---|---|---|---|---|---
Au-Au 7.7 GeV |  $0-10\%$ |  $0.438\pm 0.004$ |  $115\pm 2$ |  0.786 |  2.10
|  $10-20\%$ |  $0.409\pm 0.005$ |  $118\pm 2$ |  0.906 |  0.76
|  $20-40\%$ |  $0.374\pm 0.005$ |  $119\pm 2$ |  1.07 |  0.78
|  $40-80\%$ |  $---$ |  $---$ |  $---$ |  $---$
Au-Au 11.5 GeV |  $0-10\%$ |  $0.435\pm 0.004$ |  $118\pm 2$ |  0.899 |  0.37
|  $10-20\%$ |  $0.418\pm 0.004$ |  $120\pm 2$ |  0.927 |  0.35
|  $20-40\%$ |  $0.364\pm 0.004$ |  $129\pm 2$ |  1.161 |  0.58
|  $40-80\%$ |  $0.240\pm 0.04$ |  $140\pm 2$ |  2.270 |  1.30
Au-Au 14.5 GeV |  $0-10\%$ |  $0.431\pm 0.004$ |  $122\pm 2$ |  0.891 |  0.39
|  $10-20\%$ |  $0.407\pm 0.005$ |  $127\pm 2$ |  0.982 |  0.28
|  $20-40\%$ |  $0.377\pm 0.005$ |  $132\pm 2$ |  1.010 |  0.40
|  $40-80\%$ |  $0.234\pm 0.005$ |  $143\pm 2$ |  2.488 |  1.46
Au-Au 19.6 GeV |  $0--10\%$ |  $0.451\pm 0.005$ |  $119\pm 2$ |  0.819 |  0.58
|  $10-20\%$ |  $0.415\pm 0.005$ |  $125\pm 2$ |  0.979 |  0.35
|  $20-40\%$ |  $0.374\pm 0.005$ |  $129\pm 2$ |  1.196 |  0.39
|  $40-80\%$ |  $0.268\pm 0.006$ |  $141\pm 3$ |  1.905 |  0.35
Au-Au 27 GeV |  $0-10\%$ |  $0.465\pm 0.003$ |  $116\pm 3$ |  0.857 |  0.54
|  $10-20\%$ |  $0.438\pm 0.003$ |  $122\pm 3$ |  0.933 |  0.42
|  $20-40\%$ |  $0.393\pm 0.004$ |  $130\pm 3$ |  1.120 |  0.27
|  $40-80\%$ |  $0.262\pm 0.007$ |  $149\pm 3$ |  2.018 |  0.40
Au-Au 39 GeV |  $0-10\%$ |  $0.483\pm 0.004$ |  $119\pm 3$ |  0.695 |  0.81
|  $10-20\%$ |  $0.451\pm 0.004$ |  $125\pm 3$ |  0.850 |  0.35
|  $20-40\%$ |  $0.397\pm 0.005$ |  $136\pm 3$ |  1.032 |  0.37
|  $40-80\%$ |  $0.289\pm 0.006$ |  $153\pm 3$ |  0.449 |  0.55
Au-Au 62.4 GeV |  $0-10\%$ |  $0.497\pm 0.007$ |  $127\pm 4$ |  0.671 |  0.86
|  $10-20\%$ |  $0.476\pm 0.007$ |  $133\pm 4$ |  0.670 |  0.85
|  $20-40\%$ |  $0.433\pm 0.010$ |  $144\pm 4$ |  0.711 |  0.80
|  $40-80\%$ |  $0.340\pm 0.018$ |  $157\pm 4$ |  0.627 |  0.78
Au-Au 200 GeV |  $0-10\%$ |  $0.522\pm 0.003$ |  $116\pm 3$ |  0.840 |  0.78
|  $10-20\%$ |  $0.504\pm 0.004$ |  $122\pm 3$ |  0.867 |  0.61
|  $20-40\%$ |  $0.455\pm 0.004$ |  $129\pm 4$ |  1.078 |  0.54
|  $40-80\%$ |  $0.345\pm 0.005$ |  $147\pm 4$ |  1.619 |  1.33
Pb-Pb 2760 GeV |  $0-20\%$ |  $0.637\pm 0.004$ |  $115\pm 4$ |  0.698 |  0.75
|  $20-80\%$ |  $0.588\pm 0.004$ |  $125\pm 5$ |  0.863 |  1.15


#  Utilizing ROS 1 and the Turtlebot3 in a Multi-Robot System
A technical report of the Robotics and Automation Design Lab

Corey Williams1, Adam Schroeder1

(1Department of Mechanical, Industrial, and Manufacturing Engineering
The University of Toledo, Toledo, OH USA
<EMAIL_ADDRESS><EMAIL_ADDRESS>
October 2020 )

###### Contents

  1. Foreword
  2. 1 Introduction
    1. 1.1 Purpose
    2. 1.2 Scope
    3. 1.3 Organization
  3. 2 The Tools
    1. 2.1 ROS
      1. 2.1.1 Multi-Robot Systems
    2. 2.2 Turtlebot3
      1. 2.2.1 ROS Packages
      2. 2.2.2 LiDAR
      3. 2.2.3 Single Board Computer
      4. 2.2.4 OpenCR
  4. 3 Linux
    1. 3.1 Why Use Linux
    2. 3.2 Network Setup
      1. 3.2.1 Network Connection on Linux
      2. 3.2.2 ROS Network Variables
    3. 3.3 Utilizing SSH
    4. 3.4 Synchronizing Time
  5. 4 Multi-Robot ROS
    1. 4.1 Simulation
    2. 4.2 Bringup
    3. 4.3 SLAM
    4. 4.4 AMCL
    5. 4.5 Map Server
    6. 4.6 Move Base
    7. 4.7 RVIZ
  6. 5 Usability Improvements
    1. 5.1 Combining Launch Files
    2. 5.2 Daemons
    3. 5.3 Recursive Launch Files
  7. 6 Troubleshooting
    1. 6.1 Visual Diagnostic Tools
    2. 6.2 Terminal Diagnostic Tools

## Foreword

Our lab purchased our first turtlebots in September 2019 and had not used ROS
before. The emanual documentation for the turtlebot3 from Robotis was
excellent in getting us up and running. We encountered obstacles through that
process, but were always able to overcome them.

Next, we wanted to start making our turtlebots do things beyond what was
covered in the Robotis documentation. For example, we wanted ROS to boot
automatically when our turtlebot started up, and we wanted robots to
automatically connect to our wireless router, and we wanted multiple robots to
work using the same map. Accomplishing these tasks required us to pull
together pieces of information from many different sources and much iterating.

We wrote this guide with the intention of supplementing the existing turtlebot
documentation and with the hope of smoothing the way for beginners like us who
want to work with multiple turtlebots. If you are a beginner, we would
encourage you as you read to not be overwhelmed at the thought of trying to
implement all of the ideas and tools that we present. Rather, we would
recommend implementing them bit by bit, as needed.

Corey has performed the vast majority of the technical work, led the drafting
of this document, and continues to use these turtlebots for his graduate
research. I (Adam) encouraged Corey to create this guide, helped review,
revise, and edit it along the way, and continue to direct research using
turtlebots in the Robotics, Automation, and Design Lab (RADL) at the
University of Toledo.

## Introduction

###  1.1 Purpose

ROS (Robot Operating System) has become ubiquitous for testing new algorithms,
alternative hardware configurations, and prototyping. By performing research
with its modular framework, it can streamline sharing new work and
integrations. However, it has many features and new terms that can take a
considerable amount of time to learn for a new user. This paper will explore
how to set up and configure ROS and ROS packages to work with a multi-robot
system on a single master network.

###  1.2 Scope

As a prerequisite, it is important to know how to navigate a Linux based
operating system and its command line, basic LAN configuration, and general
programming skills. It is highly recommended to explore some of these topics
if this is the first exposure. The primary goal here is to show how this
knowledge can be used to configure existing systems to work with multiple
robots along with introducing a few useful tools and not replacing the
official Turtlebot3 eManual. Terminology will be explained where possible if
obscure enough or specific to ROS. Users more familiar with Linux, the
Turtlebot3, and ROS can skip to section 4 for information on configuring ROS.

###  1.3 Organization

The general overview can be viewed as:

  * –

The Tools: a description of the hardware and software

  * –

Linux: configuring the OS and network for user-friendliness

  * –

Multi-Robot ROS: configuring ROS for single master, multi-robot

  * –

Usability Improvements: optional topics to improve use

  * –

Troubleshooting: how to use available tools to fix issues

## The Tools

###  2.1 ROS

The ROS is a meta-operating system developed by Open Source Robotics
Foundation [1] that provides a modular framework for implementing robotics
logic. Multiple ROS functionalities can be contained within a single folder
called a package, and each functionality within that package can be broken
down into separate scripts called nodes. The power of ROS comes from how these
nodes can communicate with each other; instead of directly passing data
between each other, they can send a message to a topic that any number of
nodes can subscribe to. Consequently, each node does not need to know who is
receiving the message, and a new node can replace an old one with better
features without touching the rest of the system.

Challenges can arise if the same node is launched multiple times. Only one can
be active, but there are tools provided by launch files, the file ROS utilizes
to start programs, to launch more than one. For example, by adding a namespace
(a prefix used to identify an instance of a node), a node can be renamed from
$/camera\\_publisher$ to $/robot3/camera\\_publisher$. This allows for other
nodes in a different namespace to be launched. Not everything will perform as
intended without some work though. These issues are touched on in section 4. A
workstation on the network needs to be running the naming and registration
services contained in roscore [2]. If this will not work with your
application, ROS2 needs to be used.

Figure 2.1: ROS Network

####  2.1.1 Multi-Robot Systems

A multi-robot system (MRS) is a system that contains more than one robot
capable of communicating with one another. With some effort, it is possible to
create emergent behaviors and active collaboration. There are two main
categories of MRS: decentralized and centralized. As the names would suggest,
a centralized framework is composed of a top-down command structure. With a
decentralized system, each robot will take in information about its
surroundings and possibly the states of its neighbor robots. Using a ruleset,
it can decide on an action independent of any central authority. Variations of
these can be done; a user taking momentary, manual control over a group could
be an example. ROS 1 has some limitations on the decentralized side. The
biggest issue is that node discovery is done through a single computer known
as the master. Once two nodes are aware of each other and passing information
through a topic, the connection is peer-to-peer. However, any changes in
communication would require a connection to the master [2].

###  2.2 Turtlebot3

The Turtlebot3 is a modular robot platform sold by Robotis that includes
enough hardware to begin working with autonomous 2D navigation. The work in
this paper is based on the “Burger” model, but other models should follow the
same logic. Much of the work to implement many ROS features, such as
simulations, drivers, SLAM, and navigation, is handled in the Turtlebot3
packages [3] [4]. These can serve as excellent examples on how to set up a
launch file.

####  2.2.1 ROS Packages

Robotis maintains two repositories: one for controlling the robot [3], and one
for running simulations [4]. The notable packages include bringup, navigation,
slam, and teleop. Bringup will initiate the hardware and state publisher,
navigation starts nodes needed to enable autonomous navigation, slam starts
nodes needed for a SLAM operation, and teleop allows for manual control over
the robot. Each one is considered its own package, but they are provided by a
single root folder for convenience.

####  2.2.2 LiDAR

The primary sensor used for navigation is the 360° LiDAR. One of the most used
SLAM algorithms, gmapping, utilizes the scan data published by the LiDAR. This
should cover robot vision requirements so long as the environment can be
navigated through a 2D occupancy grid, there are no obstacles out of the
LiDAR’s planar line of sight, or slim obstacles that can’t reliably reflect
the laser.

####  2.2.3 Single Board Computer

Many robots can be controlled through a microcontroller, but ROS and the
algorithms it will run require much more computational power. Current
Turtlebot3 models provide a Raspberry pi 3 B+ as its single-board computer
(SBC). It will act as the brain for each robot.

####  2.2.4 OpenCR

The OpenCR is an open-source controller board with many features. On the
OpenCR board is an Arduino compatible microcontroller, gyroscope,
accelerometer, several communication ports, and more [5]. This board is where
the power and motors are connected. The SBC also communicates and receives
power through the micro USB port.

## Linux

###  3.1 Why Use Linux

Starting with the release of ROS Melodic, Windows is a supported platform, but
most resources continue to write with Linux Distributions in mind,
specifically with Ubuntu. The built-in package manager "apt" can handle the
installation procedure once the ROS keyserver is added. In addition, both
Ubuntu Server and Raspian are freely available to install on as many robots as
desired and can run on the Raspberry Pi. Robotis provides a Raspian image with
everything needed pre-installed; the download can be found in the SBC setup
section of the e-Manual.

###  3.2 Network Setup

A quality network and network configuration are vital to get adequate
performance with ROS. When all nodes are being run on a single machine and can
communicate to the rest of the fleet through other means, only the localhost
would be needed, and performance would be exceptional with minimal effort.
Otherwise, every robot needs to be connected to a single network. The OS and
ROS must be configured to connect properly.

####  3.2.1 Network Connection on Linux

In Ubuntu, the network connection can be controlled through the YAML based
Netplan configuration file (Netplan). It is located at
$/etc/wpa\\_supplicant/wpa\\_supplicant.conf$, and a simple setup suggested by
Robotis [6] is shown below:

⬇

1network:

2 version: 2

3 renderer: networkd

4 ethernets:

5 eth0:

6 optional: true

7 dhcp4: yes

8 dhcp6: yes

9 wifis:

10 wlan0:

11 dhcp4: yes

12 dhcp6: yes

13 access-points:

14 "network-ssid":

15 password: "network-password"

Listing 1: Ubuntu Netplan

Keep in mind that YAML is like Python in that the whitespace indicates how the
script is parsed. While the e-manual specified this for a machine running ROS
2, where static IP’s are not necessary, it is possible to control the IP
addresses of the fleet from the router interface by enabling DHCP on the robot
or workstation level.

When setting up a Raspberry Pi in a headless manner, it is possible to add the
$wpa\\_supplicant.conf$ file to the boot folder on the SD card before the
initial boot. These settings should be automatically added to the correct
folder, and no direct intervention is necessary. The Raspberry Pi foundation
provides a minimal setup script [7]. Note that as of this writing, the Robotis
provided distribution listed in the Turtlebot3 e-manual does not function
properly with this method:

⬇

1ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

2update_config=1

3country=<Insert 2 letter ISO 3166-1 country code here>

4network={

5 ssid="<Name of your wireless LAN>"

6 psk="<Password for your wireless LAN>"

7}

Listing 2: Headless Raspberry Pi Setup

####  3.2.2 ROS Network Variables

ROS utilizes TCP/IP sockets for sending and receiving data between nodes [8].
This means that any home or industrial class router can be used. If a single
robot is operating with no external workstation as a master, ROS can operate
through the localhost, and no networking hardware is required. There are two
environment variables necessary to get communication working: $ROS\\_HOSTNAME$
and $ROS\\_MASTER\\_URI$ [9]. If the IP of the master is 192.168.0.2 and the
robot is 192.168.0.3, this can be done in the $.bashrc$ file with 2 additional
lines.

⬇

1$ export ROS_HOSTNAME=192.168.0.3

2$ export ROS_MASTER_URI=http://192.168.0.2:11311

Listing 3: Network Addresses

The 11311 at the end of the master IP indicates the port number. If DHCP is
enabled, these numbers could become outdated. Assigning IP’s through the
router can prevent this and provide a central place to make future
modifications. It is possible to use mDNS to not require static IP’s and
provide an easier to remember naming scheme. Ubuntu, and other Linux
distributions, can utilize Avahi to handle this automatically. Instead of
knowing the IP, it is possible to resolve $hostname.local$ to the IP belonging
to a computer with that hostname. In a Debian based OS it can be installed
with:

⬇

1$ sudo apt install avahi-daemon

Listing 4: Installing Avahi

OSX comes with Bonjour and is compatible with Avahi [10]. Windows needs either
iTunes or the Bonjour print service installed to do the same. The print
service is a small program that can perform the setup needed [11]. While this
can be convenient, if the mDNS service ever stops functioning, that machine
can no longer parse or advertise $.local$ addresses. The new environment
variables will look like the following:

⬇

1$ export ROS_HOSTNAME=hostname.local

2$ export ROS_MASTER_URI=http://masterhost.local:11311

Listing 5: Avahi Addresses

###  3.3 Utilizing SSH

It would be unreasonable to connect every robot to a keyboard and monitor when
changes need to be made. Instead, run terminal commands remotely using SSH.
Most commonly, OpenSSH is used, and the client and server can be installed
through the command:

⬇

1$ sudo apt install openssh-client openssh-server

Listing 6: Installing SSH

To use it, open a new terminal to take place of a terminal on another machine.
Then, assuming you are connecting from the master to the robot, type:

⬇

1$ ssh<EMAIL_ADDRESS>
2# If mDNS is used:

3$ ssh<EMAIL_ADDRESS>
Listing 7: Utilizing SSH

Upon first connect, include the option $-oHostkeyAlgorithms=`ssh-
rsa\textrm{'}$; this is important if remote node calls need to be made by
using launch files. It will ask whether you wish to add the device to known
devices or not. Enter yes, and the password to the user will be prompted. It
is not a good idea to have every device use the same password for security
reasons but remembering every password and entering one every time is not
convenient. To get around this, it is possible to generate SSH keys that can
be copied over to the client. Raspberry Pi foundation has instructions on
their website [12], but the basic steps for a first time use are listed here
to summarize:

  1. 1.

$ssh-keygen$ if no keys exist

  2. 2.

$ssh-copy-id$ $username@ip\\-address$

  3. 3.

Sign in when prompted

###  3.4 Synchronizing Time

Some communications will have problems if a time discrepancy exists between
different machines on the network. ROS includes instructions on how to prevent
this by using Chrony [9]. Chrony is an NTP based time management software;
importantly, it shares compatibility with Linux and macOS [13]. With this, it
is possible to configure one of the machines on a network as a time server
where the other machines will obtain the current time. OSRF provides a
recommendation for adding a server to the $/etc/chrony/chrony.conf$
configuration file [9]. Using the IP address naming convention from earlier,
on the client add the line:

⬇

1server 192.168.0.2 minpoll 0 maxpoll 5 maxdelay .05

Listing 8: Client Chrony Config Line

By not removing the existing internet-based servers, the Raspberry Pi can
properly obtain a time if it ever needs to use the internet again. On the
server add the following line:

⬇

1allow 192.168.0.0/24

Listing 9: Server Chrony Config Line

With both .conf files saved, check to ensure that the system is operating with
the two commands:

⬇

1$ sudo chronyc -a makestep

2$ chronyc tracking

Listing 10: Force Time Synchronization

A readout of the performance will be printed in the terminal. The “Leap
Status” row will specify if everything is working normally. To check if the
client has the correct server use this command:

⬇

1$ chronyc sources

Listing 11: Check Registered Servers

## Multi-Robot ROS

###  4.1 Simulation

Being able to simulate of a robot with the same code that would be placed onto
the real model can make iteration and debugging easier. Hardware issues such
as battery charge or networking setup can be eliminated. Robotis provides
packages for use in the Gazebo simulator [4]. Gazebo can emulate a robot with
features such as cameras, encoders, manipulators, and TCP/IP communication;
however, it will be replaced by Ignition Gazebo when Gazebo Classic reaches
end-of-life in 2025 [14]. Many other ROS compatible robot manufacturers also
include packages for Gazebo. To begin, we will deconstruct the
$multi\\_turtlebot3.launch$ XML file included in the $turtlebot3\\_gazebo$
package [4]. This will be a great starting point when making a new one from
scratch with either a Turtlebot3 or something else. It can be broken into 3
sections. The first can be adequately reduced to:

⬇

1<arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger,
waffle, waffle_pi]"/>

2<arg name="first_tb3" default="tb3_0"/>

3<arg name="second_tb3" default="tb3_1"/>

4<arg name="third_tb3" default="tb3_2"/>

5

6<arg name="first_tb3_x_pos" default="-7.0"/>

7<arg name="first_tb3_y_pos" default="-1.0"/>

8<arg name="first_tb3_z_pos" default=" 0.0"/>

9<arg name="first_tb3_yaw" default=" 1.57"/>

Listing 12: First Turtlebot Setup

Each element here indicates an argument that can be passed through the command
line, where the name attribute is the name of the argument. The first argument
in the list indicates the model of Turtlebot3 being used and pulls in the
environment variable $TURTLEBOT3\\_MODEL$ as the default value. The next three
specify the namespace of each robot; this will group the scripts and topics
associated with a single robot together. The rest indicate a pose (x, y, z,
and z-axis rotation) of each robot to be placed within Gazebo. The next
section consists of launching the desired gazebo world.

⬇

1<include file="$(find gazebo_ros)/launch/empty_world.launch">

2 <arg name="world_name" value="$(find
turtlebot3_gazebo)/worlds/turtlebot3_house.world"/>

3 <arg name="paused" value="false"/>

4 <arg name="use_sim_time" value="true"/>

5 <arg name="gui" value="true"/>

6 <arg name="headless" value="false"/>

7 <arg name="debug" value="false"/>

8</include>

Listing 13: Launching A Gazebo World

The include element tells the launch file to run another launch file. Instead
of providing the path to the package directly, which may change depending on
where the user has it installed, the $\$(find\;pkg)$ shortcut returns the path
to the package root folder. From there it is possible to provide the path to
the desired launch file. The $arg$ sub-elements will be passed to the included
launch file. The important one to look at here is the $world\\_name$ argument.
When a gazebo $.world$ file is provided, it will automatically be loaded when
the launch file is run. For the last section, the robots are initialized and
spawned into the Gazebo world.

⬇

1<group ns = "$(arg first_tb3)">

2 <param name="robot_description" command="$(find xacro)/xacro \--inorder
$(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

3

4 <node pkg="robot_state_publisher" type="robot_state_publisher"
name="robot_state_publisher" output="screen">

5 <param name="publish_frequency" type="double" value="50.0" />

6 <param name="tf_prefix" value="$(arg first_tb3)" />

7 </node>

8

9 <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf
-model $(arg first_tb3) -x $(arg first_tb3_x_pos) -y $(arg first_tb3_y_pos) -z
$(arg first_tb3_z_pos) -Y $(arg first_tb3_yaw) -param robot_description" />

10</group>

Listing 14: Launching Core Turtlebot Nodes

As the group element name suggests, each of the elements above are grouped
under the $first\\_tb3$ namespace. Instead of specifying the $ns$ tag in every
relevant element, grouping them together can handle this with only 2
additional lines; this can also be helpful when using if statements, which
will be covered in section 6.3: Recursive Launch Files. The
$\$(arg\>first\\_tb3)$ line recalls the value passed by the $first\\_tb3$
argument specified at the top of the launch file.

Many of the required nodes for a Turltebot3, such as $turtlebot3\\_core$, are
handled by Gazebo when spawning a robot instance. The above XML can be pasted
for as many robots as needed. The only modifications needed are to the
arguments for the namespace, tf prefix, and starting position.

###  4.2 Bringup

There are two main launch files important to the user in the
turtlebot3_bringup package: turtlebot3_robot.launch and
turtlebot3_remote.launch. Turtlebot3_robot will initiate the hardware and
diagnostics. Turtlebot3_remote handles starting the robot_state_publisher
node. Starting these nodes with multiple robots is very straight forward. Add
ROS_NAMESPACE=[robot name] in the beginning of the command and pass the
desired robot namespace to the multi_robot_name argument when launching the
“robot” and “remote” bringup scripts. More information can be found in section
15.5 of the Turtlebot3 e-Manual [6].

###  4.3 SLAM

Although it is possible, multi-robot SLAM is not conventionally done. Instead,
a single robot is launched to map the desired area and the results are saved
using the map_server package. Map_server has functions to both save and load
maps as a .pgm file and an accompanying .yaml data file [15]. The Turtlebot3
e-Manual suggests the multi_map_merge package [6], but it has not been updated
since Kinetic [16]. More work has been done in the realm of collaborative
mapping; Google has its own solution using gRPC and Cartographer, but its
documentation is not completed [17].

To begin, follow the instructions in the e-Manual in section 9. By the end
there should be a map saved to your drive. Depending on the results, most
features from the real or virtual environment should be recognizable in the
top-down view. It is possible to take advantage of this fact to manually
remove mapping errors. The free and open-source photo editor GIMP is capable
of editing .pgm files. Using the pencil tool, manually change pixels to white
(#fefefe), black (#000000), or gray (#cdcdcd) depending on whether the space
is free, occupied, or unknown respectively. If desired, paths that are open
can be blocked by adding black pixels.

Figure 4.1: Raw SLAM Map

Figure 4.2: Modified SLAM Map

###  4.4 AMCL

The map provided by the map server acts as a unified coordinate system that
all the robots can localize themselves too. This localization is done with a
package called AMCL (adaptive Monte Carlo localization); it uses a particle
filter to estimate the current pose of the robot. Once an estimated is
obtained, it will handle the transform from the /map to /robot_name/odom
reference frames.

Launch files associated with amcl can involve a lot of parameters; copying the
launch file AMCL.launch from the turtlebot3_navigation package into your own
package can speed up the process.

⬇

1<!-- Argument to be added to the top of the launch file \-->

2<arg name="multi_robot_name" default="" doc="User assigned robot
namespace."/>

3

4<!-- Existing lines with robot name references in red \-->

5<group ns="$(arg multi_robot_name)">

6 <node pkg="amcl" type="amcl" name="amcl">

7 <remap from="scan" to="$(arg multi_robot_name)/$(arg scan_topic)"/>

8 <remap from="initialpose" to="$(arg multi_robot_name)/initialpose"/>

9 <remap from="amcl_pose" to="$(arg multi_robot_name)/amcl_pose"/>

10 <remap from="particlecloud" to="$(arg multi_robot_name)/particlecloud"/>

11

12 <param name="odom_frame_id" value="$(arg multi_robot_name)/odom"/>

13 <param name="base_frame_id" value="$(arg
multi_robot_name)/base_footprint"/>

14 </node>

15</group>

Listing 15: Launching AMCL Under A Namespace

By providing the multi_robot_name argument, all relevant topics are changed to
work with that specific robot while still providing a transform to the common
global frame of reference /map.

###  4.5 Map Server

The map server is a node that can take .yaml and .pgm files to provide for the
rest of the network [18]. It is different from many other nodes that will be
launched; in our use case, it does not care how many robots are active and
will not require a name space. If only one map file is needed, only one node
is needed. Each robot will obtain the map from the static_map service call by
default. Alternatively, the map can be pulled from the /map and /map_metadata
topics by setting the use_map_topic amcl argument to true [15]. The map is
loaded by passing the .yaml file through the args attribute like below if the
map and metadata are located located in a maps folder in the package.

⬇

1<node pkg="map_server" name="map_server" type="map_server" args="$(find
pkg_name)/maps/$(arg map_name).yaml"/>

Listing 16: Launching A Map Server

###  4.6 Move Base

The move_base package is the path planning algorithm that comes with ROS.
There are many other supporting packages, but move_base provides the
MoveBaseAction service to send navigation targets to [19]. To set up for a
multi-robot environment, create a launch file similar to the one below.
Instances specific to taking namespaces into account are highlighted in red
for emphasis.

⬇

1<!-- Argument to be added to the top of the launch file \-->

2<arg name="multi_robot_name"/>

3

4<group ns="$(arg multi_robot_name)">

5 <node pkg="move_base" type="move_base" respawn="false" name="move_base"
output="screen">

6

7 <!-- Set tf_prefix for frames explicitly, overwriting defaults \-->

8 <param name="global_costmap/scan/sensor_frame" value="$(arg
multi_robot_name)/base_scan"/>

9 <param name="global_costmap/obstacle_layer/scan/sensor_frame"

10 value="$(arg multi_robot_name)/base_scan"/>

11 <param name="global_costmap/global_frame" value="map"/>

12 <param name="global_costmap/robot_base_frame"

13 value="$(arg multi_robot_name)/base_footprint"/>

14 <param name="local_costmap/scan/sensor_frame" value="$(arg
multi_robot_name)/base_scan"/>

15 <param name="local_costmap/obstacle_layer/scan/sensor_frame"

16 value="$(arg multi_robot_name)/base_scan"/>

17 <param name="local_costmap/global_frame" value="$(arg
multi_robot_name)/odom"/>

18 <param name="local_costmap/robot_base_frame"

19 value="$(arg multi_robot_name)/base_footprint"/>

20

21 <!-- Centralized map server \-->

22 <remap from="map" to="/map"/>

23 </node>

24 </group>

Listing 17: Launching Move Base Under A Namespace

###  4.7 RVIZ

Like Gazebo, RVIZ can be loaded using a launch file. The only requirement to
begin is to have a .rviz file available. If there is a configuration that is
required but not provided by another packages, make any changes in a RVIZ
window and save with:

$\textrm{File}\rightarrow\textrm{Save Config As}$

Save the file somewhere convenient; this will most likely be going to be
somewhere in your package. In this instance, let us assume that it was saved
in a folder called rviz located in your package’s root folder. Then, in a
launch file, include this line:

⬇

1<node pkg="rviz" type="rviz" name="rviz" args="-d $(find
your_package)/rviz/your_file.rviz"/>

Listing 18: Loading RVIZ File From A Launch File Figure 4.3: RVIZ With 3
Turtlebots

## Usability Improvements

###  5.1 Combining Launch Files

Launching each of these components for a single robot may not take much
effort, but it’s not a desirable solution when more are added. Several steps
can be combined into one with the include tag demonstrated in section 4.1
Simulation. It may be helpful to start with a process flow map. Make each step
its own launch file that can be confirmed to function as intended; then,
create an extra launch file that can unify all the other steps with a single
command.

Figure 5.1: RVIZ With 3 Turtlebots

Now that each step has a launch file it is important to decide how the process
is going to function. For example, only one map server is needed; it would not
make sense to include it when launching a single robot. When the next one is
launched, another map server will be started and the old one will be shut
down. Bringup_robot is typically ran using the Raspberry Pi’s hardware and the
rest is done on a more powerful workstation. By taking this into account, a
few judgement calls can be made. Roscore and map_server can be launched once
on the workstation without a problem, and the rest can be launched by the
robots on boot and ran where needed by defining machines in the launch file.
This process is outlined with the launch file fragment here:

⬇

1<launch>

2 <!-- REQUIRED ARGUMENTS \-->

3 <arg name="model" default="$(env TURTLEBOT3_MODEL)"/>

4 <arg name="multi_robot_name" default=""/>

5 <arg name="set_lidar_frame_id" default="base_scan"/>

6 <arg name="user" default="$(env WORKSTATION_USER)" doc="The username of the
machine to offload to."/>

7 <arg name="address" default="$(env WORKSTATION_ADDRESS)"/>

8 <arg name="target_version" default="melodic"doc="The version of ros used on
the machine to offload to."/>

9

10 <!-- WORKSTATION MACHINE DEFINITION \-->

11 <machine name="workstation" address="$(arg address)" env-
loader="/opt/ros/$(arg target_version)/env.sh" user="$(arg user)"/>

12

13 <!-- TO BE CALLED ON ROBOT \-->

14 <include file="$(find turtlebot3_bringup)/launch/turtlebot3_robot.launch">

15 <arg name="multi_robot_name" value="$(arg multi_robot_name)"/>

16 <arg name="set_lidar_frame_id" value="$(arg set_lidar_frame_id)"/>

17 </include>

18

19 <!-- TO BE CALLED ON WORKSTATION \-->

20 <arg name="urdf_file" default="$(find xacro)/xacro \--inorder '$(find
turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro'"/>

21 <param name="robot_description" command="$(arg urdf_file)"/>

22 <node pkg="robot_state_publisher" type="robot_state_publisher"
name="robot_state_publisher" machine="workstation">

23 <param name="publish_frequency" type="double" value="50.0" />

24 <param name="tf_prefix" value="$(arg multi_robot_name)"/>

25 </node>

26</launch>

Listing 19: Combination Launch File

Notice that despite having an existing launch file for robot_state_publisher
that could be included, the contents were copied into this launch file. The
machine attribute is not part of the include element; a node call must be
used. Also, note that the ROS version does not necessarily have to be the same
on both machines if the same code can be launched without changes on each.
Python will likely have the most luck with this. In this case, the workstation
was running Melodic while the Turtlebot3 was running Kinetic; however, it is
necessary to have the package installed on whatever machine is making the
remote call. Be sure to either include the password in the machine description
(not recommended) or have SSH keys setup from the Turtlebot to the
workstation. Launching AMCL and move_base can remain an exercise.

###  5.2 Daemons

Now that everything is set up to launch with a few simple commands, it’s
possible to have the process automatically started on boot through a Daemon.
Daemon is the name of a process that runs in the background; when it comes to
Ubuntu and Raspian, daemons are handled by Systemd. Two files are needed for
this to work: a shell script with the commands to launch the ROS nodes and a
service file to register the process into Systemd. More advanced service files
can be found in the write up by Rover Robotics; on their website, a page
outlining starting roscore and several nodes can be found [20]. The following
bash file can be used to launch the Turtlebot bringup:

⬇

1#!/bin/bash

2source /opt/ros/[distro]/setup.bash

3source [directory-to-workspace]/devel/setup.bash

4export ROS_MASTER_URI = https://[roscore-ip-address]:11311

5export ROS_HOSTNAME = host-ip

6export ROS_NAMESPACE=[robot-name]

7roslaunch turtlebot3_bringup turtlebot3_robot.launch
multi_robot_name:=[robot-name]

Listing 20: Launch Script

Save this shell script somewhere relevant. Rover Robotics uses
/usr/sbin/roslaunch. Then make the script executable. This can be done by
right clicking the file, clicking properties, and checking “allow executing
file as program” in Ubuntu, setting execute to “anyone” in Raspian, or, if the
terminal is desired, by using this command:

⬇

1$ chmod +x [filename].sh

Listing 21: Enabling Execution

Now a .service file is needed in /etc/systemd/system. When making one, keep in
mind any other services that it may need. Here we are waiting for the network
to be online, the time to sync. Additionally, Avahi is used to allow the shell
script to use .local addresses instead of an IP address.

⬇

1[Unit]

2After=network-online.service time-sync.target avahi-daemon.service

3

4[Service]

5Type=simple

6User=[USERNAME]

7ExecStart=/[directory-to-launch-script]/[launch-script].sh

8Restart=on-failure

9RestartSec=3s

10

11[Install]

12WantedBy=multi-user.target

Listing 22: Service File

On the chosen master, roscore needs to be running before the robot is turned
on. Otherwise, the node will fail to launch.

###  5.3 Recursive Launch Files

On some occasions it might be useful to launch an arbitrary number of nodes
through a single launch file. This can be done through recursion and the eval
substitution argument. This can be illustrated here:

⬇

1<launch>

2 <arg name="num" default="1"/>

3 <include file="$(find pkg_name)/launch/node_instance.launch">

4 <arg name="multi_robot_name" value="$(eval str(arg('num') - 1))"/>

5 </include>

6 <include file="$(find pkg_name)/launch/arbitrary_launcher.launch" if="$(eval
arg('num') - 1 > 0)">

7 <arg name="num" value="$(eval arg('num') - 1)"/>

8 </include>

9</launch>

Listing 23: 0 Indexed Recursive Launch File

To begin, we will look at the num argument; this is the number of nodes that
needs to be launched. The next block is the launch file created to launch a
specific node or a set of nodes, and the argument multi_robot_name is passed
to it. Its value is one less than the argument initially passed to make this
0-indexed. The next block will check if the value is greater than 0 if one is
subtracted from it through the if attribute. It will then call itself again
but pass a value to the num argument as one less than it was when it started.
The result is the launch file being called as many times as is passed to num.

## Troubleshooting

Troubleshooting and debugging within ROS can be more complicated than other
programming methods. Some algorithms could be completely functional but do not
perform anything and do not report any errors. This has to do with how each
node is configured. Luckily, ROS has visual and terminal based diagnostic
tools. The list presented here is not exhaustive but should cover most issues.
For more information, the ROS website will contain documentation on each tool
[21].

###  6.1 Visual Diagnostic Tools

The most common visual debugger is the node graph. In any available terminal
with ROS sourced, this graph can be generated through the command:

⬇

1$ rqt_graph

Listing 24: Viewing The Node Graph Figure 6.1: Node Graph

A window will then appear with each node and their connections through topics
will be plotted. It can be helpful to look at the problem node first and
follow the information stream until any faults can be found. There is an
analogous version for the transform tree:

⬇

1$ rosrun rqt_tf_tree rqt_tf_tree

Listing 25: Viewing The TF Tree Figure 6.2: TF Graph: Notice The Single Map
Frame At The Top

Diagnosing the problems inside a topic can be done through the plotter. Its UI
is brought up with:

⬇

1$ rqt_plot

Listing 26: Graphing Topic Information

Topics can be added through the UI, and the graph window will begin to plot
message data over time. This could bring about a discovery in data related
issues.

###  6.2 Terminal Diagnostic Tools

Occasionally, data cannot be plotted, or a simple glance at what is happening
is sufficient. This can be done by using:

⬇

1$ rostopic echo /topic_name

Listing 27: Printing Topic Information To Terminal

That terminal will then print out the topic information as fast as it receives
it but does not give any way to analyze it programmatically. Rosbag is a good
alternative to record these readouts to be played back or analyzed later. Some
packages include debug information that is not visible without changing
settings through the window called by:

⬇

1$ rosrun rqt_logger_level rqt_logger_level

Listing 28: Viewing Debug Information

Here it is possible to select a node and different loggers located in its
code; by changing the reporting level to “debug”, more information about how
that node is functioning can be found. In rare circumstances, a malfunctioning
node will instruct the user to change specific loggers to debug.

## References

  * [1] OSRF.  About us.  https://www.openrobotics.org/.
  * [2] ROS.  Master.  http://wiki.ros.org/Master.
  * [3] Robotis.  Robotis-git/turtlebot3.  https://github.com/ROBOTIS-GIT/turtlebot3.
  * [4] Robotis.  Robotis-git/turtlebot3_simulations.  https://github.com/ROBOTIS-GIT/turtlebot3_simulations.
  * [5] Robotis.  Open cr v.0 e-manual.  https://emanual.robotis.com/docs/en/parts/controller/opencr10/.
  * [6] Robotis.  Robotis e-manual.  https://emanual.robotis.com/docs/en/platform/turtlebot3/overview/#overview.
  * [7] Raspberry Pi Foundation.  Setting up a raspberry pi headless.  https://www.raspberrypi.org/documentation/configuration/wireless/headless.md.
  * [8] ROS.  Tcpros.  http://wiki.ros.org/ROS/TCPROS.
  * [9] ROS.  Network setup.  http://wiki.ros.org/ROS/NetworkSetup.
  * [10] Avahi.  Welcome to avahi.  https://avahi.org/, jul 2020.
  * [11] Apple.  Download bonjour print services for windows v2.0.2.  https://support.apple.com/kb/DL999?locale=en_US, jun 2010.
  * [12] Passwordless SSH Access.  Setting up a raspberry pi headless.  https://www.raspberrypi.org/documentation/remote-access/ssh/passwordless.md.
  * [13] Chrony.  Introduction.  https://chrony.tuxfamily.org/, jun 2019.
  * [14] Ignition.  About ignition.  https://ignitionrobotics.org/about.
  * [15] David V. Lu et al.  amcl.  http://wiki.ros.org/amcl.
  * [16] Jiří Hörner.  Map-merging for multi-robot system.  Bachelor’s thesis, Charles University in Prague, Faculty of Mathematics and Physics, Prague, 2016.
  * [17] Google.  Going further.  https://google-cartographer-ros.readthedocs.io/en/latest/going_further.html#cloud-integration-with-grpc, dec 2019.
  * [18] David V. Lu et al.  map_server.  http://wiki.ros.org/map_server.
  * [19] David V. Lu et al.  move_base.  http://wiki.ros.org/move_base.
  * [20] Rover Robotics.  How to run ros on startup (bootup).  https://blog.roverrobotics.com/how-to-run-ros-on-startup-bootup/, Oct 2019\.
  * [21] Aaron Blasdel, Dirk Thomas, et al.  rqt_common_plugins.  http://wiki.ros.org/rqt_common_plugins, jul 2013.