SlideShare a Scribd company logo
Inleiding 
• Verdieping van Game of Drones 
• Technische uitleg van het systeem 
• Frameworks, libraries, componenten 
• Problemen en uitdagingen 
• Anders dan standaard JEE 
• Besturing vereist AI 
2
Artificial Intelligence 101 
Nodig voor autonome drones 
Basisopzet van een AI-systeem: 
• Sensing: zintuigen, 
3 
“aanvoelen” van de 
omgeving 
• Interpreting: interpreteren 
van de waargenomen 
waardes, bepalen acties 
• Acting: uitvoeren van acties 
Interpreting 
(Behaviors) 
Sensing 
(Analyzers) 
Acting 
(Drone 
aansturing)
Subsumption architecture 
4 
Sensors' 
Actuators' 
Besturing van meerdere drones en de presentatie 
“Mastermind” van het geheel 
Scenario' 
Besturing van een enkele drone, autonome operatie 
Directe interactie met een drone 
Behaviour1' 
Behaviour2' 
'''''' 
Opdeling in herbruikbare tasks 
en behaviors die tasks combineren, 
uitschakelen of beïnvloeden
Sensing: opzet 
• Verschillende sensoren 
• Video, hoogte, gyroscoop… 
• Analyzers 
• Sensing implementatie o.b.v. sensordata drones 
• Bv. patroonherkenning 
• Verschil tussen analyse van eigen sensoren en 
externe apparaten 
• Eigen: continue stroom 
• Extern: event gebaseerd 
5
Sensing: blackboard pattern 
6 
Verzamelplek van features 
Verschillende analyzers als 
knowledge source die 
“Features” op het 
blackboard plaatsen 
Interpretation deel: 
activeert Analyzers en interpreteert “Features”
Sensing probleem: lokalisering 
• Indoor == GPS onbruikbaar 
• Geen absolute informatie behalve hoogte 
• Behaviors vereisen dit wel 
• Relatieve informatie te onnauwkeurig 
• Oplossing: patroonherkenning 
• Gezichtsdetectie: OpenCV 
• Kleurherkenning: home made 
• Confidence 
• Scale back 
• Focussen en details 7
Interpreting - Behaviors 
• Interpreting: 
• Goal - Sensing == ERROR 
• Behavior: autonoom stukje gedrag 
• Bepaalt goal en daarmee besturing 
• Javascript/Java koppeling 
• Scenario’s en Behaviors zijn steeds 
verschillend 
• Realisatie veel trial-and-error 
• Verkorten van de develop/build/run cycle 
8
Demo 
9
Interpreting probleem: 
stabiliteit 
• Automatische besturing noodzakelijk 
• Geen menselijke correcties meer 
• Wegregelen verstoringen en vertraging 
• Probleem: stabiliteit, overshoot 
• Oplossing: betere feedback loop 
• Vele kleine correcties 
• PID regelaar 
10
Interpreting: PID 
11 
• Proportioneel, integraal, 
afgeleide 
• Extra: reageren (I) en 
anticiperen (D) 
• Makkelijk te realiseren, 
moeilijk te configureren 
• Trial & error 
• x,y-as, z-as, rotatie
Acting 
• Beperkte mogelijkheden 
• Hardware constraints 
• Onnauwkeurigheid 
• Extern (bv. wind) en intern (bv. wrijving) 
• Sensing detecteert daadwerkelijke resultaat 
• Relatieve besturing 
• “Ga 0,5s naar rechts met 25% vermogen” 
12
Opzet 
13
Componenten 
14
Voorbeeld: Kong 
15 
1 
2 
Wijs drones toe aan teams
Voorbeeld: Kong 
16 
1, 2 
Start Kong scenario 
3
Voorbeeld: Kong 
17 
1, 5 
Start game 
2 
3 4
Voorbeeld: Kong 
18 
1 
Playing game 
4 
2 3
Voorbeeld: Kong 
19 
1 
Einde scenario 
2 3 
4
Frameworks 
20 
Vert.X: 
•Remoting, Eventing en Bus 
YADrone: 
•Java-implementatie van ARDrone SDK 
OpenCV: 
•Standaard Library voor implementatie computer vision 
Augmenters & video streaming 
Reveal.js, AngularJS 
•HTML5 Presentatie framework
Vert.x 
JVM/Vert.x 
Container 
21 
Bus (Hazelcast) 
events 
Timer 
Verticle Behavior 
Verticle 
new Thread() 
.start() 
Analyzer
YADrone 
• 100% java-based framework voor ARDrone 
• Reverse engineered vanaf 
ARDrone SDK 
• Veel bugs 
• CommandManager, ConfigurationManager 
VideoManager, NavDataManager 
• Listener-producer 
• Vertaling naar AT-Commandos 
22
Augmenters & Video streaming 
• Video pipeline implementatie 
• Augmenters voor presentatie 
23 
Analy 
zers 
Augmenters Enco 
der
Presentatie 
• Reveal.js als HTML5 presentatie framework 
• Externe interactie —> Integratie met 
AngularJS 
• Draait als verticle binnen Vert.x 
• Interactie scenario’s - presentatie 
• —> Go to slide x 
• —> Start video stream 
• —> Start muziek 
• <— Start scenario 
24
Problemen 
25
Video streaming 
dd Defcon 
• MJPEG stabiliteit 
• Delay/encoding (RTMP) 
• Latency 
26 
• Stabiliteit: 
• Socket timeouts (tickle) 
• Video en navdata hick-ups 
• Config aanpassingen 
• Latency in YADrone 
• Bandbreedte bij meerdere 
drones
Netwerk & Security 
• Elke drone heeft eigen AP 
• unencrypted 
• first come, first serve 
• ARDrone via WPA2 koppelen aan Airport 
• firmware aanpassing noodzakelijk 
• m.b.v. Android app 
27
Vragen? 
28
Links 
• YADrone: http://vsis-www.informatik.uni-hamburg.de/oldServer/teaching// 
projects/yadrone/ 
• YADrone (Salves versie met bugfixes): https://github.com/ronsmits/YADrone 
• ARDrone WPA: https://github.com/daraosn/ardrone-wpa2 
• ARDrone SDK: https://projects.ardrone.org/ 
• Subsumption architecture: http://en.wikipedia.org/wiki/ 
Subsumption_architecture 
• Java ScriptEngine: http://docs.oracle.com/javase/7/docs/api/javax/script/ 
ScriptEngine.html 
• PID Controllers: http://en.wikipedia.org/wiki/PID_controller 
• MindWave - http://store.neurosky.com/products/mindwave-1 
• Reveal.JS: http://lab.hakim.se/reveal-js/#/ 
• Vert.x: http://vertx.io/ 
• OpenCV: http://opencv.org/ 
29
Backupslides 
30
PID: Kp 
31
PID: Ki 
32
PID: Kd 
33
Optioneel: YADrone opzet 
34

