Bug 1305 - "Bounce" when platform motion interpolates angles that vary slightly
Summary: "Bounce" when platform motion interpolates angles that vary slightly
Alias: None
Product: DIRSIG5
Classification: Unclassified
Component: BasicPlatform (show other bugs)
Version: 5.0.10
Hardware: All All
: P5 normal
Assignee: Scott D. Brown
Depends on:
Reported: 2020-10-22 12:29 EDT by Scott D. Brown
Modified: 2020-10-22 21:16 EDT (History)
0 users

See Also:

Video of bouncing frames (358.69 KB, video/mp4)
2020-10-22 12:29 EDT, Scott D. Brown

Note You need to log in before you can comment on or make changes to this bug.
Description Scott D. Brown 2020-10-22 12:29:05 EDT
Created attachment 427 [details]
Video of bouncing frames

A platform motion setup using GenericMotion (PPD file) had the vehicle at 150 km altitude and staring at a point on the ground. The PPD entries were provided at 0.001 second time resolution. When frames were simulated at 5 kHz (period = 0.0002, which is 5x faster than the supplied PPD data), the interpolated platform appears to "bounce". This is observed as the objects in the image moving up/down in periodic fashion. If the frames are simulated at 1 kHz (same sampling as the PPD), the bounce is not present.
Comment 1 Scott D. Brown 2020-10-22 12:31:02 EDT
This was tracked down to the screw linear interpolation internally used to interpolate the dual quaternions storing the supplied location and orientation from the PPD file. The effect seems to be specific to the magnitude of the location being large.
Comment 2 Scott D. Brown 2020-10-22 20:39:00 EDT
After some brief investigation into the precision management of the ScLERP (screw linear interpolation) routine, we discovered that the logic to handle interpolation that is purely translation was getting invoked when it shouldn't. Because the platform is far away, the difference in the rotation between two known states being interpolated between was very small, but not zero. There was a fuzzy check for nearly zero rotation that was not stringent enough. The test was changed to a hard rotation equals zero check and this resolves the issue.