coos - coordination support for mobile collaborative applications
DESCRIPTION
I present the COOS library, which can be used to create mobile collaborative applications.TRANSCRIPT
CooSCoordination Support for Mobile Collaborative Applications
Mário Henrique Cruz Torres
iMinds Distrinet - KULeuvenDecember 2012
Key Message
Mobile Collaborative Applications are the future
Mobile Collaborative Apps
users interact to achieve either their own, or joint objectives
location is a first class citizen
mix of crowd-sourcing, location services, mobile sensing
users are an active component of the system, so called human-in-the-loop
Research
Collaborative traffic routing 1
Search and Rescue 2
Public transportation optimization 3
Remote sensing 4
Dynamic Task Allocation 5
1 - “SignalGuru: leveraging mobile phones for collaborative traffic signal schedule advisory” 20102 - “Overseer: a mobile context-aware collaboration and task management system for disaster response” Luqman 20103 - “Towards a new mobility concept for cities: architecture and programming of semi-autonomous electric vehicles” Rocha 20074 - “Task-Oriented Systems for Interaction with Ubiquitous Computing Environments “ Vo 20105 - “Dynamic task allocation and coordination in cooperative multi-agent environments” Suarez 2011
Problem
How to organize a group of workers who are geographically spread but have to perform actions together?
https://www.youtube.com/watch?v=0fluKWYRC_w
Almost there...
Google Maps Coordinate
Why?User Inter-Communication Joint Goal
Foursquare
Uber
Milk.ly
Waze
Open Garden
Google Maps Coordinate
✖✖
✖✖✖
✖
Key Challenges
Dynamically determine collaboration partners
Collaboration scale
Manage the interactions between collaboration partners
Coordinate collaboration partners actions
Coordination Challenges
Modeled as a task assignment problem
Known as “Minimum Latency Problem” - NP-hard
Similarities with the TSP
Minimize waiting time to perform each task
“A simple and effective metaheuristic for the Minimum Latency Problem “- Melo Silva 2012
CooS
Key: Mobile phone
Coordination on Clouds
Local ComponentsApplications
CooS
Mobile Device [1..*]CloudMobile Device
Cloud Mobile Device [1..*]Mobile Device
Key: UML 2.0
requestCollaboration() Request
CollaborationEvent
select participants
CollaborationRequested
Event collaborationCall()
CoordinationEvent
coordinationCall()
retrieve coordination
context
CoordinationEvent
CooS MiddlewareComponent
CooS ClientComponent
«Initiator»Application
«Participant»Application
CooS ClientComponent
«Participant»Application
CooS ClientComponent
Cloud Mobile Device [1..*]Mobile Device
Key: UML 2.0
select participants
retrieve coordination
context
CooS MiddlewareComponent
CooS ClientComponent
«Initiator»Application
«Participant»Application
CooS ClientComponent
requestCollaboration()
collaborationCall()
CoordinationEvent
CollaborationRequested
Event
RequestCollaboration
Event
coordinationCall()
CoordinationEvent
Key: UML 2.0
select participants
retrieve coordination
context
CooS MiddlewareComponent
CooS ClientComponent
«Initiator»Application
«Participant»Application
CooS ClientComponent
requestCollaboration
(...)
collaborationCall(...)
CoordinationEvent
CollaborationRequested
Event
RequestCollaboration
Event
coordinationCall(...)
CoordinationEvent
Mobile DeviceCloud
loop
Key: UML 2.0
CooS MiddlewareComponent
«Participant»Application
CooS ClientComponent
registerAsParticipant(...)
timer
getLocation(...)
Location UpdateEvent
CooS InteractionCommunication pattern, Initiator
Fitting Everything Togethervar coos = new Coos(serverUrl, deviceId, locationCallback);coos.requestCollaboration( {applicationPayload: ‘something’}, {lat: 39.900255, lng: 116.402687}, function(collaborationOutcome) { alert(“collaborate here”) } );
coos.registerAsParticipant( locationCallback, participantCallback );
CooS requires location and handles the coordination protocol
CooS Applications
Location-based coordination protocolCoordination
PrototypeTeamEnhancerApp, PassengerApp, TaxiApp
Profiling Setup
server: Intel i5-2400 CPU @ 3.10 GHz, 4 GiB of RAM, executing an Ubuntu O.S. with the Linux kernel 2.6.35-32.
clients siege the server using Siege (http://www.joedog.org/siege-home)
HTTP POST request of 392 bytes each (header+CooS payload)
40
60
80
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
500 1000 1500 2000 2500Transaction Rate (transactions/s)
CPU
Loa
d (%
)
ProfilingCPU Load - at server side
0
5
10
15
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●●
●●
● ●●
500 1000 1500 2000 2500Transaction Rate (transactions/s)
Long
est T
rans
actio
ns (s
)
ProfilingLongest transactions
0
2
4
6
8
● ● ● ● ●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
500 1000 1500 2000 2500Transaction Rate (transactions/s)
Faile
d Tr
ansa
ctio
ns (1
0E−3
%)
ProfilingFailed Transactions
Coordination EvaluationAssigning workers to tasks in Belgium
Truck Icon: SimonChild, from The Noun Project
ProfilingDeployment View
Coordination Evaluation500 workers
5000 machines
Mean time to repair a machine set to 1 hour
Standard deviation time to repair a machine set to 4 hours
Average moving speed set to 20 km/h
80% of tasks require only one worker
0
20
40
60
80
100
●
●
●
●
●
●
●
●
●
●
●
●
●
●
0 5 10 15 20Radius (Km)
Com
plet
ed T
asks
(%)
Coordination EvaluationCompleted tasks
0
5
10
15
20
25
30
1.10 1.15 1.20 1.25
density
variableRadius10Radius15Radius20
Coordination EvaluationUser Interruption
Lessons Learned & Open Issues
At the technical level. Concetps survive, but perhaps we need to test other languages that could be better (e.g. AmbientTalk)
Assigning tasks collaboratively is feasible. Is it good?
Compare collaborative solutions with meta-heuristic solutions
Compare to other collaborative solutions, from Multi-Agent Systems domain, for instance