Como podemos usar o acelerômetro para estimativa de altitude?

9

Atualmente, estou implementando um quadcopter autônomo, que recentemente voei e que era estável, mas não é capaz de se corrigir na presença de distúrbios externos significativos. Suponho que isso se deva a ganhos insuficientemente ajustados do PID que precisam ser aprimorados a bordo.

Progresso atual:

  • Eu descartei um barômetro, uma vez que o escopo de minha pesquisa é apenas vôo interno e o barômetro tem um desvio de + -5 metros, de acordo com meu colega.
  • Atualmente, estou usando um sensor ultrassônico (HC-SR04) para a estimativa de altitude com resolução de 0,3 cm. No entanto, descobri que a taxa de atualização do sensor ultrassônico de 20Hz é muito lenta para obter uma resposta rápida o suficiente para a correção da altitude.
  • Tentei usar as acelerações no eixo Z do acelerômetro para obter dados de altura, integrando a aceleração para obter a velocidade a ser usada para a taxa PID em um esquema de controlador de pid em cascata. A implementação atual para o controlador PID de altitude é um controlador PID de loop único usando um controlador P com a entrada de posição do sensor ultrassônico.
  • Eu tinha levado em consideração as medições de aceleração negativa devido à gravidade, mas não importa o quanto eu calcule o deslocamento, ainda existe a existência de uma aceleração negativa (por exemplo, -0,0034). Eu calculei o deslocamento gravitacional ajustando o quadcopter para ainda estar em uma superfície plana e coletando 20.000 amostras do eixo z do acelerômetro para calcular a média para obter o "deslocamento" que é armazenado como uma variável constante. Essa variável é subtraída da saída do eixo z do acelerômetro para remover o deslocamento e levá-lo a "zero" se não estiver acelerando. Como dito na pergunta, ainda existe a aceleração negativa (por exemplo, -0,0034). Meu quad passa a subir constantemente em altitude. Com apenas o controlador P do sensor ultrassônico, meu quadrilátero oscila 50 cm.

Como essa leitura de aceleração negativa consistente pode ser efetivamente tratada?

Solução possível : Estou planejando fazer um contoller PID em cascata para a retenção de altitude com o loop interno (controlador PID) usando o acelerômetro e o loop externo (controlador P) usando o sensor de sonar. Meu consultor disse que mesmo um único controlador P de loop é suficiente para fazer o quadcopter manter sua altitude, mesmo com um sensor lento. Isso é suficiente? Notei que apenas com o ganho P, o quadcopter ultrapassaria sua altitude.

insira a descrição da imagem aqui

  • Integrador com vazamento: encontrei este artigo explicando como ele lidava com as acelerações negativas usando um integrador com vazamento. No entanto, tenho um pouco de dificuldade para entender por que isso funcionaria, pois acho que o erro negativo passaria a um erro positivo, sem resolver o problema. Eu não tenho tanta certeza. http://diydrones.com/forum/topics/multi-rotors-the-altitude-yoyo-effect-and-how-to-deal-with-it

  • Controlador PD de loop único apenas com sensor ultrassônico: isso é possível usando feedback de um sensor lento?

Fontes:

user123456098
fonte
Como você está computando o deslocamento gravitacional? Que acelerômetro é esse? Você pode vincular uma folha de dados?
Chuck
11
oscilação significa que você precisa de amortecimento !!!
holmeski
11
Lembre-se de que, na troca de pilhas, é melhor editar sua pergunta para adicionar as informações solicitadas nos comentários, em vez de adicionar mais comentários. Os comentários são para ajudar a melhorar perguntas e respostas e são perturbadores, por isso tentamos mantê-los no mínimo. Se todas as informações necessárias para responder à pergunta estiverem contidas, os comentários podem ser arrumados (excluídos).
Mark Booth
@Chuck Eu editei o post com a informação relevante :)
user123456098
Atualmente, estou trabalhando no mesmo projeto, implementando o Cascade PID Controller para estabilizar a atitude do quadcopter usando o Arduino. Quero trabalhar em altitude agora. Você implementá-lo sem estimativa de velocidade, e eu tenho uma pergunta que eu preciso para estimar a terra para a transformação estrutura do corpo ou eu posso implementá-lo sem a transformação?
SALAM ALBARADIE

Respostas:

10

O barômetro carregado no pixhawk tem uma resolução de altitude de 10 cm. Se isso não for suficiente, você pode escrever um filtro kalman que use os dados do acelerômetro na etapa de previsão e o sensor ultrassônico e / ou o barômetro na etapa de correção.

Mas não vejo isso resolvendo seu problema. Uma medição precisa da altitude a 20hz deve ser suficiente se tudo o que você está tentando fazer é manter a altitude.

Qual é a constante de tempo / frequência natural e amortecimento no seu controlador?

Acho que não tinha terminado de ler sua pergunta esta manhã (foi antes do meu café). A aceleração do imu é a medida da aceleração mais a gravidade. Para obter a aceleração inercial do imu, subtraia o vetor de gravidade da medição. Você nunca poderá controlar medições de aceleração integradas. As medidas estão corrompidas pelo ruído e você não tem como corrigir isso.

--- resposta para controlar parte da pergunta

Vamos supor que tudo o que você está tentando fazer é manter uma altitude e não está preocupado em manter uma posição por enquanto (embora essa abordagem funcione para isso também). E assumindo que você pode comandar qualquer impulso que desejar (dentro da razão), isso se torna um problema fácil.

Uma primeira passagem na dinâmica do sistema parece

z¨=umg

onde positivo está ativo. Vamos adicionar um componente flutuante ao acelerador que lida com a gravidade. assimz

você=vocêfb+vocêhover

Nossa nova dinâmica parece

z¨=vocêfb+vocêhoverm-g=vocêfbm

Legal! Agora, projetamos uma lei de controle para podermos alcançar a altitude desejada.

Nosso sistema de controle será uma mola virtual e um amortecedor entre nosso quad e a altitude desejada (este é um controlador pd).

z¨=kp(zdes-z)+kd(z˙des-z˙)

O sistema agora deve se comportar como um sistema de segunda ordem. e podem ser escolhidos para atingir a taxa de amortecimento e a frequência natural que você está procurando.kpkd

Neste ponto, gostaria de reiterar que a integração de dados do acelerômetro não é uma maneira correta de gerar estimativas de estado. Se você realmente deseja cortar algo rapidamente, alimente as medidas do sonar através de um filtro passa-baixo com uma frequência de queda apropriada. Seu veículo não estará oscilando a 20hz; portanto, controlar apenas os dados do sonar será bom.

Holmeski
fonte
11
Obrigado, eu acabei de implementar isso há 4 dias e funcionou com oscilações muito mínimas + -2cm #
user123456098:
feliz em ouvir isso! você deve ser capaz de matar as oscilações, aumentando kd supondo que você tenha uma boa estimativa da velocidade :)
holmeski