continuous software integration for robotic swarms ...

3 downloads 0 Views 2MB Size Report
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.

Ft Failed

New Release Rn

10 4

Cv = Cv - 1

Passed Cv = Rn

== N

Test Code

Gen. Patch Encrypt

Apply Patch Decrypt

Control steps [log]

S(C v )

P ROPOSED P RACTICE

10 Robots (0 %) 10 Robots (25%) 10 Robots (75%)

100 Robots (0%) 100 Robots (25%) 100 Robots (75%)

1000 Robots (0%) 1000 Robots (25%) 1000 Robots (75%)

10 3

10 2

10 Robots (0 %) 10 Robots (25%) 10 Robots (75%)

10 4

100 Robots (0%) 100 Robots (25%) 100 Robots (75%)

1000 Robots (0%) 1000 Robots (25%) 1000 Robots (75%)

10 3

10 2

10 4

10 3

10 2

10 1

10 1

10 1

Nt Failed

10 0

Update

Request Code

Stand-by

Br oa co dc de ast

Roll Back

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.

20