{'fraction_non_alphanumeric': 0.013953488372093023, 'fraction_numerical': 0.0, 'mean_word_length': 5.619230769230769, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A virtual machine-based approach for fast and flexible reprogramming of modular robots

Modular robot programming spans a number of issues ranging from high-level coordination to controller distribution and update in individual modules. The latter issue has received little attention from the research community though in our experience it is one of the main factors hindering agile development and experimentation with physical robots: reprogramming tens or hundreds of modules can be a major overhead in the development process and cannot be done with traditional approaches without restarting the robot, which impedes updating a running system. We propose a solution based on a virtual machine design shaped around three core concepts: the context of a module and its role in the ensemble, the reactive nature of robot controllers, and control programs decomposable into subparts that can be dynamically and separately redefined. We show that by incorporating those concepts into the design we are able to both achieve program conciseness (thus providing fast and efficient code distribution) and program expressiveness (thus providing versatility to represent diverse control algorithms). The virtual machine is programmed in a high-level role-oriented language that allows the programmer to declaratively specify how programs are deployed in the modular robot. Our approach enables fast and incremental on-line updates, allowing the programmer to interactively experiment with the physical robots. We show how this design lends itself to an efficient implementation targeting typical resource-constrained modular robotic hardware by illustrating our prototype implementation for the ATRON self-reconfigurable robot.