A Storm of Drones - Dennis Vredeveld

34

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

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

2 3

4

Voorbeeld: Kong

19

1

Einde scenario

2 3

4

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

Problemen

25

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

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