kaliberen d.m.v Vision

Alle andere vragen over zelfbouw machine`s kunnen hier terecht.

Moderator: Moderators

Gebruikersavatar
DaBit
Donateur
Berichten: 11017
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: kaliberen d.m.v Vision

Bericht door DaBit »

Ik speelde met OpenCV + Python.
Eigenlijk ben ik een Python-hater, maar daarmee heb je wel aan 20 regels genoeg om beeld binnen te lepelen, te verwerken, en met het resultaat de machine te sturen (LinuxCNC, via de Python bindings).
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
diepchess
Berichten: 1430
Lid geworden op: 02 jul 2013 11:02
Locatie: Veenendaal
Contacteer:

Re: kaliberen d.m.v Vision

Bericht door diepchess »

koencnc schreef:Vraagje,

in 99% van alle set-up op het forum zie ik een kalibratie middels contact sensoren/ proxmitty sensoren. Welke nauwkeurigheid halen deze sensoren?

Nu had ik het idee om de bank met vision te kalibers. Dit wil zeggen een vaste camera opstelling op het machine bed en een eik punt op de z-as. De frees gaat boven de camera staan en met relatief simpele algebra wordt de afwijking gemeten en het eik punt gekalibreerd. Je zou dus tijdens het frezen (na verwisselen van gereedschap o.i.d.) dit zelfde trucje weer kunnen herhalen?

Wat denken jullie hierover? kon 123 geen topic erover vinden.


Gegroet,
Ja dat zou in theorie kunnen, maar dat is enorm ombouwwerk en de (militaire) vision technologie is megaduur. We praten over apparatuur die gewoon te duur is inkoop al. Duurder dan je hele machine gok ik en dat werkt dan ook alleen voor specifieke afstanden en dan heb je dus ook hele nauwkeurige software erbij nodig.

Dat laatste is best wel wat werk, want die camera's zijn eigenlijk niet bedoeld om dit te doen op microschaal. Ze werken eerder op macroschaal waarbij je graag inzoomed op een vierkantje 1200 meter - 30 kilometer weg ofzo.
Onbetaalbaar.

Je wilt het dus anders oplossen zoals veel posters al aangeven.
Maar die lenzen kunnen in theorie ook werken op hele kleine afstandjes hoor - wel moet je rekening houden met vervormingen. Dat reken je weg met software... ...maar die vind je niet op internet.

Wat je wel kunt doen is de scanning technologie proberen te benutten - een simpel lasertje van 2 euro en dan met goedkope opensource vision waar je wel aan moet veranderen, detecteren wanneer een laserstraal net je tool ergens raakt. Dat zou behoorlijk nauwkeurig moeten zijn - misschien wel paar honderdste en als je fiks wat moeite doet en je pakt een lasertje van 66 dollar die op iets andere frequentie werkt dan lukt het misschien nog beter.

Achter die laser hang je dan een telescoopspiegeltje - die kost zo'n 50 dollar een vlakke spiegel (van bijvoorbeeld newton telescoop - de secondary mirror - want die is VLAK) en is heel erg vlak. Op iets van 1/12e lambda (wel andere lambda dan van de laser - lambda van zichtbaar licht zeg 635 nanometer ofzo).

Maar ja - wat als je al die moeite doet - wat koelwater komt op je setup van laser en/of spiegeltjes - en hop het werkt niet meer. Wat dan?

Zelf heb ik deze gekocht: http://www.ebay.com/itm/66B-CNC-Automat ... 2749.l2649

Ik hoor van de ervaringsdeskundigen hier wel of dat goed idee was :)
diepchess
Berichten: 1430
Lid geworden op: 02 jul 2013 11:02
Locatie: Veenendaal
Contacteer:

Re: kaliberen d.m.v Vision

Bericht door diepchess »

koencnc schreef:Uiteenlopende meningen bij dit onderwerp. Voor een proof of concept wilde ik een relatief eenvoudige camera gebruiken b.v. een webcam.
Laten processen op mijn laptop met het programma labview met de vision toolbox van NI(national instruments). Voordeel van deze software is dat afstellen en programmeren zeer eenvoudig is voor een test. Nadeel is dat de hele interface (heel) traag is.

En kan daarna nog gekeken worden naar c++ met openCV.

Dus: minimal aantal pixels, zsm omzetten naar een binair beeld d.m.v een Treshold ect. Framerate moet worden herleid uit de processing time. Meer beelden schieten heeft geen zin lijkt me.
Je wilt geen webcam. Dat zijn jpg dingen. Je wilt video raw ontvangen. Dus iets van 5 dollar ofzo dat een simpel raw beeld geeft van 640x480 ofzo is veel handiger dan een vervormd JPG beeld voor beeldverwerking.

Wat niet wegneemt dat het wel kan met jpg's hoor. JPEg is heel compact formaat, maar het is een lossy formaat. Dus er is ontzettend veel informatie weggesneden uit dat beeld. Je ideale cameraatje van 5 dollar geeft op ene arduinootje van 7 dollar ofzo, gewoon een raw beeld. Dat pomp je dan richting je PC processor waar je het processed. Voor nog een handvol dollars meer heb je overigens een stereocamera.

Dat geeft je veel krachtiger manier om afstand/diepte (niet hetzelfde) te herkennen.

De hardware van de scanners is al prijzig - maar zijn civiel te koop. Wel kostbaar als ze nauwkeurig werken - maar je moet het zo zien het echte probleem is de software. Tenslotte met van die civiele scanners proberen ze vanuit bestelbusje met veel energie te richten richting een bedrijf en dan de harde schijf van een computer op die manier te scannen. het probleem is dan niet de hardware om dat te doen, ervan uitgaand dat die computer niet in bunker staat -want dan is er ontzettend veel meer energie nodig om 'm te scannen - maar het echte probleem is de software. Ga je die zelf pennen?
diepchess
Berichten: 1430
Lid geworden op: 02 jul 2013 11:02
Locatie: Veenendaal
Contacteer:

Re: kaliberen d.m.v Vision

Bericht door diepchess »

Labview van national instruments
Ja ik ben bekend met wat dat is. Mooie interface - maar snelle processing van beelden vereist megarekenwerk en dit is geen rekenpakket natuurlijk. Processing pen je zelf. Ik ben sinds aantal jaar bezig met knoeien op grafische processors. Zelfs een videokaartje van paar jaar terug is zo maar 50x sneller dan een laptop i7 processortje.
Nu ja knoeien - kraken van discrete logaritmes lukt me op oud grafische kaartje stuk sneller dan snelste software die zo'n GCHQ figuur gepend had (die gebruikt wordt om te sieven - met allerlei ontzettend handige optimalisaties die alleen gedaan konden worden door geheime informatie te hebben over processoren en hoe de executieunits van binnen werken - en dat wordt dan door simpele CUDA code even verslagen zonder enig geheime kennis t.a.v. de internals van de Nvidia gpu's). Dat is vrij lastige code om te parallelliseren overigens omdat dat algoritmisch sneller rekent op een single core want het is cryptografische code natuurlijk. 1 hele oude gpu (fermi generatie nota bene) even snel als 40 cpu cores.

Beeldprocessing op gpu's is vet simpeler daar.

Heb hier wat Tesla's van Nvidia gekregen voor processing - dat wil wel natuurlijk - daarmee ram je alle CPU's weg op een manier alsof ze niet bestaan.

Maar die software moet je zelf pennen natuurlijk. Je kunt de voorprocessing doen op de gpu en de meer complexe patronen die veel cohesie vertonen die doe je op de CPU. Dit is allemaal enorm software project - maar dan kun je gelijk natuurlijk ook makkelijk een robot aansturen om je CNC machine te laten bedienen.

Hoezo zelf productie doen met de hand. Helemaal automatiseren die hap met robots.
Gebruikersavatar
DaBit
Donateur
Berichten: 11017
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: kaliberen d.m.v Vision

Bericht door DaBit »

Eh diepchess,

Als ik mijn toegetakelde Microsoft webcammetje weer aan de kop ducttape dan kun je het zien werken hoor. Niks militair spul nodig. Diepte bepalen en pointcloud genereren ook; ik laat de machine dan meerdere beelden schieten vanaf verschillende XY posities, met SIFT features herkennen en die matchen in de frames. Met een voor vervorming gecalibreerde lens is het dan simpel om de Z te berekenen. Een beetje van dik hout zaagt men planken (het scale/rotate invariant deel is immers niet erg nodig), maar het werkt, en op subpixel-niveau.

Overigens kun je de meeste webcammetjes ook prima YUYV (YUV 4:2:2) data laten genereren, kwestie van de juiste mode instellen. In Python+OpenCV:

Code: Selecteer alles

# Initialise video capture
cap = cv2.VideoCapture(1)
# Use YUYV capture mode.
cap.set(cv2.cv.CV_CAP_PROP_MODE, 3);
# (bladieblah)
Verder is een deel van de algorithmen in OpenCV ook geimplementeerd met CUDA. Helaas voornamelijk enkel wat robots nodig hebben, dus de 3D reconstructie / berekenen disparity maps en objectherkenning en met de gebruikelijke waarschuwing dat data heen en weer pompen de winst wel eens kan doen verdampen.

Het is niet voor niets dat ik een Sony sensortje met MIPI interface op een Tegra bordje wel zie zitten voor zoiets. Data komt dan direct op de GPU binnen en kan na processing via een Gbit linkje naar de sturing. Dan hou ik die 20 meter/minuut van mijn machine wel bij ;-)
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Plaats reactie