Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Sistema di visione tramite piattaforma embedded

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

1
voti

[11] Re: Sistema di visione tramite piattaforma embedded

Messaggioda Foto Utentedimaios » 10 mar 2016, 11:34

jmonty ha scritto:Provo a fare dei calcoli:
Quindi credo che con una telecamere da 20-25 FPS dovrebbe farcela;


Dipende da come è fatto il sistema.

jmonty ha scritto:ora non so come i tempi di latenza (calcoli di: image processing, image analysis etc...) ed i tempi rubati all'esecuzione del programma da parte del SO e degli altri processi presenti sulla macchina possano degradare le prestazioni.


Il problema non è il tempo necessario per calcolare la posizione ma il fatto che durante quel tempo il target si è spostato.
Se il nastro procede a velocità costante ed il delta robot è sincronizzato con il tuo sistema di image processing allora puoi predirre dov'è il pezzo nell'istante di pick.
La condizione necessaria è quindi che i due sistemi abbiano un timer sincronizzato ( la precisione dipende da quanto veloce è il processo ) e che la predizione sia fatta a bordo del robot il quale calcola in tempo reale la posizione predetta in base a quella fornita.
E' altresì importante analizzare il bus di campo utilizzato per trasferire il dato della posizione dal PC al robot.

Essendo l'applicazione dinamica devi impiegare una telecamera con global shutter.
Le Basler sono ottime ( es. acA640-90gm ). Driver e le librerie di gestione della telecamera sono gratuite e molto ben fatte ( non male neanche l'efficienza ).
Ti consiglio ovviamente una telecamera in bianco e nero e preferibilmente GigE. Evita le USB3.0 perché non ti permettono di collocare la telecamera distante dal PC.

Per il PC puoi iniziare con un qualsiasi PC con un i7 a bordo e almeno 16 GB di RAM.
Per le ottimizzazioni CUDA puoi aspettare i risultati delle prove con il processore centrale.

Ti consiglio di iniziare le prove con Windows perché il Visual Studio aiuta molto nello sviluppo. Inoltre si riescono ad avere frame-rate di tutto rispetto ( sono arrivato fino a 100 Hz senza particolari problemi ).
Se poi vuoi fare il porting del software sotto Linux la cosa è abbastanza immediata perché le librerie sono le medesime ed i driver sono disponibili.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[12] Re: Sistema di visione tramite piattaforma embedded

Messaggioda Foto Utentejmonty » 10 mar 2016, 12:19

La velocità del nastro trasportatore è costante (il nastro è azionato da un motore sincrono controllato da inverter Siemens mediante retroazione di un encoder incrementale 12 bit). Per sincronizzare la posizione di un oggetto individuato dal sistema di visione ed il controller ho pensato alla seguente soluzione:

passo 1)

Leggo un frame dalla telecamera.

passo 2)

Leggo il numero di impulsi provenienti dall''encoder(devo capire come e se esiste in commercio una telecamera dotata già di ingresso encoder che al frame in uscita mi associ il conteggio dell'encoder).

passo 3)

Prelevo dal frame la posizione dell'oggetto in ascisse e ordinate.

passo 4)

Invio al controller del robot la posizione dell'oggetto (ascisse e ordinate) con il conteggio encoder.

passo 5)

Il controller del robot calcola la posizione assoluta dell'oggetto mediante la posizione stimata dall'algoritmo di visione e la posizione dell'encoder trasmessa.
Avatar utente
Foto Utentejmonty
16 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 232
Iscritto il: 9 ago 2011, 18:58

0
voti

[13] Re: Sistema di visione tramite piattaforma embedded

Messaggioda Foto Utentedimaios » 10 mar 2016, 13:11

jmonty ha scritto:
passo 2)
Leggo il numero di impulsi provenienti dall''encoder(devo capire come e se esiste in commercio una telecamera dotata già di ingresso encoder che al frame in uscita mi associ il conteggio dell'encoder).


Non serve che la velocità la sappia la telecamera, lei calcola la posizione in un certo istante. Siccome questo istante temporale è sincronizzato con il robot, il robot deve ricevere un pacchetto del tipo :

Codice: Seleziona tutto
long timestamp ; // Istante di campionamento microsecondi
int   posizione   ; // Posizione calcolata nell'istante di campionamento


A questo punto il robot calcola la differenza tra il timer attuale e quello al momento del campionamento ecc. ecc.

Ancora più facilmente, senza scomodare IEEE1588 e sincronizzare il sistema, puoi dare il trigger di campionamento alla telecamera facendolo generare dall'elettonica di controllo del robot.
In questo modo il robot sa già quando è stato campionata l'immagine per cui non ci sono problemi.
Questo metodo di sincronizzazione nel tuo caso è più conveniente visto che impieghi solo una telecamera.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[14] Re: Sistema di visione tramite piattaforma embedded

Messaggioda Foto Utentejmonty » 10 mar 2016, 19:03

La soluzione di generare il segnale di trigger per la telecamera dal controller mi va bene. Per quel che riguarda la comunicazione tra sistema di visione e controller mi sorgono i seguenti dubbi:

1) Tralasciando l'architettura di comunicazione (profibus, ethernet/ip, profinet etc...), nel caso in cui il mio sistema di visione individui più di un oggetto in un frame, deve inviare un pacchetto al controller in cui oltre al tempo di campionamento (da omettere se il trigger lo genera il controller) sono specificate le posizione dei singoli oggetti?

2) poiché tra un frame ed il successivo c'è la possibilità che il sistema di visione individui gli stessi oggeti, ovviamente con posizioni traslate secondo il verso di rotazione del nastro trasportatore, se invio un nuovo pacchetto al controller (che racchiude le stesse informazioni degli oggetti del pacchetto inviato in precedenza), come si comporterà il controller?

3)Tralasciando il comportamento del controller del robot inerente al punto 2, dovrei prevedere un algoritmo che mi tenga conto degli oggetti già individuati ed inviati al controller, in modo da non duplicare al controller informazioni già processate?
Avatar utente
Foto Utentejmonty
16 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 232
Iscritto il: 9 ago 2011, 18:58

0
voti

[15] Re: Sistema di visione tramite piattaforma embedded

Messaggioda Foto Utentedimaios » 14 mar 2016, 19:08

Giusto per dare un'indicazione, procederei in questo modo.

La zona di tracking è praticamente quella vista dalla telecamera ovvero il range di misura.
La parte finale è la zona di invio del dato.
Quando un pezzo entra nella zona di tracking lo si segue e si capisce come associare l'immagine precedente con quella successiva analizzando per esempio lo spostamento dei baricentri.
Tutta la storia di un pezzo viene memorizzata in una coda. Quindi una coda contiene tutte le posizioni di un determinato pezzo durante il tracking.
Solo quando il pezzo entra nella zona di invio ( molto stretta ) allora viene cancellato dalle code di tracking e le coordinate sono spedite al robot per l'operazione di pick.




Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[16] Re: Sistema di visione tramite piattaforma embedded

Messaggioda Foto Utentejmonty » 14 mar 2016, 19:17

Ora mi è tutto più chiaro!
Avatar utente
Foto Utentejmonty
16 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 232
Iscritto il: 9 ago 2011, 18:58

Precedente

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite