dc.description.abstract | Programvare og algoritmer for estimering av bølgedata og sanntids-bølgehøyde ble implementert på en STM32 ARM-Cortex-M mikrokontroller. Bølgesensoren er laget til
bruk på flytende målebøyer, til estimering av bølger og til beregning av posisjon og
orientering i sanntid. Ved bruk av DMA (Direkte minnetilgang) og multitasking med
FreeRTOS kan bølgesensoren sende sanntidsdata med lav forsinkelse til datalogger over
seriell port, samtidig som bølgestatistikk beregnes i bakgrunnen.
Bølgedata som beregnes er bølgespektrum, signifikant bølgehøyde hm0, gjennomsnittlig
bølgeperiode tm01, tidsserien av bølgehøyden, og første- og andre fourierkoeffisienter for
retningsspektrum. Bølgesensoren mottar akselerometer, gyroskop og magnetometerdata
fra en SBG Ellipse 2 Micro IMU, som er koblet til UART på mikrokontroller.
STMicroelectronics eget gratis utviklingsverktøy STM32CubeIDE ble brukt til utvikling
og debugging av software, samt til å generere kode for konfigurasjon og initialisering av
mikrokontrolleren. STs lavnivå-drivere (Low-layer drivers) ble brukt for konfigurasjon og
styring av UART og andre periferienheter på mikrokontrolleren.
Bølgesensoren bruker en AHRS til estimering av bøyens orientering i sanntid ved bruk
av sensor-data fra akselerometer, gyroskop og magnetometer. Med bøyens orientering
finner man den vertikale akselerasjonen som dobbelt-integreres for å finne bølgehøyde.
AHRS som velges til oppgaven er et Eksplisitt Komplementær Filter, kjent fra Mahony
et al. (2008) [18] og bruker en implementasjon fra Hua et al. (2014) [12]. AHRSen testes
på rådata fra en Fugro SEAWATCH bøye, til estimering av orientering (rull, stamp og
gir-vinkler) og bølgedata/statistikk. AHRSen viser seg å være godt egnet til oppgaven.
De viktigste delene av kildekoden er med i vedlegget på slutten av rapporten. Observer for sanntidsestimering av bølgehøyde ble implementert. Observeren er implementert
på tilstandsrom-form og bruker et kalman-filter til beregning av kalman-forsterkning og
kovariansmatrisen i hvert tidssteg. Implementasjonen gir gode muligheter for å også estimere posisjon og hastighet horisontalt i sanntid. Valg av observer for sanntids estimering
av posisjon og hastighet i sanntid, og akselerometerbias blir diskutert i rapporten. | |
dc.description.abstract | Software and algorithms for estimation of wavedata and real-time waveheight was implemented on a STM32 ARM-Cortex-M microcontroller. The wavesensor is made to be
used on a floating weather buoy, for estimation of waves and for estimation of position
and attitude in real-time. By using DMA (Direct Memory Access) and multitasking
with FreeRTOS, the wavesensor can send real-time data, with low delay to the datalogger, connected with RS-232, and at the same time computes wavestatistics in the
background.
The wavedata computed includes the omnidirectional wavespectrum, significant waveheight hm0, average waveperiod tm01, the timeseries of waveheight, and first- and secondorder Fourier-coefficients for the directional wavespectrum. The wavesensor receives
accelerometer-, attitude rate sensor- and magnetometer-data from a SBG Ellipse 2 Micro
IMU, connected to the microcontroller with serial interface.
STMicroelectronics’ free of charge integrated development environment STM32CubeIDE
was used for development and for debugging the software, and to generate code for
configuration and initialization of the microcontroller. The LL-drivers (Low-layer) from
ST was used for programming the peripherals of the microcontroller.
With sensordata from the accelerometer, attitude rate sensor and magnetometer, the
wavesensor uses an AHRS for estimation of the buoy’s attitude in real-time. The buoy’s
attitude is used for computation of the vertical acceleration, which is integrated twice
to find the waveheight.
The AHRS-observer chosen in this thesis is the Explicit Complementary Filter [18], using
the implementation from Hua et al. (2014) [12]. The observer was tested on IMU-sensor
data from a Fugro SEAWATCH buoy, for estimation of attitude and wavedata. The
AHRS proves to be well suited for the task.
The most important parts of the source-code is provided in the appendix of the report.
An observer for real-time estimation of waveheight was implemented. The implementation uses the state-space form of the observer, and computes the kalman-gain and
covariance-matrix in each timestep. The implementation makes it easy to extend the
observer to estimate horizontal position and velocity in addition to the vertical. Choice
of observer for real-time estimation of position and velocity in all three dimensions, and
estimation of accelerometer-bias is discussed in the report. | |