Webcam Based DIY telémetro láser - Todd Danko.pdf

18
2/3/2015 Webcam Based DIY telémetro láser Todd Danko https://sites.google.com/site/todddanko/home/webcam_laser_ranger 1/18 Todd Danko Proyectos recientes Otros Proyectos y tutoriales Stepper Motor Appliance Webcam Based DIY telémetro láser Mapa del sitio Contacto Escríbame Proyectos Recientes > Webcam Based DIY telémetro láser Introducción Hay muchos fuera de la gama estante encontrar componentes disponibles, incluyendo telémetros ultrasónicos, infrarrojos, e incluso láser. Todos estos dispositivos funcionan bien, pero en el campo de la robótica aérea, el peso es una preocupación primordial. Es deseable obtener la mayor funcionalidad de cada componente que se añade a una célula. Helicópteros robótico en miniatura, por ejemplo, puede llevar aproximadamente 100 g de carga útil. Es posible realizar tareas de visión artificial, como la identificación de obstáculos y la evitación de que el uso de una cámara web (o mini cámara inalámbrica interfaz con un ordenador a través del adaptador USB). Mejor aún, dos cámaras web pueden proporcionar la visión artificial estéreo mejorando así la evasión de obstáculos porque la profundidad se puede determinar. El inconveniente de este supuesto es la adición de el peso de una segunda cámara. Esta página describe como un puntero láser de mini se puede configurar junto con una sola cámara para proporcionar una visión mono máquina con información de distancia. Este proyecto se basa en gran medida de un tutorial encontrado aquí Teoría de operación El siguiente diagrama muestra cómo la proyección de un punto de láser sobre un objetivo que está en el campo de visión de una cámara, se puede calcular la distancia a ese objetivo. La matemática es muy simple, por lo que esta técnica funciona muy bien para aplicaciones de visión artificial que necesitan para funcionar rápidamente. Buscar en este sitio

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.