  Robustness is key to engineering, automation, and science as a whole.
However, the property of robustness is often underpinned by costly requirements
such as over-provisioning, known uncertainty and predictive models, and known
adversaries. These conditions are idealistic, and often not satisfiable.
Resilience on the other hand is the capability to endure unexpected
disruptions, to recover swiftly from negative events, and bounce back to
normality. In this survey article, we analyze how resilience is achieved in
networks of agents and multi-robot systems that are able to overcome adversity
by leveraging system-wide complementarity, diversity, and redundancy - often
involving a reconfiguration of robotic capabilities to provide some key ability
that was not present in the system a priori. As society increasingly depends on
connected automated systems to provide key infrastructure services (e.g.,
logistics, transport, and precision agriculture), providing the means to
achieving resilient multi-robot systems is paramount. By enumerating the
consequences of a system that is not resilient (fragile), we argue that
resilience must become a central engineering design consideration. Towards this
goal, the community needs to gain clarity on how it is defined, measured, and
maintained. We address these questions across foundational robotics domains,
spanning perception, control, planning, and learning. One of our key
contributions is a formal taxonomy of approaches, which also helps us discuss
the defining factors and stressors for a resilient system. Finally, this survey
article gives insight as to how resilience may be achieved. Importantly, we
highlight open problems that remain to be tackled in order to reap the benefits
of resilient robotic systems.
