[UFE] Signal Processing and Updates to Movement Analysis
Description
This merge request includes several large changes. First, MovementAnalysis.cs has new public properties, breaking down tool odometry, work, and user effort into x-y-z components. In order to improve the efficiency of how we can calculate this, I made a collection of classes in the Math folder that all derive from a base Signal class. The share the ability to be reset, paused, and unpaused with reliable behavior.
Second, the CircularBuffer was added (refactored from VectorBuffer) to manage the memory needed by most of the signal processing. This is important, because it allows us to hold on to a window of previous samples (in scalar or vector form) without constantly reassigning the data to a new element as it "slides" through.
Last, the RobotAccelerationEstimator was refactored to use the new classes for signal processing.
What to focus on
- Use the programs in Sandbox: SignalProcessingTest, RobotAccelerationEstimatorTest, MovementAnalysisTest, and DisturbanceObserverTest to verify functionality.
- For SignalProcessingTest and RobotAccelerationEstimatorTest, use the octave scripts to plot logged data and confirm the results. (will need to install octave with apt)