A Storm of Drones - Dennis Vredeveld

of 34 /34

Embed Size (px)

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

    Sens

    ors'

    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 benvloeden

  • 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 featuresVerschillende 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 Scenarios 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 scenarios - presentatie

    > Go to slide x > Start video stream > Start muziek

  • 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