More Related Content

Similar to JFall 2014 - A Storm of Drones

PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsRichard Tuin
 
Durandal at Team4Talent
Durandal at Team4TalentDurandal at Team4Talent
Durandal at Team4Talent
Peter Morlion
 
SURF Lego - SURFwired - Edwin Verheul - NWD23
SURF Lego - SURFwired - Edwin Verheul - NWD23SURF Lego - SURFwired - Edwin Verheul - NWD23
SURF Lego - SURFwired - Edwin Verheul - NWD23
SURFevents
 
Android
AndroidAndroid
Android
Peter Maas
 
Gegevensbescherming voor scholen van de 21e eeuw - Roel Gloudemans - OWD13
Gegevensbescherming voor scholen van de 21e eeuw - Roel Gloudemans - OWD13Gegevensbescherming voor scholen van de 21e eeuw - Roel Gloudemans - OWD13
Gegevensbescherming voor scholen van de 21e eeuw - Roel Gloudemans - OWD13
SURF Events
 
Large assy's in Autodesk Inventor
Large assy's in Autodesk InventorLarge assy's in Autodesk Inventor
Large assy's in Autodesk Inventor
inventorwizard
 
embedded Linux, van Black Tot QA
embedded Linux, van Black Tot QAembedded Linux, van Black Tot QA
embedded Linux, van Black Tot QA
Albert Mietus
 
Open IT-architectuur zet beheer publieke&private buitenruimte weer op de kaart
Open IT-architectuur zet beheer publieke&private buitenruimte weer op de kaartOpen IT-architectuur zet beheer publieke&private buitenruimte weer op de kaart
Open IT-architectuur zet beheer publieke&private buitenruimte weer op de kaart
Adrie Tepas
 
Projectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdamProjectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdamBert Boerland
 
Perfect Patch
Perfect PatchPerfect Patch
Perfect Patch
Regine Deleu
 
Nagios Open Source Monitoring
Nagios Open Source MonitoringNagios Open Source Monitoring
Nagios Open Source Monitoring
247 Invest
 
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en ScrumSYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en ScrumSYSQA BV
 
Monitoring sucks
Monitoring sucksMonitoring sucks
Monitoring sucks
Jurgen van de Pol
 
Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB AlarmcentraleHoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Sjoerd Hemminga
 
Netwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demoNetwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demo
SURFnet
 
