A Storm of Drones - Dennis Vredeveld
-
Upload
nljug -
Category
Technology
-
view
126 -
download
1
Transcript of A Storm of Drones - Dennis Vredeveld
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
3
Nodig voor autonome drones
Basisopzet van een AI-systeem: • Sensing: zintuigen,
“aanvoelen” van de omgeving
• Interpreting: interpreteren van de waargenomen waardes, bepalen acties
• Acting: uitvoeren van acties
Interpreting (Behaviors)
Acting(Drone
aansturing)
Sensing(Analyzers)
Subsumption architecture
4
Sensors'
Actuators'
Scenario'
Behaviour1'
Behaviour2'''''''
Besturing van meerdere drones en de presentatie “Mastermind” van het geheel
Besturing van een enkele drone, autonome operatie Directe interactie met een drone
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 details7
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
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
Frameworks
20
YADrone: •Java-implementatie van ARDrone SDK
Vert.X: •Remoting, Eventing en Bus
OpenCV: •Standaard Library voor implementatie computer vision
Augmenters & video streaming
Reveal.js, AngularJS •HTML5 Presentatie framework
Vert.x
21
JVM/Vert.x Container
Bus (Hazelcast)
events
Verticle Behavior Verticle
Timer
Analyzer
new Thread() .start()
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
Analyzers
Augmenters Encoder
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
dd Defcon
Video streaming
• 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
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