ing the deployed software update), all while keeping the swarm of robots in operation. CURRENT PRACTICE. In Operation. Landed. Land. Connect and Update.
C ONTINUOUS S OFTWARE I NTEGRATION FOR R OBOTIC S WARMS AND I O T D EVICES . { VIVEK - SHANKAR . VARADHARAJAN AND G IOVANNI .B ELTRAME }@ POLYMTL . CA P ROBLEM S TATEMENT
C ONTRIBUTIONS
B UZZ AND ROSB UZZ
One of the main challenges of current multi-robot networks (or swarms) is the ability to deploy new software updates to a previously-deployed robot or sensor network, and release it at the right moment (i.e., activating the deployed software update), all while keeping the swarm of robots in operation.
This work presents the design of a deployment tool to update a swarm OTA, during operation [2]. Our approach concatenates four techniques:
Buzz [1] is an extensible heterogeneous programming language for robotic swarms, with a Buzz Virtual machine (BVM) executing buzz scripts in a step based fashion. Buzz provides a set of programming primitives for robotic swarms: • Virtual Stigmergy • Swarm construct
2. a packet exchange protocol to relay updates (avoiding a need for pre-deployed network infrastructure),
C URRENT P RACTICE In Operation
1. an optimized mechanism to achieve consensus within the swarm (avoiding variability and version conflicts),
Landed
Land
Redeploy
• Neighbor queries
3. a patch generation software to share only binary deltas (minimizing the bandwidth requirements and update time) and,
ROSBuzz [3] is a ROS package and encompasses BVM with all inherit features of Buzz.
4. a safe stand-by state during the update process (to avoid a perturbed state within the swarm).
E XPERIMENTS Simulation with Cluster topology
Simulation with Scalefree topology
Simulation with Line topology
Application scenarios are emergency response and interplanetary exploration.
P ROPOSED A PPROACH Start(Cv = 0)
A common method to update the software of distributed embedded systems relies on a connection to a central node, either broadcasting or unicasting the changes to each robot within its communication range.
In this work the code is deployed into one of the robots, that robot in turn propagates the update and ensures consensus on the deployed code.
4
6 8 Patch Size (kB)
10
10 0
20
M100 UAV Distance Experiment 10 4
Time out
In this approach each robot in the swarm starts with an identical version of code. New update releases are generated as patches to the deployed code, and a consensus mechanism borrowed from swarm intelligence ensures the execution of a unique code version in the whole swarm.
2
Initiator Recipient
[1] C. Pinciroli, G.Beltrame A Programming Language For Robot Swarms In MIT Technology Review July 2015. [2] V.S.Varadharajan et al. OTA Updates for Robotic Swarms Submitted to IEEESoftware 2017 (Under review) March 2018. [3] D.St-Onge et al. ROS and Buzz: consensus-based behaviors for heterogeneous teams Submitted to ICRA (Under review) May 2018
Our long term objective is to define methodologies for software deployment/release and maintenance for largescale, deployed, robotic/IoT networks. The desired outcome of this research is to realize a continuous software deployment pipeline for updating a swarm of robots during a mission with minimal or no intervention to the mission through a robust tool called SwarmGit.
6 8 Patch Size (kB)
10
20
10 0
10 2
10 1
10 3
2
5
Distance (M)
10
1.xx
10 2
1
source repo
Stage commit
Robot Node
3.xx
Consensus
2.xx 4.xx(R)
Test Apply Patch
Patch Gen.
artifact repo
Test
Synchronizer
Synchronizer
1.b Build
Operator
Security
SwarmGit deploy
Security
3DR Solo 3DR Solo
2 4 Patch size (kB)
6
S OURCE C ODE Operator Node
M100 M100
10 0
20
6 8 Patch Size (kB)
3.b 2.b
4.b(R)
.xx - Source .b - Binary
100 Robots (0%) 100 Robots (25%) 100 Robots (75%)
10
Field Experiment
10 1
2
4
M100
O N G OING W ORK R EFERENCES
4
Initiator Recipient
10 4
10 3
10 0
2
10 Robots (0 %) 10 Robots (25%) 10 Robots (75%)
M100 UAV Code Size Experiment
Control steps [log]
New code
Control steps [log]
Broadcast code
Version Check Rn > Cv
Ft
Control steps [log]
Nt
Code Execution
Control steps [log]
Connect and Update
The source code of the modules developed in this work is available on Github and more information can be found at mistlab.ca.