Drupaljam Testing 20090626
Drupaljam Testing 20090626Drupaljam Testing 20090626
Drupaljam Testing 20090626
Raymond Muilwijk
 
About Node.js
About Node.jsAbout Node.js
About Node.js
Hanzehogeschool
 
201505 Gear - Projectaanpak servermigratie
201505 Gear - Projectaanpak servermigratie201505 Gear - Projectaanpak servermigratie
201505 Gear - Projectaanpak servermigratie
geareontop
 
Niet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenNiet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappen
Rick Beerendonk
 

Similar to JFall 2014 - A Storm of Drones (20)

Netflow Performance
Netflow PerformanceNetflow Performance
Netflow Performance
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
 
Durandal at Team4Talent
Durandal at Team4TalentDurandal at Team4Talent
Durandal at Team4Talent
 
SURF Lego - SURFwired - Edwin Verheul - NWD23
SURF Lego - SURFwired - Edwin Verheul - NWD23SURF Lego - SURFwired - Edwin Verheul - NWD23
SURF Lego - SURFwired - Edwin Verheul - NWD23
 
Android
AndroidAndroid
Android
 
Gegevensbescherming voor scholen van de 21e eeuw - Roel Gloudemans - OWD13
Gegevensbescherming voor scholen van de 21e eeuw - Roel Gloudemans - OWD13Gegevensbescherming voor scholen van de 21e eeuw - Roel Gloudemans - OWD13
Gegevensbescherming voor scholen van de 21e eeuw - Roel Gloudemans - OWD13
 
Large assy's in Autodesk Inventor
Large assy's in Autodesk InventorLarge assy's in Autodesk Inventor
Large assy's in Autodesk Inventor
 
embedded Linux, van Black Tot QA
embedded Linux, van Black Tot QAembedded Linux, van Black Tot QA
embedded Linux, van Black Tot QA
 
Open IT-architectuur zet beheer publieke&private buitenruimte weer op de kaart
Open IT-architectuur zet beheer publieke&private buitenruimte weer op de kaartOpen IT-architectuur zet beheer publieke&private buitenruimte weer op de kaart
Open IT-architectuur zet beheer publieke&private buitenruimte weer op de kaart
 
Projectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdamProjectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdam
 
Perfect Patch
Perfect PatchPerfect Patch
Perfect Patch
 
Nagios Open Source Monitoring
Nagios Open Source MonitoringNagios Open Source Monitoring
Nagios Open Source Monitoring
 
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en ScrumSYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
SYSQA Kennissessie oktober 2011, presentatie 1 Testen en Scrum
 
Monitoring sucks
Monitoring sucksMonitoring sucks
Monitoring sucks
 
Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB AlarmcentraleHoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
 
Netwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demoNetwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demo
 
Drupaljam Testing 20090626
Drupaljam Testing 20090626Drupaljam Testing 20090626
Drupaljam Testing 20090626
 
About Node.js
About Node.jsAbout Node.js
About Node.js
 
201505 Gear - Projectaanpak servermigratie
201505 Gear - Projectaanpak servermigratie201505 Gear - Projectaanpak servermigratie
201505 Gear - Projectaanpak servermigratie
 
Niet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenNiet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappen
 

