Aegir (Coastal Shark)

Oppgaven

Fra Kongsberg Defence & Aerospace fikk bachelorgruppen oppgave om å utvide et av deres mangeårige sommerprosjekt kalt Coastal Shark. Fra arbeidsgiver fikk gruppen en liste med kravspesifikasjoner. Her var utgangspunktet problemstillingen rundt dataoverføring i et system over et ustabilt nettverk. Systemet, som er bygget på Robot Operating System (ROS), er bestående av en landstasjon (C2) og et delvis autonomt fartøy (Aegir), sammen utgjør de prosjektet Coastal Shark.

I forbindelse med kravspesifikasjonene har gruppen splittet opp oppgaven i fire ledd:

For framdriften av prosjektet valgte gruppen en agil arbeidmetode. Her ble det benyttet en Kanban-tavle for oppgaver, "god-morgenmøter", evalueringsmøter, Gantt diagram og enhetstesting.

Det ble også gitt enkelte begrensninger av arbeidsgiver, disse inkluderte blant annet:

Det har også blitt gjennomført risikoanalyse, regnskap og gjort mye undersøkelser i prosjektet.

Resultatet for de forskjellige delene til oppgaven ble:

Dynamisk dataoversikt

Her var oppgaven å få frem en oversikt over all datakommunikasjon i systemet. Målet med denne oversikten er å bruke denne informasjonen til å foreta prioriteringer gjennom prioriteringsystemet. Løsningen for dette ble å bruke ROS C++ API for å hente inn informasjon over nodene i systemet, og vise dette frem i en Qt applikasjon som illustrerer en grafisk tabell.


Prioriteringssystemet

Kravet her var å implementere et prioriteringssystem for datakommunikasjonen mellom C2 og Aegir. Løsningen for dette var å implementere et system som tillot operatøren å sette prioriteringer på diverse meldingstyper som blir sendt. Slik at viktige meldinger kan komme fortere frem. I tillegg ble det introdusert komprimering og kryptering av datakommunikasjonen. Det ble også laget et brukergrensesnitt for prioriteringen, hvor operatøren kan stille på konfigurasjonen til systemet.



Strupingsverktøy

Siden nettverksforbindelsen i systemet skal gå mellom en landstasjon og et fartøy som beveger seg på vann, er det et realistisk scenario at nettverksytelsen vil endre seg til stadighet. For å kunne teste nettverksytelsen, var det behvor for et verktøy som simulerte dette. Løsningen ble en virtuell tilnærming hvor en maskin har to nettverkskort som funker som en egen enhet med forskjellige bruksområder. Gjennom dette ble et strupingsverktøy utviklet på biblioteket Traffic Control (TC) som hadde en funksjonalitet for å manipulere nettverksforbindelser på Linux kjerner.


Datainnsamling og loggesystem

Gruppen fikk også oppgaven med å lagre all data som ble sendt fra sensorene på Aegir, slik som kameraer og posisjonsmålere. Det ble utviklet et brukergrensesnitt for å kunne velge hvilke data man ønsker å lagre. Når man så trykker på knappen “Start record” vil det sendes en melding til Aegir om å lagre all tilgjengelig data fra de valgte sensorene. Dataene som lagres kan senere åpnes i et brukergrensesnitt for å spille av testsett, sammen med en pc som simulerer Aegir.


Et av kravene var å kunne logge all datatrafikk som går over nettverket. Nettverket mellom C2 og Aegir er koblet sammen med en radiolink. Det er prioriteringssystemet som sender meldingene over denne linken, slik at loggesystemet må ta imot meldingene fra prioriteringen før de skrives til en fil. For å unngå eventuelle forsinkelser med ekstra oppkoblinger ble den beste løsningen å gjøre loggingen til en del av prioriteringssystemet.

Loggingen skal logge alle meldinger som sendes og mottas både på C2 og Aegir, samt gjeldende nettverksytelse. Informasjon om meldingene og nettverksytelsen blir lagret i en fil.

Til slutt ønsker vi å vie en stor takk til vår oppdragsgiver Kongsberg Defence & Aerospace for et interessant prosjekt og god støtte.