Buzz: A Programming Language for Multi-Robot Systems

When and Where

Monday - May 29, 2017
13:30 – 17:00 (PM)

Sands Expo and Convention Centre
1 Bayfront Ave
Singapore 018971


Swarm robotics is a discipline that studies fully decentralized approaches for the coordination of large-scale teams of robots (swarms). Research in this field is ambitious: robot swarms are envisioned for scenarios for which solutions are today impractical, too dangerous, or inexistent.

From drones to self-driving cars, robot swarms will become pervasive thanks to the development of the Internet-of-Things, and will be used in many applications. Examples of such applications are search and rescue operations, industrial and agricultural inspection, coordinated vehicle platooning, space exploration, and medical or surgical activities. We envision a world where a designer can specify the behaviour of heterogeneous groups of robots, and package this behaviour in an application that can be installed on multiple robotic systems. Swarm-based solutions will likely form the backbone for the upcoming self-driving car infrastructure, and will act as an enabling technology to make widespread robotics a reality.

While it seems natural to deal with robot swarms as yet another instance of a classical distributed system, important aspects set the former apart from the latter. The dynamics of robot swarms are characterized by an inseparable mixture of spatial and network aspects. Spatial aspects include the fact that robots move, and modify their surrounding environment, while network aspects include a communication modality based on range-limited, gossip-based message passing, and an ever changing topology due to robot navigation across the environment. As a result, the mapping between swarm-level requirements and individual actions is a problem whose solution exceeds current approaches to distributed system design. Designing and developing swarm behaviors is achieved today through a slow trial-and-error process, in which the expertise of the designer and his or her ability to encode complex behaviors are the main factors for success.

In this tutorial we present Buzz, a programming language designed to provide an adequate level of abstraction to allow developers to express complex swarm algorithms comfortably. Two opposite approaches have been proposed in swarm robotics:

  • The bottom-up approach, in which the focus is on individual robots and their low-level interactions; and
  • The top-down approach, in which a swarm is treated as an continuous, unique entity (e.g., aggregate programming or spatial computing).

While the bottom-up approach ensures total control on the design, the amount of detail exposed to the developer is often overwhelming. In contrast, the top-down approach presents a simple abstraction of the swarm, but it prevents the developer from fine-tuning the behavior of individual robots.

Buzz is based on the idea that the developer should be offered both levels of abstraction, and that the syntax of the language should allow for seamless mixing of bottom-up and top-down constructs. Buzz includes a number of constructs specifically designed for top-down swarm-level development, such as primitives for group formation and management, local communication, and global consensus. Buzz was designed to work with small systems (for the Internet-of-Things), and its virtual machine can fit in less than 12kB of memory.


The tutorial will show the basic concepts of Buzz, its syntax, the inner workings of the Buzz Virtual Machine (BVM), the language primitives, and a hands-on development session using the ARGoS simulator. The attendees will learn how to design swarm algorithms and write a script controlling a swarm of unmanned air vehicles looking for a target. We expect to have a half-day tutorial, providing a virtual machine for the attendees to be installed on their computers for the hands-on part, or used via Amazon EC2. More practically:

  • Introduction to Buzz (1.5 hours - Giovanni Beltrame)
    • Motivation
    • Syntax and tools
    • The Buzz Virtual Machine
    • Swarm control primitives
  • Hands-On with Buzz (2.5 hours - Carlo Pinciroli)
    • Introduction to IDE and simulator
    • Example 1: gradient formation
    • Example 2: pattern formation
    • Example 3: coordination via consensus


Giovanni Beltrame

Giovanni holds an M.Sc. degree in electrical engineering and computer science from the University of Illinois, Chicago (2001). He also received a Laurea degree in computer engineering from Politecnico di Milano, Italy in 2002, an M.S. degree in information technology from CEFRIEL, Milan in 2002, and a Ph.D. degree in computer engineering from Politecnico di Milano in 2006. Prior to his appointment at Polytechnique Montreal, he worked as an engineer at the European Space Agency until 2009. He is currently Associate Professor in the Department of Computer and Software Engineering, where he directs the MIST laboratory. His research interests include the modeling and design of embedded systems, artificial intelligence, and robotics.

Carlo Pinciroli

Carlo obtained a Master's degree in Computer Engineering at Politecnico di Milano, Milan, Italy and a Master's degree in Computer Science at University of Illinois at Chicago, IL, USA, both in 2005. He then worked for one year for Iriscube Reply S.p.A. as an IT consultant in several projects for Banca Woolwich, Barclays Bank PLC group. In 2006 Carlo joined IRIDIA, Université Libre de Bruxelles in Belgium under the supervision of Prof. Marco Dorigo. While at IRIDIA, he obtained a DEA in 2007 and a PhD in applied sciences in 2014; he also completed a 8-month post-doctoral period. Since 2016, he is Assistant Professor at the Worcester Polytechnic Institute in Massachusetts. Carlo has published more than 45 papers and is the author of the ARGoS multi-robot simulator and of the Buzz programming language.

Getting Started