JFall 2014 - A Storm of Drones

  • 1.
  • 2. Inleiding • Verdieping van Game of Drones • Technische uitleg van het systeem • Frameworks, libraries, componenten • Problemen en uitdagingen • Anders dan standaard JEE • Besturing vereist AI 2
  • 3. Artificial Intelligence 101 Nodig voor autonome drones Basisopzet van een AI-systeem: • Sensing: zintuigen, 3 “aanvoelen” van de omgeving • Interpreting: interpreteren van de waargenomen waardes, bepalen acties • Acting: uitvoeren van acties Interpreting (Behaviors) Sensing (Analyzers) Acting (Drone aansturing)
  • 4. Subsumption architecture 4 Sensors' Actuators' Besturing van meerdere drones en de presentatie “Mastermind” van het geheel Scenario' Besturing van een enkele drone, autonome operatie Directe interactie met een drone Behaviour1' Behaviour2' '''''' Opdeling in herbruikbare tasks en behaviors die tasks combineren, uitschakelen of beïnvloeden
  • 5. Sensing: opzet • Verschillende sensoren • Video, hoogte, gyroscoop… • Analyzers • Sensing implementatie o.b.v. sensordata drones • Bv. patroonherkenning • Verschil tussen analyse van eigen sensoren en externe apparaten • Eigen: continue stroom • Extern: event gebaseerd 5
  • 6. Sensing: blackboard pattern 6 Verzamelplek van features Verschillende analyzers als knowledge source die “Features” op het blackboard plaatsen Interpretation deel: activeert Analyzers en interpreteert “Features”
  • 7. Sensing probleem: lokalisering • Indoor == GPS onbruikbaar • Geen absolute informatie behalve hoogte • Behaviors vereisen dit wel • Relatieve informatie te onnauwkeurig • Oplossing: patroonherkenning • Gezichtsdetectie: OpenCV • Kleurherkenning: home made • Confidence • Scale back • Focussen en details 7
  • 8. Interpreting - Behaviors • Interpreting: • Goal - Sensing == ERROR • Behavior: autonoom stukje gedrag • Bepaalt goal en daarmee besturing • Javascript/Java koppeling • Scenario’s en Behaviors zijn steeds verschillend • Realisatie veel trial-and-error • Verkorten van de develop/build/run cycle 8
  • 10. Interpreting probleem: stabiliteit • Automatische besturing noodzakelijk • Geen menselijke correcties meer • Wegregelen verstoringen en vertraging • Probleem: stabiliteit, overshoot • Oplossing: betere feedback loop • Vele kleine correcties • PID regelaar 10
  • 11. Interpreting: PID 11 • Proportioneel, integraal, afgeleide • Extra: reageren (I) en anticiperen (D) • Makkelijk te realiseren, moeilijk te configureren • Trial & error • x,y-as, z-as, rotatie
  • 12. Acting • Beperkte mogelijkheden • Hardware constraints • Onnauwkeurigheid • Extern (bv. wind) en intern (bv. wrijving) • Sensing detecteert daadwerkelijke resultaat • Relatieve besturing • “Ga 0,5s naar rechts met 25% vermogen” 12
  • 15. Voorbeeld: Kong 15 1 2 Wijs drones toe aan teams
  • 16. Voorbeeld: Kong 16 1, 2 Start Kong scenario 3
  • 17. Voorbeeld: Kong 17 1, 5 Start game 2 3 4
  • 18. Voorbeeld: Kong 18 1 Playing game 4 2 3
  • 19. Voorbeeld: Kong 19 1 Einde scenario 2 3 4
  • 20. Frameworks 20 Vert.X: •Remoting, Eventing en Bus YADrone: •Java-implementatie van ARDrone SDK OpenCV: •Standaard Library voor implementatie computer vision Augmenters & video streaming Reveal.js, AngularJS •HTML5 Presentatie framework
  • 21. Vert.x JVM/Vert.x Container 21 Bus (Hazelcast) events Timer Verticle Behavior Verticle new Thread() .start() Analyzer
  • 22. YADrone • 100% java-based framework voor ARDrone • Reverse engineered vanaf ARDrone SDK • Veel bugs • CommandManager, ConfigurationManager VideoManager, NavDataManager • Listener-producer • Vertaling naar AT-Commandos 22
  • 23. Augmenters & Video streaming • Video pipeline implementatie • Augmenters voor presentatie 23 Analy zers Augmenters Enco der
  • 24. Presentatie • Reveal.js als HTML5 presentatie framework • Externe interactie —> Integratie met AngularJS • Draait als verticle binnen Vert.x • Interactie scenario’s - presentatie • —> Go to slide x • —> Start video stream • —> Start muziek • <— Start scenario 24
  • 26. Video streaming dd Defcon • MJPEG stabiliteit • Delay/encoding (RTMP) • Latency 26 • Stabiliteit: • Socket timeouts (tickle) • Video en navdata hick-ups • Config aanpassingen • Latency in YADrone • Bandbreedte bij meerdere drones
  • 27. Netwerk & Security • Elke drone heeft eigen AP • unencrypted • first come, first serve • ARDrone via WPA2 koppelen aan Airport • firmware aanpassing noodzakelijk • m.b.v. Android app 27
  • 29. Links • YADrone: http://vsis-www.informatik.uni-hamburg.de/oldServer/teaching// projects/yadrone/ • YADrone (Salves versie met bugfixes): https://github.com/ronsmits/YADrone • ARDrone WPA: https://github.com/daraosn/ardrone-wpa2 • ARDrone SDK: https://projects.ardrone.org/ • Subsumption architecture: http://en.wikipedia.org/wiki/ Subsumption_architecture • Java ScriptEngine: http://docs.oracle.com/javase/7/docs/api/javax/script/ ScriptEngine.html • PID Controllers: http://en.wikipedia.org/wiki/PID_controller • MindWave - http://store.neurosky.com/products/mindwave-1 • Reveal.JS: http://lab.hakim.se/reveal-js/#/ • Vert.x: http://vertx.io/ • OpenCV: http://opencv.org/ 29