Show simple item record

dc.contributor.advisorLekkas, Anastasios
dc.contributor.authorRussvoll, Sondre Vincent
dc.date.accessioned2020-06-04T16:02:53Z
dc.date.available2020-06-04T16:02:53Z
dc.date.issued2020
dc.identifier.urihttps://hdl.handle.net/11250/2656727
dc.description.abstractMotivert av de siste fremskrittene innen dyp forsterkende læring (DRL), har en kvadrokopterplattform for DRL blitt designet og bygd. Den består av et kvadrokopter, samt programvare for å fasilitere forskning innen DRL. Det fysiske kvadrokopteret er designet for å være lite nok til å brukes i forskning innendørs, uten å måtte kjøres inni et beskyttende nett. Samtidig har det nok beregningskraft til å utføre oppgaver som datasyn i sanntid. Motorene er designet for å gi en maksimal løftekraft tilsvarende fem ganger kvadrokopterets vekt, og skal gi en maksimal flyvetid på inntil 23 minutter. Et fjernprosedyrekall-system (RPC) uten forsinkelser har blitt designet. Dette lar forskeren implementere tilkoblet (online) DRL-trening på en arbeidsstasjon i et høynivå språk, som Python, uten forsinkelser mellom påfølgende RPC-kall. Prosedyrekallinnringeren har kun et begrenset utvalg av kontrollflytoperatorer for å muliggjøre at RPC-systemet er språkagnostisk. Programvaren tilbyr et abstraksjonsgrensesnitt for å implementere omgivelsesagnostiske agenter og eksperimentspesifikk logikk. På denne måten kan kode skrevet av forskeren, uten modifikasjon, kjøre både på det fysiske kvadrokopteret, samt på en eventuell kvadrokoptersimulator. En implementasjon av dette grensesnittet er laget for det fysiske kvadrokopteret. Programvaredesignet garanterer å imøtekomme alle sanntidstidsfrister, samt at det ikke finnes noen vranglåser i systemet. Programvarearkitekturen er både lagdelt og modulær, slik at det er enkelt å legge til nye sensorer, omgivelsesagnostiske filtere, samt regulatorer til plattformen. Videre gjør designet det enkelt å endre enhver parameter, som tastefrekvenser, synkroniseringsstrategier for sanntidstrådene, hvilke filtere og sensorer som skal brukes, osv., selv mens programvaren kjører på kvadrokopteret. Plattformen tilbyr også en strukturert informasjonskran-primitiv. Denne lar forskeren tappe informasjon som flyter i de nedre lagene av programvaren. Forskeren kan lage et vilkårlig antall kraner, og hver kran kan konfigureres til å tappe forskjellig informasjon fra forskjellige deler av programvaren. Dette er nyttig for å implementere både tilkoblet og frakoblet trening, både på kvadrokopteret selv eller på en arbeidsstasjon. Informasjonskranene kan også brukes til å loggføre all informasjon som flyter på plattformen. De øvre lagene i programvarearkitekturen tilbyr et asynkront grensesnitt til forskeren. Den asynkrone programmeringsmodellen som er valgt ut til plattformen lar forskeren skrive synkronaktig kode ved å separere asynkron logikk fra utførelse. På denne måten er ikke asynkron og potensielt flertrådet eksperimentspesifikk logikk direkte involvert med trådlogikk. Den asynkrone utførelsesmodellen som brukes på plattformen tilbyr finkornet kontroll over algoritmene som planlegger sanntidstråder. Dette brukes til å prioritere viktige asynkrone oppgaver med korte tidsfrister, men dette kan videre tilpasses av forskeren. Gjennom hele designprosessen har sikkerhet vært i fokus. Så snart en ugjenopprettelig feiltilstand blir oppdaget vil programvaren iverksette en nødstopp. Dette er implementert i de nedre lagene av programvaren hvor en straks og feilfri respons er garantert. Når en gjenopprettelig feiltilstand blir oppdaget, slik som en prosessvariabel utenfor sitt arbeidsområde eller en feil i agentprogramvaren (f. eks. en segmenteringsfeil eller et tidsavbrudd), vil programvaren umiddelbart utføre feilkorrigerende tiltak for å tilbakeføre kvadrokopteret til en sikker tilstand, helt uten manuelle brukertiltak. Et passende feilkorrigerende tiltak er avgengig av forskningsprosjektet, og må forhåndsdefineres av forskeren. Flere eksperimenter har blitt utført på plattformen for å verifisere dens design og implementasjon. Erfaringene fra eksperimentene har dannet grunnlaget for designvalgene som blir presentert i denne teksten.
dc.description.abstractMotivated by the recent advances in deep reinforcement learning (DRL) on physical systems, a quadcopter platform for DRL research has been designed and built. It consists of a quadcopter and software to facilitate DRL research. The physical quadcopter is designed to be small enough to conduct research indoors without the need for a protective cage, while at the same time having enough power to run tasks like computer vision in real-time. It is designed to provide a maximum thrust of approximately 5 times its own weight, and have a flight time of up to 23 minutes. A zero-latency remote procedure call (RPC) design enables the researcher to implement online DRL training on a workstation in a high-level language, like Python, with no latency between consecutive RPC calls. The caller is provided with a limited set of control flow operations in order to keep the zero-latency RPC design language agnostic. The software features a platform abstraction API for implementing environment agnostic agents and experiment logic. This way, code written by the researcher can run, without modification, on both the physical quadcopter and eventually on a quadcopter simulator. An implementation of this API is provided for the physical quadcopter. The software design provides strong guarantees on meeting all real-time deadlines, as well as the absence of deadlocks. The layered and modularized architecture makes it easy to add new sensors, environment agnostic filters and controllers to the platform. Further, the design makes it easy to change any parameter, like sampling frequencies, synchronization strategy for the real-time threads, which filters and sensors to use, etc., even on run-time. The platform also provides a structured data collection primitive. It allows the researcher to extract data using multiple data taps, where each can be configured to extract various data from different parts of the system. This is useful for implementing both online and offline training, both on the quadcopter itself or on an external workstation, as well as logging of any data flowing on the platform. The higher layers of the software design provides an asynchronous API to the researcher. The chosen asynchronous programming model lets the researcher write synchronous-like code by separating the asynchronous logic from execution. Thus, asynchronous and potentially multi-threaded experiment logic does not explicitly involve itself with threading. The asynchronous execution model provides fine-grained control over scheduling that can be customized by the researcher, prioritizing higher priority asynchronous tasks with short deadlines. Throughout the entire design process, safety has been emphasized. As soon as an unrecoverable error condition is detected, the software will issue an emergency stop request. This is implemented in the lower layers of the software where a timely and bug-free response is guaranteed. When a recoverable error condition is detected, such as an out-of-bounds process variable (e.g. quadcopter position or attitude), or a fault in the agent software (e.g. segmentation fault or timeout), the framework will immediately take action to recover the quadcopter into a safe state, all without user intervention. A suitable recovery action is dependent on the research application, and must be configured by the researcher. Several experiments have been conducted on the platform to validate its design and implementation. The insight gained from the experiments have laid the foundation for the design choices presented in this thesis.
dc.languageeng
dc.publisherNTNU
dc.titleDesign and usage of a multi-rotor platform for reinforcement learning research
dc.typeMaster thesis


Files in this item

FilesSizeFormatView

This item appears in the following Collection(s)

Show simple item record