Saturday 2 February 2019

Movimento média filtro acelerômetro


Um filtro IIR simples, de um único pólo, passa-baixo, recursivo é rápido e fácil de implementar, por exemplo, onde x, y são os sinais de acelerómetro XY não filtrados brutos, xf, yf são os sinais de saída filtrados e k determina a constante de tempo de Os filtros tipicamente um valor entre 0 9 e 0 9999 onde a maior k significa uma maior constante de tempo. Você pode determinar k empiricamente, ou se você sabe a sua freqüência de corte necessária, Fc, então você pode usar a fórmula. Onde Fs é o Taxa de amostragem. Note que xf, yf são os valores anteriores do sinal de saída no RHS, e os novos valores de saída no LHS da expressão acima. Note também que estamos assumindo aqui que você estará amostragem os sinais do acelerômetro regular Intervalos de tempo, por exemplo, a cada 10 ms A constante de tempo será uma função de k e deste intervalo de amostragem. Eu tenho um sinal de acelerômetro 1D um eixo só Eu gostaria de criar um algoritmo robusto, que seria capaz de reconhecer algumas formas em O primeiro sinal. A aplicar uma média móvel filte R para o sinal bruto Na imagem anexa o sinal bruto é colorido vermelho eo sinal médio é preto Como visto a partir da imagem, algumas tendências são visíveis a partir do sinal preto média - o sinal contém 10 repetições de um pico como padrão, onde a aceleração Sobe ao máximo e, em seguida, cai para trás Eu marquei os começos e os fins desses padrões com uma cruz. Então o meu objetivo é encontrar as posições marcadas automaticamente O problema que torna a extração padrão difícil são. o início do padrão poderia ter um Diferente do que o fim do pattern. the padrão poderia ter mais de um pico. Não tenho qualquer informação concreta de tempo do início ao fim do padrão que leva A unidades de tempo. Eu tentei abordagens diferentes, que são bastante Muito home-brew, então eu não vou mencioná-los - Eu não quero que você seja tendenciosa pela minha maneira de pensar Há algum padrão ou pelos livros abordagens para fazer esse tipo de extração padrão Ou talvez alguém sabe como Resolver o problema de uma maneira robusta. Qualquer idéia será apreciada. Parece que a média móvel é um bom dispositivo amortecedor suficiente mantê-lo como está, talvez apenas aumentar ou diminuir a sua contagem de amostras Se você notar que ou deixa muito ruído ou remove muito sinal, respectivamente Você, em seguida, trabalhar fora deste sinal média exclusivamente. Os marcadores de padrão que você procura parece relativamente fácil de detectar Expressa em Inglês, estes marcadores são alvos os pontos de inflexão na Deve ser capaz de detectar esta situação através da comparação dos valores de inclinação, calculados em conjunto com a média móvel, uma vez que cada novo valor de leitura é disponibilizado, obviamente, com um pequeno atraso, a partir de Claro que o declive em um determinado ponto só pode ser calculado quando a média de leitura para os próximos poucos pontos s está disponível. Para evitar a falsa detecção, no entanto, você precisa definir alguns parâmetros aime D na filtragem dos padrões indesejáveis ​​Estes paremeters definirão mais precisamente o significado de marcadamente na definição de alvo acima. Tentativamente a fórmula para detectar um ponto de interesse poderia ser tão simples como esta -1 S t-1 S t MindeltaSlope onde S é o Inclinação mais sobre isso no tempo t-1 e t, respectivamente MindeltaSlope é um parâmetro que define quão nítida uma mudança na inclinação que queremos em um mínimo Assumindo normalizado t e Y unidades, podemos definir o MindeltaSlope parâmetro perto ou mesmo passado 1 Intuitivamente a Valor de 1 novamente em unidades normalizadas indicaria que nós almejamos pontos onde o curvo chegou com uma inclinação descendente de digamos 50 e deixou o ponto com uma inclinação ascendente de 50 ou 40 60 ou 10 isto é quase plano e 90 isto é quase vertical Para evitar detetar Pontos no caso em que este é apenas um pequeno mergulho na curva, podemos ter mais pontos em consideração, com uma fórmula mais elegante como dizer. Pm2, Pm1, P0 e Pp1 são coeficientes que dão importância relativa à inclinação em vários pontos antes e depois do ponto de interesse Pm2 e Pm1 tipicamente valores negativos A menos que usemos apenas parâmetros positivos e usemos sinais negativos na fórmula S t - n é a inclinação a várias vezes e MindeltaSlope é um parâmetro que define quão nítida é uma mudança na inclinação que queremos em um mínimo Intuitivamente, esta fórmula de 4 pontos levaria em conta A forma da curva em um ponto duas leituras anteriores e duas leitura além do ponto de interesse, além de considerar o ponto direito antes e depois Dado os valores adequados para os parâmetros, a fórmula exigiria que a curva está constantemente a descer para Duas fatias de tempo, em seguida, continuamente indo para as duas fatias de tempo seguinte, evitando assim marcar mergulhos menores na curva Uma forma alternativa para conseguir isso, pode ser para calcular a inclinação usando a diferença no valor Y entre o averag Estas duas abordagens são semelhantes, mas iria produzir um resultado ligeiramente diferente geralmente teríamos mais dizer sobre a forma desejada da curva com os parâmetros Pm2, Pm1, P0 e P1.Accelerômetros medem a aceleração Isso é aceleração devido ao movimento e também aceleração devido à gravidade Acelerômetros são freqüentemente usados ​​para calcular um ângulo de inclinação Eles só podem fazer isso confiável quando eles são estáticos e não se movendo Para obter uma precisão Ângulo de inclinação que são combinados frequentemente com um ou mais giroscópios ea combinação de dados é usada para calcular o ângulo. Os acelerômetros digitais dar-lhe-ão a informação usando um protocolo de série como I2C SPI ou USART, quando os accelerometers análogos emitirem um nível da tensão dentro Uma faixa predefinida que você tem que converter para um valor digital usando um ADC analógico para conversor digital module. In neste tutorial vamos explicar brevemente a funcionalidade de acce Lerômetros, como eles são usados ​​para medir ângulos de inclinação e finalmente fornecer algum código de exemplo Ver também o tutorial sobre a combinação de acelerômetro e giroscópios dados para dar um ângulo de inclinação melhor para um sistema dinâmico. O que faz um acelerômetro measure. Accelerometers medir a aceleração Para um objeto estático Que é a aceleração devido à gravidade 1g Observe também que a saída de acelerômetros não é linear, mas é uma onda senoidal, então você não pode tomar a saída direta como uma representação proporcional de um ângulo de inclinação com base na gravidade. Normalmente um acelerômetro sx ey As tensões de saída serão metade da tensão de alimentação ao medir zero gie o dispositivo é perpendicular à gravidade - horizontal Incline-o de uma maneira e a tensão aumentará, incliná-lo para o outro lado e diminuirá Com um acelerômetro de eixo triplo o eixo z será medido 1g com o dispositivo horizontal A saída de um acelerômetro é uma onda senoidal da aceleração medida Os acelerômetros são mais sensíveis a pequenas mudanças na inclinação Quando são perpendiculares à gravidade I e quando horizontais, pequenas mudanças de inclinação dão leituras úteis Passado cerca de 45 graus de inclinação tornam-se cada vez menos sensíveis Por isso é comum usar mais de um valor de eixo ao determinar o ângulo de inclinação como será Veja abaixo. Medindo o ângulo de inclinação usando um eixo. Se você quiser medir inclinação no eixo x e y com um acelerômetro de 2 eixos, então você pode simplesmente usar sin-1 a onde a é a saída de um eixo do acelerômetro. Lembre-se de que além de 45 e -45 graus a precisão irá diminuir. Medição do ângulo de inclinação usando dois eixos. A redução na resolução e precisão além de 45 graus de inclinação pode ser melhorada usando 2 eixos para medir a inclinação O componente da gravidade agindo no x Eixo é uma função seno, enquanto que a atuação sobre o eixo y é um coseno Quando a sensibilidade do eixo x começa a cair após 45 graus de inclinação, a sensibilidade do eixo y é crescente Como pode ser visto no gráfico abaixo, par Ts de cada linha mostram a área da maioria de sensibilidade. Assim combinando os valores de x e de y uma precisão muito melhorada pode ser obtida. O ângulo é calculado usando a fórmula. Medindo o ângulo da inclinação usando três eixos. Para medidas exatas da inclinação no x E y, portanto, precisamos de um acelerômetro de 3 eixos Poderíamos usar a fórmula acima para calcular os ângulos usando x e z para o eixo x e usando y e z para o eixo y No entanto, podemos melhorar as coisas usando todas as três saídas para calcular Cada ângulo Isso é feito usando as seguintes fórmulas. Vamos começar a alguns Coding. Hopefully, estamos agora bastante claro sobre os princípios, mas vamos ver como isso é feito na prática Vamos usar um acelerômetro de 3 eixo e trabalhar para fora ângulos para rolo X e pitch y. Assumiremos que, dependendo do tipo de acelerômetro usado, você leu os valores de x, y e z e que também tem valores de linha de base para x, yez quando o acelerômetro está parado e nivelado. Void Usando xy e Z a partir do acelerômetro, calcular ângulos x e y flutuador xval, yval, zval, resultado unsigned curto x2 longo, y2, z2 24 bit. Permite obter os desvios de nossa linha de base xval flutuador accelvaluex - float accelcenterx yval flutuador accelvaluey - float accelcentery zval flutuador accelvaluez flutuador accelcenterz. Elabore os quadrados x2 sem assinatura curto xval longo xval y2 não assinado curto longo yval yval z2 não assinado curto longo zval zval. X Resultado do eixo sqrt y2 z2 resultado xval resultado accelanglex atan resultado. Y Axis resultado sqrt x2 resultado z2 yval resultado accelangley atan resultado. Ok, thats it Apenas um par de notas sobre acelerômetros em geral Eles são muito sensíveis e, portanto, são bastante propensos a vibração Se você estiver usando um em um sistema com motores ou outras fontes De vibração eu sugiro fortemente alguma forma de amortecimento de espuma Além disso, tome várias leituras do acelerômetro e média deles para filtrar qualquer ruído.

No comments:

Post a Comment