Com um robô de duas rodas como este , eu consegui estabilizá-lo enquanto o mantinha parado. Isso foi feito usando um sistema de controle de feedback digital, lendo a posição das rodas para determinar a posição, e a força eletromotriz natural dos motores das rodas foi usada no loop de feedback para determinar a velocidade. Ele foi mantido estável com um controlador PID, que foi projetado usando um algoritmo de locus raiz para mantê-lo estável e modular os parâmetros de desempenho (como porcentagem de superação, tempo de acomodação, etc.). Eu queria tentar mantê-lo estável e, ao mesmo tempo, impulsioná-lo para a frente, mas não consegui descobrir como desenvolver um controlador linear que pudesse fazer isso. É possível impulsionar o robô para a frente e mantenha-o estável usando um controlador de feedback nas rodas ou é necessário um giroscópio?
fonte
Respostas:
Você pode usar outras maneiras de medir a orientação, como um acelerômetro, rastreamento óptico de marcadores ou um sensor de profundidade apontado para o chão.
fonte
Se você conseguiu estabilizá-lo em uma configuração estacionária, realmente não vejo como seria muito mais difícil mantê-lo estável a uma velocidade constante. Do ponto de vista do modelo de sistema, seria efetivamente a mesma coisa, exceto por algumas compensações de velocidade. Se as transições entre velocidades não forem muito grandes, ela deve estar dentro do intervalo das perturbações do sistema natural.
fonte
Você precisa de alguns sensores para detectar o estado do sistema.
Primeiro linearize o sistema em uma forma de espaço de estado e depois considere quais sensores você possui. Depois verifique se é observável. Se for observável, você poderá alimentar os estados estimados no seu controlador.
Atualmente, parece que você está usando a posição da roda e o EMF traseiro (para velocidade) como medidas diretas. Sem verificar a matriz de observabilidade, não tenho certeza se o sistema é observável.
fonte
Matematicamente, o fato de você agora ter rotação (principalmente) elimina esse parâmetro como um possível parâmetro de controle. Basicamente, você teria que reprojetar seu algoritmo para aceitar um componente de velocidade angular grande e variável enquanto ainda usa velocidade angular em seus comentários. Quanto menos barulhento, melhor o resultado provável, simplesmente porque você provavelmente aplicará um diferencial de posição para derivar outro parâmetro de controle. Ou melhor, esse é um caminho. Portanto, parece que você precisa de outra entrada de controle, mas não precisa ser um acelerômetro. Você pode fazer um horizonte, localização fixa de marcadores ou até sensores de inclinação.
fonte