Eu já construí um robô de balanceamento de duas rodas usando alguns servos de rotação contínua e um acelerômetro / giroscópio. Atualizei os servos para alguns motores DC de engrenagens com codificadores de 8 bits, com o objetivo de fazer com que o robô dirigisse durante o equilíbrio.
Estou meio preso em como programá-lo para dirigir enquanto ainda estou equilibrando. Eu acho que uma maneira seria apenas fazer com que a entrada de controle dos motores funcionasse como se fosse pressioná-lo. Portanto, o robô ficaria momentaneamente desequilibrado na direção em que eu quero que ele viajasse. Isso parece meio desajeitado para mim. Deve haver uma maneira melhor de fazer? Eu acho que preciso combinar o modelo dinâmico para o balanceador com a unidade diferencial, mas isso está um pouco além da teoria de controle que eu conheço.
Atualização da resposta de Anorton Eu tenho uma matriz de estado bem parecida agora.
Agora, sobre a colocação dos pólos: A matriz A terá que ser 4x4 com base no novo vetor de estado. E B terá que ser uma matriz 4x2, pois só posso controlar o torque da roda esquerda / direita (vetor u = 2x1).
Talvez eu precise ler mais sobre isso, mas existe uma maneira sistemática de determinar a matriz A pela colocação de pólos? Parece-me para este exemplo e exemplos ainda mais complicados, determinar A por palpite e verificação seria muito difícil.
Atualização # 2 Depois de ler um pouco, acho que entendo agora. Eu ainda preciso da dinâmica do robô para determinar a matriz A. Quando tiver, posso fazer a colocação do poste usando matlab ou oitava.
:)
Meu controles conhecimento é muito magro, mas eu vou jogar o meu $ 0,02 vale a pena lá ...