Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Difference between Hero6 and Hero7 data? #47

Closed
noobtoob4lyfe opened this issue Dec 20, 2018 · 16 comments

Comments

Projects
None yet
4 participants
@noobtoob4lyfe
Copy link

commented Dec 20, 2018

Hello and thanks again for making all this great work available.
I'm noticing that the quality of the gyro data in the GPMF varies from the Hero6 and the Hero7. If you compare the two camera's gyro readings under a high amount of vibration (for example when attached to a drone), the Hero 6 gives higher quality data that matches the video more closely than the Hero 7 which will look much more noisy and error-filled. I assume this isn't a problem with the gyro itself because the fantastic Hypersmooth stabilization of the hero 7 has no problem handling the same vibration of the drone. Is there some sort of filtering that happens to the gyro samples before they are written to GPMF in the Hero 6 that is not active in the Hero 7? It was my understanding the hardware of the two camera was identical with exception of more ram for performing the hypersmooth stuff. Very curious about this. Thanks!

@dnewman-gpsw

This comment has been minimized.

Copy link
Collaborator

commented Dec 21, 2018

I this will take some investigation time. Yes, they should be the same. I expect it has something to do with the new Hypersmooth stabilization which runs the Gyro at a much higher frequency than the data it stores -- all that sub-frame, rolling-shutter compensation, goodness comes from gyro data significantly faster than the 200Hz stored. I'm guessing the HERO6 used IMU based hardware downsampling, but HERO7 might be doing it downsampling elsewhere (this is what I will try and determine.)

@noobtoob4lyfe

This comment has been minimized.

Copy link
Author

commented Dec 21, 2018

Thanks for the quick reply! It certainly feels like what you are saying is the case when you look at the differences in gyro streams. I ran another test with the rig pictured below and uploaded the files in the hope that it might be helpful to you. Thanks for looking into this!
image
hero 6 black https://drive.google.com/open?id=1iH_w_2KaMehvsBI8lq6x0SCow1dKeizb
hero 7 black https://drive.google.com/open?id=1sUXWDUMjpicGYMb5-rUE7-rUMm0N__QB

@noobtoob4lyfe

This comment has been minimized.

Copy link
Author

commented Jan 8, 2019

Is there any sort of filtering/averaging I could do to the hero7 gyro data improve it to the level of the hero6 you think? Or is 200hz way too low-frequency to get any signal out of the noise?

@dnewman-gpsw

This comment has been minimized.

Copy link
Collaborator

commented Jan 9, 2019

Sorry for the long delay on this one. I first set up my own HERO6 to HERO7 IMU comparison and didn't find significant differences. I was expect to be a noise or a downsampling issue, then I tested your sources, which I should have done first. The only issue I'm seeing with your HERO7 data has a larger than average gyro bias. Could this be throwing off your comparisons?

@noobtoob4lyfe

This comment has been minimized.

Copy link
Author

commented Jan 10, 2019

Thanks again for looking at this! I'm no expert but it doesn't feel like a bias thing to me, because If I shoot a clip while walking, or riding a bike, or any other application that doesn't involve strong mechanical vibrations everything looks virtually identical to the hero 6. I've had some friends send me some drone clips from their Hero7s and the issue is consistent with their cameras as well. If I take a few seconds from both my uploaded test shots and graph the differences you can really see the problem clearly, especially if you look at the Yaxis (yellow line). (hero7 is the top image and hero6 is the bottom)
hero7_vibes
hero6_vibes
It really feels like the Hero 6 is being filtered or has a higher quality downsample as you hypothesized. Could there be a different time in the hero7 recording pipeline that this info could be grabbed to improve the quality possibly?

@noobtoob4lyfe

This comment has been minimized.

Copy link
Author

commented Jan 28, 2019

Here's a much better way to show the issue. If I overlay an artificial horizon on the drone clips you can really see what I'm talking about. before I take off when I'm turning and rotating the cameras by hand you can see the horizons looking very good in both clips, but after takeoff when the vibes start you can see Hero 7 slipping and sliding all over the place. The broader motions are still doing what they should which really makes me think it's not a bias problem but a filtering or down-sampling one as you said earlier. I don't suppose there's anything I could do to improve this by conditioning the data somhow? Or would this need a firmware update to be be fixed? https://drive.google.com/open?id=1CdtANhsY2ef4x67CzV9AxkLdbiBAR7Xs

@dnewman-gpsw

This comment has been minimized.

Copy link
Collaborator

commented Feb 25, 2019

I have not found a good fix for this. The IMU data stored with H7 is simply not a clean as H6. I have reported the bug, and hopeful it does not reoccur in future cameras.

@noobtoob4lyfe

This comment has been minimized.

Copy link
Author

commented Feb 28, 2019

Thanks very much for your time on this! Is there any chance this might be patched in the next firmware update?

@dnewman-gpsw

This comment has been minimized.

Copy link
Collaborator

commented Feb 28, 2019

I don't know that is can be, it might be a limitation of the IMU hardware configuration which was designed for the best results in Hypersmooth.

@noobtoob4lyfe

This comment has been minimized.

Copy link
Author

commented Feb 28, 2019

Thanks again for the info! That's interesting. From this teardown here https://gethypoxic.com/blogs/technical/gopro-hero7-teardown the author claims the only hardware changes from the Hero 6 to the Hero 7 are the Apple MFI, The 2GB of ram, and Pericom PI3USB9281 charging component. If that's true, does't it seem possible that Hero 6 style of gyro recording may work on that configuration?

@dnewman-gpsw

This comment has been minimized.

Copy link
Collaborator

commented Feb 28, 2019

The IMU parts might be the same, but the wiring for the clocking is different. Something (beyond my understanding) was changed with the IMU to support Hypersmooth, it was more than just the increase in memory.

@noobtoob4lyfe

This comment has been minimized.

Copy link
Author

commented Feb 28, 2019

Also very interesting. Thanks!

@kikislater

This comment has been minimized.

Copy link

commented Mar 1, 2019

Different wiring or different algorithm ?

@noobtoob4lyfe

This comment has been minimized.

Copy link
Author

commented Mar 20, 2019

Just wanted to ask one more thing before I give up. I understand that "Something (beyond my understanding) was changed with the IMU to support Hypersmooth". What if a firmware update was produced that only changed the shooting modes where hypersmooth is NOT active. Would it be possible to use the Hero6 style gyro recording in only those modes? Or is this a hardware thing that's beyond what the firmware can control?

@dnewman-gpsw

This comment has been minimized.

Copy link
Collaborator

commented Mar 21, 2019

I believe it is a hardware change beyond firmware control.

@hypoxic

This comment has been minimized.

Copy link

commented Mar 29, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.