Estou construindo um solucionador de labirinto automático de labirinto e usando uma webcam para controlar meu labirinto.
Com base em sugestões de outros fóruns, estou tentando controlar o movimento da bola do labirinto pelo menos em uma direção no momento. Então, estou tentando controlar o movimento da minha bola entre as duas coordenadas 466,288 e 466,152. A entrada para a placa controladora do motor de passo é o tempo, não há etapas a serem rotacionadas para cada eixo, isto é, xey.
A placa controladora do motor de passo que estou usando é a placa controladora do motor de passo egg bot: http://www.sparkfun.com/products/10025
Então, para mover entre dois pontos, devo criar um número de pontos entre os dois pontos, ou seja, 288 e 152 (digamos 260 240 230 ... 150) e corrigir o movimento da minha bola?
Meu algoritmo de processamento de imagem não é rápido o suficiente para rastrear a bola, de forma que ela simplesmente gire e caia em um buraco.
Alguns sugeriram que eu use um modelo padrão, como mostrado no vídeo a seguir, e corrija os movimentos da minha bola para desviar o caminho:
http://www.youtube.com/watch?v=Prq78ctJ2Rk&feature=player_embedded
Eu também me deparei com uma ferramenta de processamento de imagens onde eles resolviam o mesmo problema usando pontos de passagem para o movimento da bola. Vendo muitas soluções para o mesmo problema, estou totalmente confuso em resolver o problema. Estou ciente de que devo implementar um controlador PID. Mas como devo resolver os problemas em etapas? Estou paralisado e frustrado em encontrar um avanço na solução do problema.
Minha configuração é assim:
... e aqui está uma captura de tela do meu software:
Revisão 2: Agora também estou enfrentando um novo problema: Antes, eu controlava os motores de passo por meio do applet Java da porta serial do Arduino. Eu sou capaz de conduzir os steppers usando o applet.
Preciso redefinir a placa toda vez que tento me comunicar via porta serial. Além disso, o motor de passo se energiza em pequenos intervalos quando nenhum comando é enviado a ele. Quando o motor de passo entra neste modo, não consigo controlar minha placa sem redefinir a placa. Qualquer ajuda seria apreciada.
Revisão 3:
Fiz alguns progressos onde implementei o algoritmo PID. Encontre o vídeo abaixo: http://www.youtube.com/watch?v=MEfp7RqPmqY
Agora eu tenho um problema com a velocidade na qual o algoritmo PID é implementado. Na verdade, meu processamento de imagem termina um ciclo em 200 ms, identifica uma bola e envia os comandos para a placa controladora do motor de passo. Mesmo que minha porta serial receba comandos para mudar de direção, meu stepper continua girando na mesma direção. Você pode encontrar o comportamento estranho no vídeo acima.
Meu pensamento é que eu deveria restringir os valores do PID com um teto, onde se o valor calculado do PID for maior que 100, devo apenas enviar um 100. Estou ansioso para ouvir seus pensamentos sobre isso.
A maneira como implementei o controlador PID é que identifiquei o ponto de partida do modelo usando o algoritmo de correspondência de modelos e identifiquei a bola usando outro algoritmo de correspondência de modelos. Agora, eu fiz a bola se mover para o centróide do modelo de ponto de partida. Como faço para seguir a linha reta com o algoritmo PID?
Revisão 4:
Eu isolei a trajetória, mas não consigo encontrar a função correta para imprimir as coordenadas de pixel corretas a partir do ponto de partida. Alguma ideia?