-
Notifications
You must be signed in to change notification settings - Fork 126
Description
I'm working on motorsport analysis software based on GoPro data.
I have GoPro HERO9 and trying to reconstruct timestamps given GPS5 stream, here's what assumptions I'm working under:
GetPayloadTimedetermines boundaries for each reading- sample data is recorded of go-kart session with fairly large track,
max(speed)/min(speed) < 4(so there's little jitter in it) - readings I see are sampled on internal regular grid with some dropped readings
Given sudden jumps in x[i] = distance(point[i], point[i-1]) / (0.5 * speed[i] + 0.5 * speed[i-1]) (i.e. rough time between readings) I can say where readings were dropped and try unifying time[i] so it's:
- a part of regular grid
- dropped readings where I see abnormally large distances (roughly double the usual value).
That alone does provide me with good enough approximation for my underlying analysis, however it becomes tricky to join different clips, or sometimes entire payload is missing (presumably around file joins). I noticed presence of GPSU stream within GPS5 which could help, however I'm having hard time reconciling one with another, following is a scatter plot of time[i] - gpsu_time[i] for first readings from each payload only (I am additionally requiring that there's no reading drop around start of a packet):
| lazy optimizer | fixed frequency | x[i] |
|---|---|---|
![]() |
![]() |
![]() |
My ultimate goal is eliminating the slope (as well as robustly joining data from separate videos together), any suggestions on mapping GPSU -> index of GPS5?


