-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
362 lines (232 loc) · 15.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
<meta name="generator" content="Orchid 0.17.6"/>
<link rel="icon" href="https://protelis.github.io/wiki-beta/favicon.ico">
<meta name="robots" content="index, follow">
<title>Protelis: aggregate programming</title>
<meta name="description" content="Practical language for aggregate programming.">
<script>
window.site = {"orchidVersion":"0.17.6","baseUrl":"https://protelis.github.io/wiki-beta","environment":"debug","version":"13.1.0-dev0f+6aed1deb"};
</script>
<!-- start:debug info -->
<!-- THEME -->
<!-- Type: BsDoc -->
<!-- Class: com.eden.orchid.bsdoc.BSDocTheme -->
<!-- PAGE -->
<!-- Type: frontPage -->
<!-- Class: com.eden.orchid.api.theme.pages.OrchidPage -->
<!-- Layout: index -->
<!-- Resolved Layout: templates/layouts/index.peb -->
<!-- Page Template: frontPage, page -->
<!-- Resolved Page Template: -->
<!-- RESOURCE -->
<!-- Class: com.eden.orchid.api.resources.resource.FileResource -->
<!-- Source Filename: homepage.md -->
<!-- COMPLETE PAGE CONFIGURATION -->
<script>
window.allData = {"reference":{"path":"","baseUrl":"https://protelis.github.io/wiki-beta","fileName":"","extension":"html","usePrettyUrl":true,"link":"https://protelis.github.io/wiki-beta"},"description":"","title":"Protelis: aggregate programming"};
</script>
<!-- end:debug info -->
<!-- start:inject styles -->
<link rel="stylesheet" type="text/css" href="https://netdna.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/github-fork-ribbon-css/0.2.0/gh-fork-ribbon.min.css" />
<link rel="stylesheet" type="text/css" href="https://protelis.github.io/wiki-beta/BsDoc/b80036ee/assets/css/bsdoc.css" />
<link rel="stylesheet" type="text/css" href="https://protelis.github.io/wiki-beta/assets/css/pygments.css" />
<link rel="stylesheet" type="text/css" href="https://rawgit.com/PrismJS/prism-themes/master/themes/prism-ghcolors.css" />
<!-- end:inject styles -->
</head>
<body>
<a class="github-fork-ribbon left-top"
href="https://github.com/Protelis/Protelis"
title="Fork me on GitHub">Fork me on GitHub</a>
<header class="navbar navbar-fixed-top bs-docs-nav">
<div class="container">
<div class="navbar-header" role="banner">
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="https://protelis.github.io/wiki-beta">Protelis: aggregate programming</a>
</div>
<nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation">
<ul class="nav navbar-nav navbar-right">
<li><a href="https://protelis.github.io/wiki-beta">Home</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Understand<span class="caret"></span></a>
<ul class="dropdown-menu scrollable-menu">
<li><a href="https://protelis.github.io/wiki-beta/wiki/understand/basics">Aggregate programming basics</a></li>
<li><a href="https://protelis.github.io/wiki-beta/wiki/understand/architecture">Protelis' architecture</a></li>
<li><a href="https://protelis.github.io/wiki-beta/wiki/understand/syntax">Upgrade guide</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Use<span class="caret"></span></a>
<ul class="dropdown-menu scrollable-menu">
<li><a href="https://protelis.github.io/wiki-beta/wiki/use/installation">Prerequisites</a></li>
<li><a href="https://protelis.github.io/wiki-beta/wiki/use/alchemist">Tutorial: simulation with Alchemist</a></li>
<li><a href="https://protelis.github.io/wiki-beta/wiki/use/demo">Tutorial: demo projects</a></li>
<li><a href="https://protelis.github.io/wiki-beta/wiki/use/worldwind">Example: Protelis with NASA WorldWind</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Develop<span class="caret"></span></a>
<ul class="dropdown-menu scrollable-menu">
<li><a href="https://protelis.github.io/wiki-beta/wiki/develop/structure">Project structure</a></li>
<li><a href="https://protelis.github.io/wiki-beta/wiki/develop/releases">Creating Releases</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Examples and demos<span class="caret"></span></a>
<ul class="dropdown-menu scrollable-menu">
<li><a href="https://protelis.github.io/wiki-beta/wiki/examples/ieeecomputer2015crowdtracking">Crowd danger estimation and warning</a></li>
<li><a href="https://protelis.github.io/wiki-beta/wiki/examples/ecas2016crowddispersal">Crowd dispersal service</a></li>
<li><a href="https://protelis.github.io/wiki-beta/wiki/examples/sac2015p2pplanning">Peer-to-peer route planning</a></li>
<li><a href="https://protelis.github.io/wiki-beta/wiki/examples/sac2015networkmanagement">Network services management</a></li>
</ul>
</li>
</ul>
</nav>
</div>
</header>
<div id="top"></div>
<div class="bs-docs-masthead" id="jumbotron">
<div class="container">
<h1 class="home-title">Protelis: aggregate programming</h1>
</div>
</div>
<div class="container bs-docs-container">
<div class="row">
<div class="col-md-9" role="main">
<nav aria-label="breadcrumb">
<ul class="breadcrumb">
<li class="breadcrumb-item active" aria-current="page">Protelis: aggregate programming</li>
</ul>
</nav>
<!-- start:inject components -->
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#00aba9">
<meta name="theme-color" content="#ffffff">
<h1 id="protelis-logo-why-protelis-what-is-it"><img src="https://protelis.github.io/wiki-beta/assets/media/images/logo_scale-0.08.png" alt="Protelis Logo" /> Why Protelis? What is it?</h1>
<p>Protelis is a programming language designed for people who want to get resilient collective behavior from a complex network of heterogeneous machines.
Protelis leverages <em>aggregate programming</em> for applications like the Internet of Things or flocking robots.
It lets you think about what you want the collection of machines to accomplish, rather than what you need each individual machine to do.</p>
<p>The goal of the Protelis language is to make it easier to build a resilient and well-behaved networked system out of an assortment of different potentially mobile devices.
Protelis is designed for the paradigm of "aggregate programming",
a way of thinking about and decomposing problems that can be solved with a network of distributed sensors and computers.
Aggregate programming tries to produce reliable and robust collective behavior from uncoordinated local interactions between machines.
That's hard to do, but Protelis helps!</p>
<p><img src="https://protelis.github.io/wiki-beta/assets/media/images/overview.png" alt="Protelis Logo" /></p>
<h1 id="what-is-it-not">What is it <strong>not</strong>?</h1>
<h3 id="not-an-agent-based-modeling-framework"><strong>Not</strong> an agent-based modeling framework</h3>
<p>Although agent-based modeling (ABM) and aggregate programming both concern phenomena that occur when many individuals interact, they approach these phenomena in different ways.
In ABM, you usually specify an individual’s behavior and interaction rules, and then simulate a collection of individuals to see what large-scale phenomena occur.
In aggregate programming, you specify the desired collective action, which is then transformed into a distributed implementation for individual machines.</p>
<h3 id="not-a-simulation-platform"><strong>Not</strong> a simulation platform</h3>
<p>Protelis is a programming language which can be used <em>within</em> simulation frameworks, but that per-se ships no simulation platform.
One of the nice things you get out of it is that, if the simulation implementation respects the reference,
the code written for a simulation can be reused as-is inside a deployed system.</p>
<h1 id="who-uses-it-the-protelis-community">Who uses it? The Protelis community</h1>
<h3 id="alma-mater-studiorumuniversità-di-bologna-italy">Alma Mater Studiorum—Università di Bologna (Italy)</h3>
<p>Protelis is used in a variety of experiments and demos by the research group led by <a href="https://www.unibo.it/sitoweb/mirko.viroli/en">prof. Mirko Viroli</a>.
The team includes <a href="https://www.unibo.it/sitoweb/danilo.pianini/en">Danilo Pianini</a>, chief architect and main developer of Protelis,
and <a href="https://www.unibo.it/sitoweb/roby.casadei/en">Roberto Casadei</a>, lead developer of <a href="https://scafi.github.io/">Scafi</a>,
a Scala internal DSL for aggregate programming.</p>
<h3 id="raytheon-bbn-technologies-usa">Raytheon BBN Technologies (USA)</h3>
<ul>
<li><a href="https://jakebeal.github.io/">Jacob Beal</a></li>
<li><a href="https://scholar.google.com/citations?user=oBq3jv0AAAAJ&hl=en">Shane Clark</a></li>
<li><a href="http://kyle.usbeck.us/">Kyle Usbeck</a></li>
</ul>
<h3 id="università-di-torino-italy">Università di Torino (Italy)</h3>
<ul>
<li><a href="http://www.di.unito.it/~damiani/">Ferruccio Damiani</a></li>
<li><a href="http://giorgio.audrito.info/#!/research">Giorgio Audrito</a></li>
</ul>
<h3 id="fondazione-bruno-kessler-italy">Fondazione Bruno Kessler (Italy)</h3>
<ul>
<li><a href="https://das.fbk.eu/people/profile/bucchiarone">Antonio Bucchiarone</a></li>
</ul>
<!-- end:inject components -->
</div>
<!-- Page navigation
=========================================== -->
<div class="col-md-3" role="complementary">
<div class="bs-docs-sidebar hidden-print" id="bs-docs-sidebar">
<ul class="nav bs-docs-sidenav">
</ul>
<!-- start:inject components -->
<!-- end:inject components -->
<a class="back-to-top" href="#top">
<i class="glyphicon glyphicon-chevron-up"></i> Back to top
</a>
</div>
</div>
</div>
</div>
<div id="footer">
<div class="container bs-docs-container">
<footer class="bs-docs-footer" role="contentinfo">
<div class="row">
<div class="col-xs-12">
<nav aria-label="navigateClasses">
<ul class="pager">
</ul>
</nav>
</div>
</div>
<div class="icons">
<a href="https://github.com/Protelis/Protelis" class="fa fa-github"></a>
</div>
<br>
<p>
Documentation template based on the
<a href="https://github.com/mistic100/jekyll-bootstrap-doc">Jekyll Bootstrap Doc</a>
Jekyll theme by the <a href="https://getbootstrap.com">Bootstrap team</a>. Site created with
<a href="https://orchid.netlify.com">Orchid</a>.
</p>
<ul class="bs-docs-footer-links muted">
<li>Currently 13.1.0-dev0f+6aed1deb</li>
</ul>
</footer>
</div>
</div>
<!-- start:inject scripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.3.0/bootbox.min.js"></script>
<script src="https://protelis.github.io/wiki-beta/BsDoc/b80036ee/assets/js/bsdoc.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/prism.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-kotlin.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-java.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-groovy.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-yaml.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-asciidoc.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-dart.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-markdown.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-python.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-javascript.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-xml.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.8.4/components/prism-scala.min.js"></script>
<!-- end:inject scripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/trianglify/1.2.0/trianglify.min.js"></script>
<script>
$(function () {
window.colors = ['#2299d8', '#000000'];
trianglify({});
buildNav();
});
</script>
</body>
</html>