Vis enkel innførsel

dc.contributor.advisorFjeldaas, Sven
dc.contributor.authorAukland, Sigbjørn
dc.contributor.authorFinnstrom, Christian Anders
dc.date.accessioned2015-10-05T14:54:00Z
dc.date.available2015-10-05T14:54:00Z
dc.date.created2015-06-10
dc.date.issued2015
dc.identifierntnudaim:13964
dc.identifier.urihttp://hdl.handle.net/11250/2350319
dc.description.abstractDet geometriske modelleringsprogrammet GeoMOD, tilbyr funksjonalitet for visualisering og styring av geometriske modeller. Programmet skal kunne knyttes opp mot roboters aktuatorer og brukes som styresystem. Undervannsfartøy (ROV) er en spesielt aktuell gruppe roboter i den sammenheng. Det er et mål at fartøy som benytter GeoMOD som styringssystem skal kunne arbeide autonomt. Programmet må derfor være i stand til å laste inn programtillegg basert på øyeblikkelige behov. Dette kravet danner grunnlaget for en sentral problemstilling i vår masteroppgave: Plattformuavhengig innlasting av dynamiske programvarebibliotek under kjøretid. For å løse dette problemet, har vi studert statiske og dynamiske programvarebibliotekers virkemåter i Linux og Windows. Besvarelsen drøfter byggeprosessen rundt disse bibliotektypene i de to operativsystemene, samt linking til statiske bibliotek og teknikker for å laste inn C++-baserte dynamiske bibliotek ved hjelp av C-funksjonene dlopen i Linux og LoadLibrary i Windows. Med dette som bakteppe, gikk vi videre med programvareutviklingsrammeverket Qts verktøy for plattformuavhengig innlasting av bibliotek: QLibrary samler plattformspesifikke C-funksjoner for dynamisk innlasting i én felles klasse, og tilbyr disse gjennom et sett metoder som automatisk tilpasses gjeldende plattform. Når biblioteket er lastet inn, kan QLibrary brukes til å nå bibliotekets symboler. QPluginLoader baserer seg på QLibrary, men tilbyr utviklere tilgang til et rotkomponent-objekt i det innlastede biblioteket, en egenskap som ble helt sentral i vår løsning. Vårt arbeid er et bidrag i en årelang prosess. Å benytte fornuftige designmønstre og programvarearkitekturer er essensielt for effektiv og solid programvare. Arkitektonisk baserer programmet seg først og fremst på Model-view-controller, som separerer presentasjon av data fra selve dataene. Videre har vi benyttet extensibility pattern for å gjøre programmet tilbøyelig for programtillegg, samt abstract factory pattern i kombinasjon med C++-templates for å opprette objekter basert på kildekode fra de innlastede programtilleggene. Prosjektets lange livsløp har resultert i en hel del arbeid knyttet til portering fra eldre Qt-versjoner. Store deler av den utdaterte funksjonaliteten har kunnet erstattes med nye funksjoner direkte, men en del funksjonalitet har måttet implementeres på ny. Dette gjelder blant annet design av nye brukergrensesnitt. Ved prosjektovertakelse fungerte programmet bare i Linux. Under hele prosessen har plattformuavhengighet vært et hovedmål, og programmet fungerer nå også i Windows-operativsystemet med en operativ filutforsker.
dc.languagenob
dc.publisherNTNU
dc.subjectIngeniørvitenskap og IKT, Produktutvikling og materialer
dc.titleProgramvare for autonome arbeidende undervannsfartøy - Plattformuavhengig innlasting av dynamiske programvarebibliotek under kjøretid
dc.typeMaster thesis
dc.source.pagenumber67


Tilhørende fil(er)

Thumbnail
Thumbnail
Thumbnail

Denne innførselen finnes i følgende samling(er)

Vis enkel innførsel