Title: Steering MAV Swarms
1Steering MAV Swarms
- Demonstration
- Oleg Sokolsky
- Diana Gordon, William Spears, Insup Lee
- Patrick White, Tugkan Batu
- April 27, 1999
2Monitoring of MAV pattern formation
- Demo is implemented as a concurrent Java
application - An alternative implementation of MaC framework
- the MaC objects are a part of the same
application - allows us to explore advanced features
- steering
- program checking
- The structure of MaC is followed closely
- Instrumentation is done by hand at source code
level
3Application Structure
4Two avenues of monitoring
- Pattern formation
- monitored entity distance to a neighbor
- primitive event MAValert
0.25R ? distance ? 0.75R - monitor alarm pattern alarm
- trigonometric calculations
- monitored entities calls to functions sin and
cos - primitive events IoM(sin), IoM(cos)
- monitor alarm radiation alarm
5Trigonometry checker
- Implemented at Cornell (Rubinfeld, White, Batu)
- Self-testing
- does the given code compute the required
function? - used by the monitor to check its own
trigonometric computation - Checking
- given numbers x and y, and a function f, is
yf(x)? - used by the monitor to check trigonometric
computation in MAVs
6Steering (repair)
- Monitor cannot address individual MAVs. All
commands are broadcast by means of the Air class. - Two types of steering are used
- after a pattern alarm, repulsion between close
MAVs is suspended. MAVs are drawn together,
re-starting the formation process. - after a radiation alarm, computation of
trigonometric functions is switched to a
different mode.
7Monitoring script (PEDL)
MonScr MAVpattern export event MAValert,
startPgm, checkSin, checkCos monobj int
Air.DIST monmeth void EmulateMAV.main(String)
monobj double MAV.run().dist monmeth double
MAV.myMath.sin(double) monmeth double
MAV.myMath.cos(double) event checkSin IoM(
MAV.myMath.sin(double) ) event checkCos IoM(
MAV.myMath.cos(double) ) event startPgm
startM( EmulateMAV.main(String) ) event
MAValert start( MAV.run().dist gt 0.25
Air.DIST MAV.run().dist lt 0.75
Air.DIST ) End
8Monitored requirements (MEDL)
ReqSpec HexPattern import event MAValert,
startPgm, checkSin, checkCos var long
currInterval var int count0, count1, count2
var int prevAvg, currAvg event startPeriod
start(time(MAValert) - currInterval gt 10000)
property trigOK sinChecker.correct(value(checkS
in,1), value(checkSin,2))
cosChecker.correct(value(checkCos,1),
value(checkCos,2)) property NoPattern
(currAverage lt prevAverage1.15 100)
(prevAvg -1) startPgm -gt currInterval
time(startPgm) count0 0 prevAvg
-1 currAvg -1 startPeriod -gt
currInterval currInterval 10000 prevAvg
currAvg currAvg (curr0curr1curr2)/3 coun
t2 count1 count1 count0 count0 0
MAValert -gt count0 count0 1 End
9Legend
Number of alerts goes down fast if everything is
normal
After a pattern alarm occurs, number of alerts
goes up due to correction
A radiation alarm occurs after a trigonometric
error is detected
A pattern alarm occurs after the number
of alerts grows too much
A bomb blast is shown in black
A radiation attack is shown in blue
10Summary
- Demonstrate the integration of research results
of the MURI participants - steering of MAVs by means of artificial physics
- run-time monitoring of real-time systems with the
MaC framework - checking of trigonometric functions using program
checking techniques