Webcam Based DIY telémetro láser - Todd Danko.pdf
-
Upload
carlos-ramos -
Category
Documents
-
view
18 -
download
1
Transcript of Webcam Based DIY telémetro láser - Todd Danko.pdf
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 1/18
ToddDankoProyectosrecientes
OtrosProyectosytutorialesStepperMotorApplianceWebcamBasedDIYtelmetrolser
Mapadelsitio
ContactoEscrbame
ProyectosRecientes>
WebcamBasedDIYtelmetrolser
Introduccin
Haymuchosfueradelagamaestanteencontrarcomponentesdisponibles,incluyendotelmetrosultrasnicos,infrarrojos,einclusolser.Todosestosdispositivosfuncionanbien,peroenelcampodelarobticaarea,elpesoesunapreocupacinprimordial.Esdeseableobtenerlamayorfuncionalidaddecadacomponentequeseaadeaunaclula.Helicpterosrobticoenminiatura,porejemplo,puedellevaraproximadamente100gdecargatil.Esposiblerealizartareasdevisinartificial,comolaidentificacindeobstculosylaevitacindequeelusodeunacmaraweb(ominicmarainalmbricainterfazconunordenadoratravsdeladaptadorUSB).Mejoran,doscmaraswebpuedenproporcionarlavisinartificialestreomejorandoaslaevasindeobstculosporquelaprofundidadsepuededeterminar.Elinconvenientedeestesupuestoeslaadicindeelpesodeunasegundacmara.Estapginadescribecomounpunterolserdeminisepuedeconfigurarjuntoconunasolacmaraparaproporcionarunavisinmonomquinaconinformacindedistancia.
Esteproyectosebasaengranmedidadeuntutorialencontradoaqu
Teoradeoperacin
Elsiguientediagramamuestracmolaproyeccindeunpuntodelsersobreunobjetivoqueestenelcampodevisindeunacmara,sepuedecalcularladistanciaaeseobjetivo.Lamatemticaesmuysimple,porloqueestatcnicafuncionamuybienparaaplicacionesdevisinartificialquenecesitanparafuncionarrpidamente.
Buscarenestesitio
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 2/18
Aspues,aquescmofunciona.Ahazdelserseproyectasobreunobjetoenelcampodevisindeunacmara.Esterayolseresidealmenteparaleloalejepticodelacmara.Elpuntodellserescapturadojuntoconelrestodelaescenaporlacmara.Unsimplealgoritmoseejecutasobrelaimagenenbuscadelospxelesmsbrillantes.Suponiendoqueellsereselreamsbrillantedelaescena(quepareceserciertoparamitiendadedlarpunterolserenelinterior),esconocidalaposicindepuntosenelcuadrodeimagen.Entoncestenemosquecalcularladistanciaalobjetobasadoendondealolargodelejeydelaimagendeestepuntolsercae.Cuantomscercadelcentrodelaimagen,cuantomslejosestelobjeto.
Comopodemosvereneldiagramaenestamismaseccin,ladistancia(D)sepuedecalcular:
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 3/18
Porsupuesto,pararesolverestaecuacin,loquenecesitasaberh,queesunaconstantefijacomoladistanciaentreelpunterolserylacmara,ytheta.Thetasecalcula:
Pongalasdosecuacionesanterioresjuntos,obtenemos:
Aceptar,porloqueelnmerodepxelesdesdeelcentrodelplanofocalqueapareceelpuntolserpuedeslosecontarapartirdelaimagen.Qupasaconlosotrosparmetrosdeestaecuacin?Tenemosquerealizarunacalibracinparaderivarestos.
Paracalibrarelsistema,vamosarecogerunaseriedemedicionesdondesladistanciaalblanco,ascomoelnmerodepxelesdelpuntoesdesdeelcentrodelaimagencadavez.Estosdatossonacontinuacin:
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 4/18
DatosdeCalibracin
pxelesdelcentro realD(cm)
103 29
81 45
65 58
55 71
49 90
45 109
41 127
39 159
37 189
35 218
Elusodelasiguienteecuacin,podemoscalcularelngulorealbasadoenelvalordeh,ascomodeladistanciarealparacadapuntodedatos.
AhoraquetenemosunTheta_actualparacadavalor,podemosllegaraunarelacinquenospermitecalcularthetadelnmerodepxelesdelcentrodelaimagen.Heutilizadounarelacinlineal(porlotantounagananciayoffsetse
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 5/18
necesitaba).Estoparecefuncionarbienapesardequenotieneencuentaelhechodequeelplanofocalesunplanoenlugardecurvadaenunradioconstantealrededordelcentrodelalente.
Desdemidatosdecalibracin,calcul:
Offset(ro)=0.056514344radianes
Ganancia(RPC)=0,0024259348radianes/pixel
Uso:
Heresueltopordistanciascalculadas,ascomodeerroresdeladistanciarealdelosdatosdecalibracin:
RealycalculadadedatosRango
pxelesdelcentro calcD(cm) realD(cm) 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
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 6/18
Componentes
Nohayunagrancantidaddepiezasenmitelmetromuestra.Usuntrozodecartnparamantenerunpunterolserparaunacmarawebparaqueelpunterolserenunadireccinqueesparalelaaladelacmara.Laspartesseveacontinuacinsecolocansobreunarejilladeunapulgadaparareferencia.
Mitelmetromontadoseveas:
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 7/18
Software
Heescritosoftwaredosmaneras,unautilizandoVisualC++yelotroutilizandoVisualBasic.Esprobablequeencuentrequelaversinbsicavisualdelsoftwareesmuchomsfcildeseguirqueelcdigovc++,perocontodo,hayunacompensacin.Elcdigovc++sepuedenponerjuntosdeformagratuita(asumiendoquetieneVisualStudio),mientrasqueelcdigovbrequierelacompradeunpaquetedesoftwaredeterceros(tambinademsdevisualstudio).
VisualBasic
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 8/18
ElcdigodeVisualBasicqueheescritoestdisponiblecomounpaquetellamadovb_laser_ranger.zipenlaparteinferiordeestapgina.
Paraqueestecdigofuncione,necesitarelVideoOCXcomponenteActiveXinstaladoensuequipo
Elcdigoquedescribelasfuncionesqueseencuentranenelformularioprincipalseveacontinuacin:
PrivateSubexit_Click()"Slosiseejecuta...Si(Timer1.Enabled)Acontinuacin,Timer1.Enabled=False'CronmetroVideoOCX.StopVideoOCX.CloseEndIfFinEndSub
PrivateSubStart_Click()'InitVideoOCXControl,asignarmemoriayempezaraagarrarSi(NoTimer1.Enabled)EntoncesStart.Caption="Stop"'mensajesdeerrorinternoDeshabilitarVideoOCXVideoOCX.SetErrorMessagesfalsosControlInitSi(NoVideoOCX.Init)Entonces'Initfallado.MostrarmensajedeerrorysubfinalMsgBoxVideoOCX.GetLastErrorString,vbOKOnly"VideoOCXError"FinMs
Traducir
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 9/18
'Asignarmemoriaparacontroladordeimagenmundialcapture_image=VideoOCX.GetColorImageHandle'Result_image=VideoOCX_Processed.GetColorImageHandleTimer1.Enabled=True'Iniciartemporizadorcaptura"IniciarelmodoCapturaSi(NoVideoOCX.Start)Entonces'Iniciofall.MostrarmensajedeerrorysubfinalMsgBoxVideoOCX.GetLastErrorString,vbOKOnly"VideoOCXError"FinEndIfEndIfMsStart.Caption="Inicio"Timer1.Enabled=False'CronmetroVideoOCX.StopVideoOCX.CloseEndIfEndSub
PrivateSubTimer1_Timer()'TemporizadorparacapturarmanejavideoOCXToolsMatrizDimcomovarianteDimaltura,anchuraAsIntegerRDim,cAsIntegerMax_rDim,max_cAsIntegerDimmax_redAsIntegerDimganancia,offsetcomovarianteDimh_cmcomovarianteGamaDimAsIntegerDimpixels_from_centerAsInteger
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 10/18
'ParmetrocalibradoparapixelalaconversindistanciaGanancia=0,0024259348offset=0.056514344h_cm=5.842max_red=0'CapturarunaimagenSi(VideoOCX.Capture(capture_image))Entonces'Capture_imageVideoOCX.Show'InicializacintransformacinMatrixmatriz=VideoOCX.GetMatrix(capture_image)altura=VideoOCX.GetHeightwidth=VideoOCX.GetWidth'Cdigodeprocesamientodeimagen'Elpuntolsernodebeservistaporencimadelafilacentral(conunpocodepad)Parar=altura/220alaaltura1'Nuestraconfiguracinfsicasecalibraomenosparaqueellser'Puntoenlascolumnasdelmedio...nitemolesteslookngdemasiadolejosParac=ancho/225Paraanchura/2+24"Busqueelvalormsgrandedepxelesdecolorrojoenlaescena(lserrojo)Si(matriz(c,r,2)>max_red)Entoncesmax_red=matriz(c,r,2)Max_r=rmax_c=c
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 11/18
EndIfSiguientecSiguienter'Calculaladistanciaparaelpuntolserdelamediadelfotogramapixels_from_center=Max_r120
'Calculagamaencmenbaseaparmetroscalibradosrango=h_cm/Tan(pixels_from_center*ganancia+offset)
'Imprimirpuntolserfilaycolumnaposicinalapantallarow_val.Caption=Max_rcol_val.Caption=max_c'Intervalodeimpresinalseriluminadaobjetoalapantallarange_val.Caption=gama"DibujaunalneaverticalrojaparaintersectarobjetivoParar=0Paraaltura1matriz(max_c,r,2)=255Siguienter"DibujaunalneahorizontalrojaparaintersectarobjetivoParac=0Paraancho1matriz(c,Max_r,2)=255SiguientecVideoOCX.ReleaseMatrixToImageHandle(capture_image)EndIfCapture_imageVideoOCX.Show
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 12/18
EndSub
Lascapturasdepantalladeestecdigosepuedeveracontinuacin:
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 13/18
VisualC++
vacoCTripodDlg::doMyImageProcessing(LPBITMAPINFOHEADERlpThisBitmapInfoHeader){ //DoMyImageProcessing:Esteesellugardondequiereescribirsupropiocdigodeprocesamientodeimgenes //Tarea:Leerelvalordeescaladegrisesdeunpixelyelprocesoenconsecuencia
unsignedintW,H;//anchurayalturadelfotogramaactual[pxeles] intfilasinfirmar,col;//filaycolposicionesdepixel ilargosinsigno;//Variabledummyparavectorfilacolumna intmax_rowsinfirmar;//Filadelpxelmsbrillante intmax_colsinfirmar;//ColumnadelpxelmsbrillanteBYTEMAX_VAL=0;//Valordelpxelmsbrillante
//Losvaloresutilizadosparaelclculodeintervalodedatosdeimagencapturados //Estosvaloressonsloparaunaconfiguracinespecficadelacmaraylser
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 14/18
constdobleganancia=0,0024259348;//Gananciaconstanteusadaparaconvertir //Pxeldesplazamientoalnguloenradianes constdoblecompensado=0.056514344;//Constantededesviacin constdobleh_cm=5,842;//Distanciaentreelcentrodelacmaraylserrangodoble;//GamaCalculado intpixels_from_centersinfirmar;//Ubicacinbrillantepxeldelcentro //Noinferiordelmarco Charstr[80];//Imprimirmensaje CDC*pDC;//Contextodedispositivonecesitaimprimirmensaje
W=lpThisBitmapInfoHeader>biWidth;//BiWidth:nmerodecolumnasH=lpThisBitmapInfoHeader>biHeight;//BiHeight:nmerodefilas para(fila=0;fila
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 15/18
para(fila=0;fila
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 16/18
ordenador.Losentimos,peroustedestensupropiaparaencontrarambos.
Acontinuacinsepresentandosejemplosdelacmarawebconsedetelmetrolserenaccin.Tengaencuentacmosevequehaydospuntosdelserenelsegundoejemplo.Esta"luzparsita"escausadoporlosreflejosinternosenlacmara.Elpuntoreflejadopierdeintensidad,yaquerebotadentrodelacmarademaneraquenointerfieraconelalgoritmoquedetectaelpxelmsbrillanteenlaimagen.
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 17/18
TrabajoFuturo
Unamejoraespecficaquesepuedehaceraestacmarawebbasadotelmetrolseresproyectarunalneahorizontalenlugardeunpuntosobreunadiana.Deestamanera,podramoscalcularelrangoparacadacolumnadelaimagenenlugardeslounacolumna.Unaconfiguracindeestetiposeracapazdeserutilizadoparalocalizarreasdealcancemximocomolugaresqueunvehculopodradirigirhacia.Delmismomodo,lasreasdealcancemnimoseranidentificadoscomoobstculosquedebenevitarse.
Seguimiento
-
2/3/2015 WebcamBasedDIYtelmetrolserToddDanko
https://sites.google.com/site/todddanko/home/webcam_laser_ranger 18/18
Sobrelabasedemuchaspreguntasycomentariosqueherecibido,parecequemuchagentehatratadodeduplicaresteesfuerzo.Porfavor,tengaencuentaqueestetrabajofuehechooriginalmenteantesde2004(unamaneramuchotiempoatrs).Siyotuvieraquehacerlotodo,megustarautilizarOpenCVparaloscomponentesdelavisin.Sitengoalgomsdetiempo,voyacrearunejemployquelopongaaqu.
SesinIniciar | ActividadRecientedelSitio | INFORMARdelaUSOinadecuado | ImprimirPgina | Conlatecnologade GoogleSites
LaserRange.zip ToddDanko, (2006k) 27deagosto2009,18:30 laversin1 tripodDlg.cpp ToddDanko, (15k) 27deagosto2009,18:31 laversin1 vb_laser_ranger.zip ToddDanko, (9k) 27deagosto2009,18:31 laversin1
Comentarios
NoTienesPermisoparaAnadircomentarios.