MEDICIÓN DE DISTANCIAS CON UNA CÁMARA WEB Y UN PUNTERO LÁSER
Introducción
Existen en el mercado mercado muchos medidores de distancia (o telémetros) telémetros) en base a ultrason ultrasonido, ido, infrarr infrarrojo ojo y hasta hasta con sistema sistema láser. láser. Todos odos estos estos dispositivos cumplen bien su función, pero en el campo de la robótica aér aérea, ea, el peso peso del del disp dispo ositi sitivo vo es una cues cuesti tión ón prim primor ordi dial al.. ada ada componente !ue se a"re"a a la estructura de un avión debe tener un máxim máximo o de utili utilidad dad y e#cien e#ciencia cia.. $na nave nave aére aérea a robó robótic tica a minia miniatur tura a puede llevar apenas %&& "ramos de car"a 'til. (Est (Esto o es váli válido do,, tamb tambié ién, n, para para cual cual!u !uie ierr robot obot móvi móvil, l, aun! aun!ue ue sea sea terrestre, por!ue en estos casos también es importante controlar el peso para evitar un "asto excesivo de ener"a y as darle autonoma al robot y un mayor tiempo de funcionamiento sin necesidad de una recar"a de sus bateras.) e pueden reali*ar tareas de visión robótica, tales como la identi#cación identi#cación y sorteo de obstáculos, obstáculos, utili*ando una cámara +eb (+ebcam) o una mini cámara de video inalámbrica conectada a una computadora a través de $. -ejor a'n, dos +ebcams pueden proporcionar una visión estéreo !ue nos dé mejor capacidad de evitar obstáculos, debido a !ue se puede determinar la profundidad. Esto, por supuesto, tiene la desventaja de a"re"ar el peso de una se"unda cámara de ima"en. Este trabajo describe la manera de utili*ar un mini puntero láser de bajo junto a una 'nica cámara de ima"en, del tipo +ebcam, para obtener información de distancia.
SISTEMAS DE CONTROL INDUSTRIAL II
La teora
El dia"rama !ue si"ue muestra cómo se puede calcular la distancia hasta un objeto ubicado en el campo visual de una cámara de ima"en proyectando un punto láser sobre él. a matemática necesaria para el cálculo es simple, de modo !ue es posible utili*ar esta técnica en aplicaciones de visión robótica !ue re!uieren velocidad.
/eamos entonces cómo debemos hacer. e proyecta el ha* del puntero láser sobre un objeto en el campo visual de una cámara de ima"en0 lo ideal es !ue este ha* sea paralelo al eje óptico de la cámara. 1unto con el resto de la escena tomada por la cámara de ima"en, capturamos el punto luminoso del láser. e aplica un simple al"oritmo sobre la ima"en, a la b's!ueda de los pixeles más brillantes. 2sumiendo !ue la lu* del láser es el área más brillante de la escena (al"o !ue se cumple en las foto"rafas de más abajo, reali*adas en interiores con un puntero láser com'n y de bajo precio), se puede conocer la posición de este punto luminoso en el cuadro de ima"en. SISTEMAS DE CONTROL INDUSTRIAL II
2hora debemos calcular la distancia hasta el objeto, en base a la posición donde cae el punto brillante respecto al eje 3y3 de la ima"en. uanto más cerca se encuentra el punto brillante del centro de la ima"en, más lejos está el objeto. Tomando como base el dia"rama anterior, se puede calcular la distancia (4)5
6or supuesto !ue para resolver esta ecuación debemos conocer 3h3, !ue es una constante de#nida por la distancia entre el ha* del láser y el centro visual de la cámara, y el án"ulo theta. Theta se calcula5
$niendo las ecuaciones, obtenemos5
-uy bien, la cantidad de pixeles desde el centro del plano focal hasta el lu"ar donde aparece el punto del láser se puede contar trabajando sobre la ima"en (simplemente, es una cantidad de lneas de ima"en). 78 !ué pasa con los otros parámetros de la ecuación9 4ebemos hacer una calibración para obtenerlos.
SISTEMAS DE CONTROL INDUSTRIAL II
6ara calibrar el sistema, tomaremos una serie de mediciones en las !ue cono*camos la distancia hasta el blanco, y también tomamos como medición a !ué cantidad de pixeles desde el centro de la ima"en se encuentra el punto en cada caso. /eamos un ejemplo de recolección de datos5 Datos de Calibración Pixeles el centro
desde D (cm)
103
29
81
45
65
58
55
71
49
90
45
109
41
127
39
159
37
189
35
218
real
SISTEMAS DE CONTROL INDUSTRIAL II
$sando la ecuación !ue si"ue, podemos calcular el án"ulo real en base al valor de h y también la distancia real para cada punto.
2hora !ue tenemos un Theta real para cada valor, podemos lo"rar una relación !ue nos permitirá calcular el án"ulo theta a partir de la cantidad de pixeles desde el centro de la ima"en. $sando una relación lineal, de modo !ue es necesario aplicar una "anancia y un ajuste de compensación. Esto parece funcionar bien aun cuando no se tiene en cuenta el hecho de !ue el plano focal es llano en lu"ar de una curva de radio constante alrededor del centro de la lente. 4e mis datos de calibración, calculé5 4espla*amiento (ro) : ;&,&<=<%>?>> radianes @anancia (rpc) : &,&&A>AC radianesDpixel $sando5
SISTEMAS DE CONTROL INDUSTRIAL II
e obtiene las distancias calculadas, y además calculé el error contra la distancia real en los datos de calibración5 Datos de distancia calclados ! reales Pixeles el centro
desde D (cm)
calc D (cm)
real
" de error
103
29#84
29
2#88
81
41#46
45
$7#87
65
57#55
58
$0#78
55
75#81
71
6#77
49
93#57
90
3#96
45
110#85
109
1#70
41
135#94
127
7#04
39
153#27
159
$3#60
37
175#66
189
$7#06
35
205#70
218
$5#64
SISTEMAS DE CONTROL INDUSTRIAL II
E 2F4G2FE Este medidor de distancias se compone de pocos elementos. $tilicé un tro*o de cartón para sostener el láser junto con la +ebcam, de manera !ue el puntero láser apunte en dirección paralela al eje de la cámara. os elementos !ue se ven en la ima"en están colocadas sobre una "rilla de % pul"ada de lado (A<,> mm) para dar una referencia de tamaHo.
SISTEMAS DE CONTROL INDUSTRIAL II
Este es el aspecto del medidor de distancias tal como !uedó lue"o del montaje.
SISTEMAS DE CONTROL INDUSTRIAL II
2 continuación se ven imá"enes re"istradas con este pro"rama5
Visual C++
void CTripodDlg::doMyImageProcessing(LPBITMAPINFOHAD!
lpT"isBi#mapIn$oHeader% SISTEMAS DE CONTROL INDUSTRIAL II
& '' doMyImageProcessing: A)* es donde )s#ed escri+e s) propio c,digo de proceso de imagen '' Tarea: Leer la escala de grises de )n pi-el y procesarla )nsigned in# ./ H0 1pi-eles2 )nsigned in# ro3/ col0 y Col)mna (col% del Pi-el )nsigned long i0 ro35col)mn )nsigned in# ma-6ro30 +rillan#e )nsigned in# ma-6col0 +rillan#e B8T ma-6val 9 0 +rillan#e
'' Anc"o y al#o del c)adro '' Posici,n de Hilera (ro3% '' 4aria+le para el vec#or '' Hilera del pi-el m7s '' Col)mna del pi-el m7s '' 4alor del pi-el m7s
'' 4alores )#ili;ados para calc)lar la dis#ancia a par#ir de los da#os de la imagen cap#)rada '' s#os valores s,lo sirven para )na c7mara y )n l7ser de#erminados cons# do)+le gain 9 <=>=?@>0 '' Cons#an#e de ganacia )#ili;ada para la conversi,n '' despla;amien#o del pi-el al 7ng)lo en radianes cons# do)+le o$$se# 9 5<??>>>0 '' Cons#an#e de despla;amien#o cons# do)+le "6cm 9 ?<>=0 '' Dis#ancia en#re el cen#ro de la c7mara y el l7ser do)+le range0 '' Dis#ancia calc)lada )nsigned in# pi-els6$rom6cen#er0 '' E+icaci,n del pi-el m7s +rillan#e desde el cen#ro '' no desde la par#e in$erior del c)adro c"ar CDC mos#rar )n mensae
s#r120 GpDC0
'' para mos#rar )n mensae '' con#e-#o necesario para
. 9 lpT"isBi#mapIn$oHeader5+i.id#"0
'' +i.id#": can#idad de
col)mnas H 9 lpT"isBi#mapIn$oHeader5+iHeig"#0 '' +iHeig"#: ca#idad de "ileras $or (ro3 9 0 ro3 H0 ro3JJ% & $or (col 9 0 col .0 colJJ% & '' !ecordar )e cada pi-el se compone de +y#es i 9 ()nsigned long%(ro3GG. J Gcol%0 '' Ki el valor del pi-el ac#)al es mayor )e el de los o#ros/ '' es el n)evo pi-el m7-imo i$ (G(m6des#ina#ionBmp J i% 9 ma-6val% & ma-6val 9 G(m6des#ina#ionBmp J i%0 SISTEMAS DE CONTROL INDUSTRIAL II
ma-6ro3 9 ro30 ma-6col 9 col0 '' Desp)s de cada c)adro/ poner valor del pi-el m7-imo en cero ma-6val 9 0 $or (ro3 9 0 ro3 H0 ro3JJ% & $or (col 9 0 col .0 colJJ% & i 9 ()nsigned long%(ro3GG. J Gcol%0 '' Di+)ar )na cr); +lanca so+re el pi-el m7s +rillan#e en la pan#alla i$ ((ro3 99 ma-6ro3% (col 99 ma-6col%% G(m6des#ina#ionBmp J i% 9 G(m6des#ina#ionBmp J i J % 9 G(m6des#ina#ionBmp J i J =% 9 =??0 '' Calc)lar la dis#ancia del pi-el m7s +rillan#e desde el cen#ro/ no desde el pie del c)adro pi-els6$rom6cen#er 9 = 5 ma-6ro30 '' Calc)lar la dis#ancia en cm en +ase a la )+icaci,n del pi-el m7s +rillan#e/ '' y de$inir cons#an#es espec*$icas range 9 "6cm ' #an(pi-els6$rom6cen#er G gain J o$$se#%0 '' para mos#rar )n mensae en (ro3/ col)mn% 9 (?/ ?% pDC 9 e#DC(%0 '' M)es#ra las coordenadas del c)adro y la dis#ancia calc)lada sprin#$(s#r/ QMa- 4al)e a# -9 R)/ y9 R)/ range9 R$ cm Q/ma-6col/ ma-6ro3/ range%0 pDC5Te-#O)#(?/ ?/ s#r%0 !eleaseDC(pDC%0
SISTEMAS DE CONTROL INDUSTRIAL II