Releases: ihmcrobotics/ihmc-yovariables
0.13.3
0.13.2
What's Changed
- Adds a
YoMatrix#getYoDouble(int, int)
field to enable custom yo variable filters based off ofYoMatrix
. - Replaces all uses of
MovingAverageYoDouble
withSimpleMovingAverageFilteredYoDouble
, and removesMovingAverageYoDouble
. - removes
AlphaFilteredRigidBodyTransform
,AlphaFilteredTuple2D
, andAlphaFilteredTuple3D
, since they are not yo variables. - Bumps the version of
ihmc-commons
to the latest.
0.13.1
This release centers around pulling in stable features that are heavily relied upon in the open-robotics code base, allowing them to be pinned as a jar. This primarily consists of adding different filtered yo variables as options, and containing that in a specific project set in side of YoVariables called ihmc-yovariables-filters
.
Existing code that has been modified:
YoMatrix
. This pulls in some of the improved functionality from open robotics. Specifically, it makes all the set operations slightly faster by avoiding calling the yo variable listeners. It also changes the namespace definition of the individual elements in the matrix to be defined by a function, rather than internally, such that it is easier to retrieve these variables from a registry.
The contribution of filtered yo variables can be broken into single variable filters, which wrap YoVariables
like YoDouble
and YoInteger
, and Euclid yo variables, which wrap objects like YoTuple2D
.
New single-variable filtered yo variables are:
RateLimitedYoVariable
which limits the returned value of the tracked variable to a maximum velocity.AccelerationLimitedYoVariable
, which limits the returned value of the tracked variable to a maximum acceleration.JerkLimitedYoVariable
, which limits the returned value of the tracked variable to a maximum jerk.AlphaBetaFilteredYoVaraible
, which applies an Alpha-Beta observer to the tracked yo variable. This is a similar approach to a Kalman filter, and has a nice description on the wikipedia page.AlphaFilteredYoVariable
, which applies an alpha filter (equivalent to a low-pass filter) to the tracked variable.AlphaFitleredWrappingYoVariable
, which applies an alpha filter, but wraps the output to be within a minimum and maximum range, such as when filtering an angle to be within [-PI, PI].BacklashCompensatingVelocityYoVariable
, which processes an input position and returns the estimated velocity of the signal, after filtering the finite-differenced velocity signal and providing some compensation for the potential slop in the backlash portion of the signal.BacklashProcessingYoVariable
, which similarly processes an input position, but returns as output the estimated position of the signal after processing for backlash, such that it is consistent with the processed velocity.ButterworthFilteredYoVariable
, which applies either a high-pass or low-pass Butterworth filter to the input variable.DeadbandedYoVariable
, which applies a deadband to the returned value of a signal.DelayedYoBoolean
which institutes a fixed delay of a specified number of ticks to an input boolean signal.DelayedYoDouble
, which institutes a fixed delay of a specified number of ticks to an input double signal.DeltaLimitedYoVariable
, which consumes both a desired input and current position, and clamps the output to be within a certain delta distance of the current position.FilteredFiniteDifferenceYoVariable
, which consumes a position signal, performs a finite difference to get the velocity of that signal, and then applies an alpha filter to this velocity signal.FilteredDiscreteVelocityYoVariable
, This class computes the finite difference of the input position signal, and applies an alpha filter to this signal. It also performs compensation for the input velocity of the signal, decaying the estimated velocity if the input signal stops moving. This class provides some value, butFilteredFiniteDifferenceYoVariable
SHOULD BE PREFERRED.FirstOrderBandPassFilteredYoDouble
. This class applies a first order bandpass filter between two frequencies to an input signal.FirstOrderFilteredYoDouble
. This class applies either a first order low pass filter or high pass filter to an input signal. If performing a low-pass filter, the user should strongly consider usingAlphaFilteredYoVariable
instead.- 'SecondOrderFilteredYoDouble`. This class applies a second order low pass filter, high pass filter, band pass filter, and notch filter to an input signal.
GlitchFilteredYoBoolean
applies a glitch filter to a yo boolean, such that the returned value must have had a consistent value within the last specified number of ticks before the return changes.GlitchFilteredYoInteger
applies a glitch filter to a yo integer, such that the returned value must have had a consistent value within the last specified number of ticks before the return changes.RunningAverageYoDouble
returns the running average of the input variable over its entire history .MovingAverageYoDouble
returns the moving average of the input variable over a fixed window size using an array of doubles. THIS CLASS WILL BE DEPRECATED in the future in favor of theSimpleMovingAverageFilteredYoVariable
, which features a change of window size.SimpleMovingAverageFilteredYoVariable
returns the running average of the input variable over its entire history using EJML objects.
New Euclid filtered types are:
RateLimitedYoFramePoint2D
, which provides a 2D point in a specified frame whose displacement change is limited to a maximum rate.RateLimitedYoFramePoint3D
, which provides a 3D point in a specified frame whose displacement change is limited to a maximum rate.RateLimitedYoFrameVector2D
, which provides a 2D vector in a specified frame whose individual values are limited to a maximum rate. THIS FUNCTIONALITY WILL CHANGE in the future to make it consistent withRateLimitedYoFrameVector3D
.RateLimitedYoFrameVector3D
, which provides a 3D vector in a specified frame whose magnitude change is limited to a maximum rate.RateLimitedYoMutableFrameVector3D
, which provides a 3D vector in a specified frame that can be changed whose magnitude change is limited to a maximum rate.RateLimitedYoFrameQuaternion
, which provides a quaternion in a specified frame whose rotation change is limited to a maximum rate.RateLimitedYoFrameOrientation
, which provides a yaw-pitch-roll in a specified frame whose rotation change is limited to a maximum rate.RateLimitedYoFramePose3D
, which provides a 3D pose in a specified frame whose rotation and translation change are limited to a maximum displacement and rotation rate.AccelerationLimitedYoFrameVector3D
, which provides a 3D vector in a specified frame whose magnitude change is limited to a maximum acceleration.AlphaFilteredYoFramePoint2D
, which provides a 2D point in a specified frame whose individual fields are alpha filtered.AlphaFilteredYoFramePoint3D
, which provides a 3D point in a specified frame whose individual fields are alpha filtered.AlphaFilteredYoFrameVector3D
, which provides a 2D vector in a specified frame whose individual fields are alpha filtered.AlphaFilteredYoFrameVector3D
, which provides a 3D vector in a specified frame whose individual fields are alpha filtered.AlphaFilteredYoFrameVector3D
, which provides a 3D vector in a specified frame that is changeable whose individual fields are alpha filtered.AlphaFilteredYoFrameQuaternion
, which provides a quaternion in a specified frame whose change is alpha fitlered.AlphaFilteredYoFramePose3D
, which provides a 3D pose in a specified frame constisting of a filtered frame point 3D and quaternion.BacklashCompensatingVelocityYoFrameVector3D
, which wraps threeBacklashCompensatingYoVariable
s into aYoFrameVector3D
to provide a velocity estimate from a position input that may contain backlash.BacklashProcessingYoFrameVector3D
, which wraps threeBacklashProcessingYoVariable
s into aYoFrameVector3D
to provide a velocity estimate from a velocity input that may contain backlash.DeadbandedYoFrameVector3D
, which creates a yo frame vector where each individual element is deadbanded.FilteredFiniteDifferenceYoFrameVector2D
, which computes a velocity in a fixed frame by finite differencing a 2D input, and then applies an alpha filter to the magnitude of that velocity.FilteredFiniteDifferenceYoFrameVector3D
, which computes a velocity in a fixed frame by finite differencing a 3D input, and then applies an alpha filter to the magnitude of that velocity.FiniteDifferenceAngularVelocityYoFrameVector3D
, which computes an angular velocity in a fixed frame by finite differencing a orientation inputMovingAverageYoFramePoint2D
, which computes a moving average of a fixed window size of a 2D point input in a fixed frameMovingAverageYoFrameVector2D
, which computes a moving average of a fixed window size of a 2D vector input in a fixed frame.RunningAverageYoFrameVector3D
, which computes the average over the entire history of a 3D vector input in a fixed frame.SecondOrderFilteredYoFrameVector3D
, which applies a second order filter to the individual elements of a yo frame vector 3d.SimpleMovingAverageFilteredYoFrameVector3D
, which computes a moving average of a dynamic window size of a 3D vector input in a fixed frame
The classes are contributed, but will be moved to a different library in the near future, as they are not yo variables.
AlphaFilteredRigidBodyTransform
, which alpha filters a rigid body transform, individually filtering the elements of the translation and filtering the total rotation amount of the orientation. These values are NOT yo variablized.AlphaFilteredTuple2D
, which provides a 2D value whose individual fields are alpha filtered. These values are NOT yo variablized.AlphaFilteredTuple3D
, which provides a 3D value whose individual fields are alpha filtered. These values are NOT yo variablized.
New utility classes are:
AlphaBasedOnBreakFrequencyProvider
, which defines a double provider that returns analpha
variable for anAlphaFilteredYoVariable
, but does it in an efficient manner such that the break frequency is cached rather than computed every retu...
0.12.2
0.12.1
0.12.0
What's Changed
- Feature/yo matrix by @james-p-foster in #10
- Copy github actions CI from euclid/mecano by @james-p-foster in #11
New Contributors
- @james-p-foster made their first contribution in #10
Full Changelog: 0.11.1...0.12.0