Пример #1
0
 /// <summary>
 /// Proportional EMG reference generator that converts an EMG signal into a joint angle or velocity reference.
 /// Single site: joint angle reference.
 /// Dual site: joint velocity reference.
 /// Sets all integrator gains to the default: 1.0.
 /// </summary>
 /// <param name="xBar">The initial condition for the references.</param>
 public EMGInterfaceReferenceGenerator(float[] xBar, EMGInterfaceType interfaceType)
 {
     channelSize = xBar.Length;
     this.xBar   = xBar;
     SetDefaultGains();
     generatorType      = ReferenceGeneratorType.EMGInterface;
     this.interfaceType = interfaceType;
     //  initialize filters
     for (int i = 0; i < channelSize; i++)
     {
         lowPassFilters.Add(new FOLPDFilter(2 * Mathf.PI * 3.0f, 1.0f, Time.fixedDeltaTime));
         movingAverageFilters.Add(new MovingAverageFilter(15));
     }
 }
Пример #2
0
        /// <summary>
        /// Proportional EMG reference generator that converts an EMG signal into a joint angle or velocity reference.
        /// Single site: joint angle reference.
        /// Dual site: joint velocity reference.
        /// </summary>
        /// <param name="xBar">The initial condition for the references.</param>
        /// <param name="gains">The desired integrator gain for each reference.</param>
        public EMGInterfaceReferenceGenerator(float[] xBar, List <float> gains, EMGInterfaceType interfaceType)
        {
            if (xBar.Length != gains.Count)
            {
                throw new System.ArgumentOutOfRangeException("The length of the parameters does not match.");
            }

            channelSize        = xBar.Length;
            this.xBar          = xBar;
            this.Gains         = gains;
            generatorType      = ReferenceGeneratorType.EMGInterface;
            this.interfaceType = interfaceType;
            //  initialize filters
            for (int i = 0; i < channelSize; i++)
            {
                lowPassFilters.Add(new FOLPDFilter(2 * Mathf.PI * 3.0f, 1.0f, Time.fixedDeltaTime));
                movingAverageFilters.Add(new MovingAverageFilter(15));
            }
        }