• norsk
    • English
  • English 
    • norsk
    • English
  • Login
View Item 
  •   Home
  • Fakultet for ingeniørvitenskap (IV)
  • Institutt for maskinteknikk og produksjon
  • View Item
  •   Home
  • Fakultet for ingeniørvitenskap (IV)
  • Institutt for maskinteknikk og produksjon
  • View Item
JavaScript is disabled for your browser. Some features of this site may not work without it.

Programvare for autonome arbeidende undervannsfartøy - Plattformuavhengig innlasting av dynamiske programvarebibliotek under kjøretid

Aukland, Sigbjørn; Finnstrom, Christian Anders
Master thesis
Thumbnail
View/Open
13964_FULLTEXT.pdf (1.663Mb)
13964_ATTACHMENT.zip (18.16Mb)
13964_COVER.pdf (181.8Kb)
URI
http://hdl.handle.net/11250/2350319
Date
2015
Metadata
Show full item record
Collections
  • Institutt for maskinteknikk og produksjon [3186]
Abstract
Det 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.
Publisher
NTNU

Contact Us | Send Feedback

Privacy policy
DSpace software copyright © 2002-2019  DuraSpace

Service from  Unit
 

 

Browse

ArchiveCommunities & CollectionsBy Issue DateAuthorsTitlesSubjectsDocument TypesJournalsThis CollectionBy Issue DateAuthorsTitlesSubjectsDocument TypesJournals

My Account

Login

Statistics

View Usage Statistics

Contact Us | Send Feedback

Privacy policy
DSpace software copyright © 2002-2019  DuraSpace

Service from  Unit