Back out notch filter changes

This commit is contained in:
Joel Fuster 2015-01-02 20:03:33 -05:00
parent 3eee9eb079
commit ad7ec4b915
6 changed files with 1 additions and 221 deletions

View File

@ -428,8 +428,6 @@ static void resetConf(void)
currentProfile->mixerConfig.yaw_direction = 1;
currentProfile->mixerConfig.tri_unarmed_servo = 1;
currentProfile->mixerConfig.servo_lowpass_freq_idx = 21;
currentProfile->mixerConfig.servo_lowpass_enable = 0;
// gimbal
currentProfile->gimbalConfig.gimbal_flags = GIMBAL_NORMAL;

View File

@ -25,13 +25,12 @@
#include "common/axis.h"
#include "common/maths.h"
#if 1
#include "drivers/gpio.h"
#include "drivers/timer.h"
#include "drivers/pwm_output.h"
#include "drivers/pwm_mapping.h"
#endif
#include "rx/rx.h"
#include "io/gimbal.h"
#include "io/escservo.h"
@ -43,8 +42,6 @@
#include "config/runtime_config.h"
#include "config/config.h"
#include "lowpass_table.h"
#define GIMBAL_SERVO_PITCH 0
#define GIMBAL_SERVO_ROLL 1
@ -69,7 +66,6 @@ static gimbalConfig_t *gimbalConfig;
static motorMixer_t currentMixer[MAX_SUPPORTED_MOTORS];
static mixerMode_e currentMixerMode;
static lowpass_t lowpassFilters[MAX_SUPPORTED_SERVOS];
static const motorMixer_t mixerQuadX[] = {
{ 1.0f, -1.0f, 1.0f, -1.0f }, // REAR_R
@ -232,8 +228,6 @@ void mixerUseConfigs(servoParam_t *servoConfToUse, flight3DConfig_t *flight3DCon
gimbalConfig = gimbalConfigToUse;
}
#if 1
int16_t determineServoMiddleOrForwardFromChannel(int nr)
{
uint8_t channelToForwardFrom = servoConf[nr].forwardFromChannel;
@ -659,95 +653,3 @@ bool isMixerUsingServos(void)
{
return useServo;
}
#endif
/*
static float notchFilter(notchFilter_t *filter, float in, int16_t freqIdx )
{
int16_t coefIdx;
float out;
if (freqIdx != filter->freqIdx) {
filter->init = false;
}
if (!filter->init) {
filter->freqIdx = freqIdx;
filter->freq = notch_table[filter->freqIdx][0];
filter->pCoef = &notch_table[filter->freqIdx][1];
for (coefIdx = 0; coefIdx < NOTCH_FILTER_COEFS; coefIdx++) {
filter->in[coefIdx] = in;
filter->out[coefIdx] = in;
}
filter->init = true;
}
filter->in[2] = filter->in[1];
filter->in[1] = filter->in[0];
filter->in[0] = in;
filter->out[2] = filter->out[1];
filter->out[1] = filter->out[0];
out = filter->in[0] * filter->pCoef[0] +
filter->in[1] * filter->pCoef[1] +
filter->in[2] * filter->pCoef[2] -
(filter->out[1] * filter->pCoef[3] +
filter->out[2] * filter->pCoef[4]);
filter->out[0] = out;
return out;
}
*/
static float lowpass(lowpass_t *filter, float in, int16_t freqIdx )
{
int16_t coefIdx;
float out;
// Check to see if cutoff frequency changed
if (freqIdx != filter->freqIdx) {
filter->init = false;
}
// Initialize if needed
if (!filter->init) {
filter->freqIdx = freqIdx;
filter->freq = lowpass_table[filter->freqIdx][0];
filter->pCoef = &lowpass_table[filter->freqIdx][1];
for (coefIdx = 0; coefIdx < LOWPASS_NUM_COEF; coefIdx++) {
filter->in[coefIdx] = in;
filter->out[coefIdx] = in;
}
filter->init = true;
}
// Delays
for (coefIdx = LOWPASS_NUM_COEF-1; coefIdx > 0; coefIdx--) {
filter->in[coefIdx] = filter->in[coefIdx-1];
filter->out[coefIdx] = filter->out[coefIdx-1];
}
filter->in[0] = in;
// Accumulate result
out = filter->in[0] * filter->pCoef[0];
for (coefIdx = 1; coefIdx < LOWPASS_NUM_COEF; coefIdx++) {
out += filter->in[coefIdx] * filter->pCoef[coefIdx];
out -= filter->out[coefIdx] * filter->pCoef[coefIdx + LOWPASS_NUM_COEF - 1];
}
filter->out[0] = out;
return out;
}
void filterServos(void)
{
int16_t servoIdx;
if (mixerConfig->servo_lowpass_enable) {
for (servoIdx = 0; servoIdx < MAX_SUPPORTED_SERVOS; servoIdx++) {
servo[servoIdx] = (int16_t)lowpass(&lowpassFilters[servoIdx], (float)servo[servoIdx], mixerConfig->servo_lowpass_freq_idx);
}
}
}

View File

@ -66,8 +66,6 @@ typedef struct mixer_t {
typedef struct mixerConfig_s {
int8_t yaw_direction;
uint8_t tri_unarmed_servo; // send tail servo correction pulses even when unarmed
int16_t servo_lowpass_freq_idx; // lowpass servo filter frequency selection
int8_t servo_lowpass_enable; // enable/disable lowpass filter
} mixerConfig_t;
typedef struct flight3DConfig_s {
@ -92,16 +90,6 @@ typedef struct servoParam_t {
int8_t forwardFromChannel; // RX channel index, 0 based. See CHANNEL_FORWARDING_DISABLED
} servoParam_t;
#define LOWPASS_NUM_COEF 6
typedef struct lowpass_t {
bool init;
int16_t freqIdx;
float freq;
float *pCoef;
float in[LOWPASS_NUM_COEF];
float out[LOWPASS_NUM_COEF];
} lowpass_t;
extern int16_t motor[MAX_SUPPORTED_MOTORS];
extern int16_t motor_disarmed[MAX_SUPPORTED_MOTORS];
extern int16_t servo[MAX_SUPPORTED_SERVOS];
@ -111,6 +99,5 @@ void writeAllMotors(int16_t mc);
void mixerLoadMix(int index, motorMixer_t *customMixers);
void mixerResetMotors(void);
void mixTable(void);
void filterServos(void);
void writeServos(void);
void writeMotors(void);

View File

@ -1,104 +0,0 @@
#define NOTCH_FILTER_NUM 100
#define NOTCH_FILTER_COEFS 3
static float notch_table[][6] = {
{ 1.750088e-03, 9.989016e-01, -1.997682e+00, 9.989016e-01, -1.997682e+00, 9.978032e-01 },
{ 3.500175e-03, 9.978056e-01, -1.995129e+00, 9.978056e-01, -1.995129e+00, 9.956112e-01 },
{ 5.250263e-03, 9.967120e-01, -1.992339e+00, 9.967120e-01, -1.992339e+00, 9.934240e-01 },
{ 7.000350e-03, 9.956208e-01, -1.989316e+00, 9.956208e-01, -1.989316e+00, 9.912416e-01 },
{ 8.750438e-03, 9.945319e-01, -1.986058e+00, 9.945319e-01, -1.986058e+00, 9.890639e-01 },
{ 1.050053e-02, 9.934455e-01, -1.982568e+00, 9.934455e-01, -1.982568e+00, 9.868910e-01 },
{ 1.225061e-02, 9.923614e-01, -1.978846e+00, 9.923614e-01, -1.978846e+00, 9.847227e-01 },
{ 1.400070e-02, 9.912796e-01, -1.974893e+00, 9.912796e-01, -1.974893e+00, 9.825592e-01 },
{ 1.575079e-02, 9.902002e-01, -1.970710e+00, 9.902002e-01, -1.970710e+00, 9.804003e-01 },
{ 1.750088e-02, 9.891230e-01, -1.966298e+00, 9.891230e-01, -1.966298e+00, 9.782461e-01 },
{ 1.925096e-02, 9.880482e-01, -1.961658e+00, 9.880482e-01, -1.961658e+00, 9.760965e-01 },
{ 2.100105e-02, 9.869758e-01, -1.956791e+00, 9.869758e-01, -1.956791e+00, 9.739515e-01 },
{ 2.275114e-02, 9.859056e-01, -1.951699e+00, 9.859056e-01, -1.951699e+00, 9.718111e-01 },
{ 2.450123e-02, 9.848376e-01, -1.946381e+00, 9.848376e-01, -1.946381e+00, 9.696753e-01 },
{ 2.625131e-02, 9.837720e-01, -1.940840e+00, 9.837720e-01, -1.940840e+00, 9.675440e-01 },
{ 2.800140e-02, 9.827086e-01, -1.935077e+00, 9.827086e-01, -1.935077e+00, 9.654173e-01 },
{ 2.975149e-02, 9.816475e-01, -1.929092e+00, 9.816475e-01, -1.929092e+00, 9.632950e-01 },
{ 3.150158e-02, 9.805887e-01, -1.922887e+00, 9.805887e-01, -1.922887e+00, 9.611773e-01 },
{ 3.325166e-02, 9.795320e-01, -1.916463e+00, 9.795320e-01, -1.916463e+00, 9.590640e-01 },
{ 3.500175e-02, 9.784776e-01, -1.909821e+00, 9.784776e-01, -1.909821e+00, 9.569552e-01 },
{ 3.675184e-02, 9.774254e-01, -1.902962e+00, 9.774254e-01, -1.902962e+00, 9.548508e-01 },
{ 3.850193e-02, 9.763754e-01, -1.895889e+00, 9.763754e-01, -1.895889e+00, 9.527509e-01 },
{ 4.025201e-02, 9.753276e-01, -1.888601e+00, 9.753276e-01, -1.888601e+00, 9.506553e-01 },
{ 4.200210e-02, 9.742820e-01, -1.881101e+00, 9.742820e-01, -1.881101e+00, 9.485641e-01 },
{ 4.375219e-02, 9.732386e-01, -1.873390e+00, 9.732386e-01, -1.873390e+00, 9.464773e-01 },
{ 4.550228e-02, 9.721974e-01, -1.865469e+00, 9.721974e-01, -1.865469e+00, 9.443948e-01 },
{ 4.725236e-02, 9.711583e-01, -1.857339e+00, 9.711583e-01, -1.857339e+00, 9.423166e-01 },
{ 4.900245e-02, 9.701213e-01, -1.849002e+00, 9.701213e-01, -1.849002e+00, 9.402427e-01 },
{ 5.075254e-02, 9.690866e-01, -1.840460e+00, 9.690866e-01, -1.840460e+00, 9.381731e-01 },
{ 5.250263e-02, 9.680539e-01, -1.831713e+00, 9.680539e-01, -1.831713e+00, 9.361078e-01 },
{ 5.425271e-02, 9.670233e-01, -1.822763e+00, 9.670233e-01, -1.822763e+00, 9.340467e-01 },
{ 5.600280e-02, 9.659949e-01, -1.813613e+00, 9.659949e-01, -1.813613e+00, 9.319898e-01 },
{ 5.775289e-02, 9.649686e-01, -1.804262e+00, 9.649686e-01, -1.804262e+00, 9.299372e-01 },
{ 5.950298e-02, 9.639444e-01, -1.794713e+00, 9.639444e-01, -1.794713e+00, 9.278888e-01 },
{ 6.125306e-02, 9.629222e-01, -1.784968e+00, 9.629222e-01, -1.784968e+00, 9.258445e-01 },
{ 6.300315e-02, 9.619022e-01, -1.775027e+00, 9.619022e-01, -1.775027e+00, 9.238044e-01 },
{ 6.475324e-02, 9.608842e-01, -1.764893e+00, 9.608842e-01, -1.764893e+00, 9.217684e-01 },
{ 6.650333e-02, 9.598683e-01, -1.754567e+00, 9.598683e-01, -1.754567e+00, 9.197366e-01 },
{ 6.825341e-02, 9.588544e-01, -1.744051e+00, 9.588544e-01, -1.744051e+00, 9.177088e-01 },
{ 7.000350e-02, 9.578426e-01, -1.733346e+00, 9.578426e-01, -1.733346e+00, 9.156852e-01 },
{ 7.175359e-02, 9.568328e-01, -1.722454e+00, 9.568328e-01, -1.722454e+00, 9.136656e-01 },
{ 7.350368e-02, 9.558250e-01, -1.711377e+00, 9.558250e-01, -1.711377e+00, 9.116501e-01 },
{ 7.525376e-02, 9.548193e-01, -1.700116e+00, 9.548193e-01, -1.700116e+00, 9.096386e-01 },
{ 7.700385e-02, 9.538156e-01, -1.688673e+00, 9.538156e-01, -1.688673e+00, 9.076311e-01 },
{ 7.875394e-02, 9.528138e-01, -1.677051e+00, 9.528138e-01, -1.677051e+00, 9.056276e-01 },
{ 8.050403e-02, 9.518141e-01, -1.665249e+00, 9.518141e-01, -1.665249e+00, 9.036282e-01 },
{ 8.225411e-02, 9.508163e-01, -1.653272e+00, 9.508163e-01, -1.653272e+00, 9.016326e-01 },
{ 8.400420e-02, 9.498205e-01, -1.641119e+00, 9.498205e-01, -1.641119e+00, 8.996411e-01 },
{ 8.575429e-02, 9.488267e-01, -1.628794e+00, 9.488267e-01, -1.628794e+00, 8.976535e-01 },
{ 8.750438e-02, 9.478349e-01, -1.616297e+00, 9.478349e-01, -1.616297e+00, 8.956698e-01 },
{ 8.925446e-02, 9.468450e-01, -1.603631e+00, 9.468450e-01, -1.603631e+00, 8.936900e-01 },
{ 9.100455e-02, 9.458570e-01, -1.590797e+00, 9.458570e-01, -1.590797e+00, 8.917140e-01 },
{ 9.275464e-02, 9.448710e-01, -1.577798e+00, 9.448710e-01, -1.577798e+00, 8.897420e-01 },
{ 9.450473e-02, 9.438869e-01, -1.564635e+00, 9.438869e-01, -1.564635e+00, 8.877738e-01 },
{ 9.625481e-02, 9.429047e-01, -1.551311e+00, 9.429047e-01, -1.551311e+00, 8.858095e-01 },
{ 9.800490e-02, 9.419245e-01, -1.537826e+00, 9.419245e-01, -1.537826e+00, 8.838489e-01 },
{ 9.975499e-02, 9.409461e-01, -1.524184e+00, 9.409461e-01, -1.524184e+00, 8.818922e-01 },
{ 1.015051e-01, 9.399697e-01, -1.510385e+00, 9.399697e-01, -1.510385e+00, 8.799393e-01 },
{ 1.032552e-01, 9.389951e-01, -1.496433e+00, 9.389951e-01, -1.496433e+00, 8.779902e-01 },
{ 1.050053e-01, 9.380224e-01, -1.482328e+00, 9.380224e-01, -1.482328e+00, 8.760448e-01 },
{ 1.067553e-01, 9.370516e-01, -1.468074e+00, 9.370516e-01, -1.468074e+00, 8.741031e-01 },
{ 1.085054e-01, 9.360826e-01, -1.453671e+00, 9.360826e-01, -1.453671e+00, 8.721652e-01 },
{ 1.102555e-01, 9.351155e-01, -1.439122e+00, 9.351155e-01, -1.439122e+00, 8.702310e-01 },
{ 1.120056e-01, 9.341502e-01, -1.424429e+00, 9.341502e-01, -1.424429e+00, 8.683005e-01 },
{ 1.137557e-01, 9.331868e-01, -1.409594e+00, 9.331868e-01, -1.409594e+00, 8.663737e-01 },
{ 1.155058e-01, 9.322253e-01, -1.394620e+00, 9.322253e-01, -1.394620e+00, 8.644505e-01 },
{ 1.172559e-01, 9.312655e-01, -1.379507e+00, 9.312655e-01, -1.379507e+00, 8.625310e-01 },
{ 1.190060e-01, 9.303076e-01, -1.364259e+00, 9.303076e-01, -1.364259e+00, 8.606152e-01 },
{ 1.207560e-01, 9.293515e-01, -1.348877e+00, 9.293515e-01, -1.348877e+00, 8.587029e-01 },
{ 1.225061e-01, 9.283971e-01, -1.333363e+00, 9.283971e-01, -1.333363e+00, 8.567943e-01 },
{ 1.242562e-01, 9.274446e-01, -1.317720e+00, 9.274446e-01, -1.317720e+00, 8.548892e-01 },
{ 1.260063e-01, 9.264939e-01, -1.301950e+00, 9.264939e-01, -1.301950e+00, 8.529878e-01 },
{ 1.277564e-01, 9.255449e-01, -1.286054e+00, 9.255449e-01, -1.286054e+00, 8.510899e-01 },
{ 1.295065e-01, 9.245978e-01, -1.270035e+00, 9.245978e-01, -1.270035e+00, 8.491955e-01 },
{ 1.312566e-01, 9.236524e-01, -1.253896e+00, 9.236524e-01, -1.253896e+00, 8.473047e-01 },
{ 1.330067e-01, 9.227087e-01, -1.237638e+00, 9.227087e-01, -1.237638e+00, 8.454174e-01 },
{ 1.347567e-01, 9.217668e-01, -1.221263e+00, 9.217668e-01, -1.221263e+00, 8.435336e-01 },
{ 1.365068e-01, 9.208267e-01, -1.204774e+00, 9.208267e-01, -1.204774e+00, 8.416533e-01 },
{ 1.382569e-01, 9.198883e-01, -1.188172e+00, 9.198883e-01, -1.188172e+00, 8.397765e-01 },
{ 1.400070e-01, 9.189516e-01, -1.171461e+00, 9.189516e-01, -1.171461e+00, 8.379032e-01 },
{ 1.417571e-01, 9.180166e-01, -1.154642e+00, 9.180166e-01, -1.154642e+00, 8.360333e-01 },
{ 1.435072e-01, 9.170834e-01, -1.137718e+00, 9.170834e-01, -1.137718e+00, 8.341668e-01 },
{ 1.452573e-01, 9.161519e-01, -1.120690e+00, 9.161519e-01, -1.120690e+00, 8.323037e-01 },
{ 1.470074e-01, 9.152220e-01, -1.103561e+00, 9.152220e-01, -1.103561e+00, 8.304441e-01 },
{ 1.487574e-01, 9.142939e-01, -1.086334e+00, 9.142939e-01, -1.086334e+00, 8.285878e-01 },
{ 1.505075e-01, 9.133675e-01, -1.069010e+00, 9.133675e-01, -1.069010e+00, 8.267350e-01 },
{ 1.522576e-01, 9.124427e-01, -1.051591e+00, 9.124427e-01, -1.051591e+00, 8.248855e-01 },
{ 1.540077e-01, 9.115196e-01, -1.034081e+00, 9.115196e-01, -1.034081e+00, 8.230393e-01 },
{ 1.557578e-01, 9.105982e-01, -1.016481e+00, 9.105982e-01, -1.016481e+00, 8.211965e-01 },
{ 1.575079e-01, 9.096785e-01, -9.987933e-01, 9.096785e-01, -9.987933e-01, 8.193570e-01 },
{ 1.592580e-01, 9.087604e-01, -9.810205e-01, 9.087604e-01, -9.810205e-01, 8.175208e-01 },
{ 1.610081e-01, 9.078440e-01, -9.631649e-01, 9.078440e-01, -9.631649e-01, 8.156879e-01 },
{ 1.627581e-01, 9.069292e-01, -9.452287e-01, 9.069292e-01, -9.452287e-01, 8.138583e-01 },
{ 1.645082e-01, 9.060160e-01, -9.272142e-01, 9.060160e-01, -9.272142e-01, 8.120320e-01 },
{ 1.662583e-01, 9.051045e-01, -9.091238e-01, 9.051045e-01, -9.091238e-01, 8.102089e-01 },
{ 1.680084e-01, 9.041946e-01, -8.909597e-01, 9.041946e-01, -8.909597e-01, 8.083891e-01 },
{ 1.697585e-01, 9.032863e-01, -8.727243e-01, 9.032863e-01, -8.727243e-01, 8.065725e-01 },
{ 1.715086e-01, 9.023796e-01, -8.544198e-01, 9.023796e-01, -8.544198e-01, 8.047592e-01 },
{ 1.732587e-01, 9.014745e-01, -8.360487e-01, 9.014745e-01, -8.360487e-01, 8.029490e-01 },
{ 1.750088e-01, 9.005710e-01, -8.176131e-01, 9.005710e-01, -8.176131e-01, 8.011420e-01 }
};

View File

@ -332,8 +332,6 @@ const clivalue_t valueTable[] = {
{ "yaw_control_direction", VAR_INT8 | MASTER_VALUE, &masterConfig.yaw_control_direction, -1, 1 },
{ "yaw_direction", VAR_INT8 | PROFILE_VALUE, &masterConfig.profile[0].mixerConfig.yaw_direction, -1, 1 },
{ "tri_unarmed_servo", VAR_INT8 | PROFILE_VALUE, &masterConfig.profile[0].mixerConfig.tri_unarmed_servo, 0, 1 },
{ "servo_lowpass_freq_idx", VAR_INT16 | PROFILE_VALUE, &masterConfig.profile[0].mixerConfig.servo_lowpass_freq_idx, 0, 99},
{ "servo_lowpass_enable", VAR_INT8 | PROFILE_VALUE, &masterConfig.profile[0].mixerConfig.servo_lowpass_enable, 0, 1 },
{ "default_rate_profile", VAR_UINT8 | PROFILE_VALUE , &masterConfig.profile[0].defaultRateProfileIndex, 0, MAX_CONTROL_RATE_PROFILE_COUNT - 1 },
{ "rc_rate", VAR_UINT8 | CONTROL_RATE_VALUE, &masterConfig.controlRateProfiles[0].rcRate8, 0, 250 },

View File

@ -696,7 +696,6 @@ void loop(void)
);
mixTable();
filterServos();
writeServos();
writeMotors();
}