Sto costruendo un risolutore automatico di labirinti labirinto e sto usando una webcam per controllare il mio labirinto.
Sulla base dei suggerimenti di altri forum, sto cercando di controllare il movimento della palla del labirinto almeno in una direzione al momento. Quindi, sto cercando di controllare il movimento della mia palla tra due coordinate 466.288 e 466.152. L'ingresso alla scheda del controller del motore passo-passo è il tempo, nessun numero di passi da ruotare per ciascun asse, ovvero xey.
La scheda controller del motore passo-passo che sto usando è la scheda controller del motore passo-passo egg bot: http://www.sparkfun.com/products/10025
Quindi, per spostarmi tra due punti, dovrei creare un numero di punti intermedi tra i due punti, vale a dire 288 e 152 (diciamo 260 240 230 ... 150) e correggere il mio movimento della palla?
Il mio algoritmo di elaborazione delle immagini non è abbastanza veloce da tracciare la palla che la palla gira e cade in un buco.
Alcuni hanno suggerito di utilizzare un modello standard come mostrato nel seguente video e correggere i movimenti della palla per deviare nel percorso:
http://www.youtube.com/watch?v=Prq78ctJ2Rk&feature=player_embedded
Mi sono anche imbattuto in uno strumento di elaborazione delle immagini in cui hanno risolto lo stesso problema utilizzando i punti di passaggio per il movimento della palla. Vedendo troppe soluzioni allo stesso problema, sono totalmente confuso nel risolvere il problema. Sono consapevole che dovrei implementare un controller PID. Ma come dovrei risolvere i problemi in più fasi? Sono bloccato e solo frustrato nel trovare un vantaggio nel risolvere il problema.
La mia configurazione è simile al seguente:
... ed ecco uno screenshot del mio software:
Revisione 2: Sto anche affrontando un nuovo problema ora: in precedenza ho controllato i motori passo-passo tramite l'applet Java porta seriale Arduino. Sono in grado di guidare gli stepper usando l'applet.
Devo ripristinare la scheda ogni volta che provo a comunicare tramite porta seriale. Inoltre, il motore passo-passo si eccita a piccoli intervalli quando non viene inviato alcun comando. Quando il motore passo-passo entra in questa modalità, non posso controllare la mia scheda senza ripristinare la scheda. Qualsiasi aiuto sarebbe apprezzato.
Revisione 3:
Ho fatto alcuni progressi in cui ho implementato l'algoritmo PID. Puoi trovare il video qui sotto: http://www.youtube.com/watch?v=MEfp7RqPmqY
Ora ho un problema con la velocità con cui viene implementato l'algoritmo PID. In realtà la mia elaborazione delle immagini termina un ciclo in 200 ms, identifica una palla e invia i comandi alla scheda controller del motore passo-passo. Anche se alla mia porta seriale vengono inviati comandi per cambiare direzione, il mio stepper continua a ruotare nella stessa direzione. Puoi trovare lo strano comportamento nel video qui sopra.
Il mio pensiero è che dovrei limitare i valori PID con un limite in cui se il valore PID calcolato è maggiore di 100, dovrei semplicemente inviare un 100. Non vedo l'ora di sentire i tuoi pensieri su questo.
Il modo in cui ho implementato il controller PID è che ho identificato il punto iniziale del modello usando l'algoritmo di corrispondenza del modello e identificato la palla usando un altro algoritmo di corrispondenza del modello. Ora, ho fatto spostare la palla verso il centroide del modello del punto di partenza. Come faccio a farlo seguire la linea retta con l'algoritmo PID?
Revisione 4:
Ho isolato la traiettoria ma non riesco a trovare la funzione corretta per stampare le coordinate pixel corrette dal punto iniziale. qualche idea?