{"id":204,"date":"2016-06-08T10:07:07","date_gmt":"2016-06-08T08:07:07","guid":{"rendered":"http:\/\/www.rtbasics.com\/WP_2\/?p=204"},"modified":"2016-06-08T10:10:26","modified_gmt":"2016-06-08T08:10:26","slug":"sensor-de-profundidad-pantilt-1","status":"publish","type":"post","link":"https:\/\/www.rtbasics.com\/WP_2\/archives\/204","title":{"rendered":"Sensor de profundidad. Pan&#038;Tilt 1"},"content":{"rendered":"<body><p><\/p>Estaba yo pensando\u2026 \u00bfC\u00f3mo movemos esto?\n<p>El sensor de profundidad que incorpora el ASUS Xtion tiene un campo de visi\u00f3n de 58\u00ba en horizontal y 45\u00ba en vertical. Esto quiere decir que el sensor observa el espacio que ocupar\u00eda una pir\u00e1mide de base rectangular cuyo v\u00e9rtice estuviera en la lente y que tuviera una amplitud de 58\u00ba en horizontal y de 45\u00ba en vertical, coincidiendo el lado largo de la base de la pir\u00e1mide con la horizontal.<\/p>\n<p><!--more--><\/p>\n<p>Por lo tanto, para componer un escenario m\u00e1s amplio, ser\u00e1 necesario girar el sensor en horizontal y en vertical (pan&amp;tilt) para cubrir la amplitud angular que necesitemos representar y adquirir varias instant\u00e1neas que luego habr\u00e1 que registrar en una \u00fanica nube de puntos.<\/p>\n<p>Para simplificar la visualizaci\u00f3n de los resultados, me planteo como objetivo registrar en una \u00fanica nube un barrido de 180\u00ba en horizontal. Esto cubrir\u00eda una banda del escenario de 180\u00ba en horizontal por 58\u00ba en vertical.<\/p>\n<p>Con este experimento se ensayan todos los recursos y todos los procedimientos necesarios para componer un escenario esf\u00e9rico de 360\u00ba con la excepci\u00f3n del movimiento de tilt.<\/p>\n<p>Nos enfrentamos a dos problemas:<\/p>\n<ul>\n<li>\u00bfC\u00f3mo giramos el sensor? Hay que poner en marcha una plataforma de pan&amp;tilt controlable que sea capaz de mover el sensor alrededor de los ejes vertical y horizontal. Aunque para el experimento objetivo no es necesario el movimiento de tilt, no voy a dejar de poner en marcha la plataforma completa.<\/li>\n<li>\u00bfC\u00f3mo componemos el escenario completo en base a las instant\u00e1neas tomadas desde distintas posiciones? Este ser\u00e1 el problema del siguiente post, pero adelanto que la librer\u00eda PCL nos volver\u00e1 a ayudar con este asunto.<\/li>\n<\/ul>\n<p>Vamos a lo de hoy. Cuando hablo de una plataforma controlable me refiero a que el proceso que va adquiriendo las instant\u00e1neas debe ser capaz de controlar la posici\u00f3n desde la que se est\u00e1 haciendo la foto. Ser\u00e1 necesario articular una manera de que este proceso le diga al dispositivo que controla la plataforma d\u00f3nde debe apuntar.<\/p>\n<p>En la plataforma de pan&amp;tilt, como en cualquier otro sistema de movimiento susceptible de ser controlado se distinguen tres subsistemas:<\/p>\n<ul>\n<li>El subsistema mec\u00e1nico. Es la estructura que va a soportar el sensor y estar\u00e1 dise\u00f1ada de tal manera que permita un movimiento de pan, necesitamos un giro de 360\u00ba alrededor de un eje vertical, y el movimiento de tilt alrededor de un eje horizontal. Para el movimiento de tilt necesitamos un rango de movimiento de unos 120\u00ba desde la l\u00ednea vertical, cuando el sensor apunta al techo, hasta algo por debajo de la horizontal. No ser\u00e1 necesario que se vea el suelo a los pies del sensor.<\/li>\n<li>El subsistema de \u201cpotencia\u201d. Llamemos as\u00ed a la parte que se ocupa de generar el movimiento. No hay grandes requerimientos de capacidad de carga, potencia o incluso precisi\u00f3n, pero hay que buscar algo f\u00e1cil de controlar que quede bien integrado en la parte mec\u00e1nica.<\/li>\n<li>El subsistema de control. Esta ser\u00e1 la parte electr\u00f3nica dedicada a controlar el movimiento. Generar\u00e1 las entradas al sistema de potencia que permiten posicionar la plataforma en el punto necesario en cada momento.<\/li>\n<\/ul>\n<p>Para elegir la plataforma ser\u00e1 necesario considerar estos requerimientos. Adem\u00e1s, hay que considerar el requerimiento omnipresente de la cosa econ\u00f3mica y estar seguro de que dispongo de las herramientas software y hardware necesarias para ponerla en marcha.<\/p>\n<p>Buscando por la web encontr\u00e9 dos alternativas:<\/p>\n<ul>\n<li>La primera es sencilla. Pod\u00e9is verla en la foto de abajo y encontrar m\u00e1s detalles en el\u00a0<a href=\"http:\/\/www.robotshop.com\/eu\/en\/lynxmotion-pan-and-tilt-kit-aluminium.html\" target=\"_blank\">enlace<\/a>.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/lynxmotion-pan-and-tilt-kit-aluminium_2.jpg\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"size-thumbnail wp-image-207 alignnone\" src=\"https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/lynxmotion-pan-and-tilt-kit-aluminium_2.jpg?resize=150%2C150\" alt=\"lynxmotion-pan-and-tilt-kit-aluminium_2\" width=\"150\" height=\"150\" loading=\"lazy\" srcset=\"https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/lynxmotion-pan-and-tilt-kit-aluminium_2.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/lynxmotion-pan-and-tilt-kit-aluminium_2.jpg?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/lynxmotion-pan-and-tilt-kit-aluminium_2.jpg?resize=768%2C768&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/lynxmotion-pan-and-tilt-kit-aluminium_2.jpg?w=800&amp;ssl=1 800w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<ul>\n<li>La segunda es m\u00e1s robusta. Tambi\u00e9n pod\u00e9is verla en la foto y en este <a href=\"http:\/\/www.robotshop.com\/eu\/en\/servocity-spt200-pan-tilt.html\" target=\"_blank\">enlace<\/a>.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/servocity-spt200-pan-tilt-3_2.jpg\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"size-thumbnail wp-image-206 alignnone\" src=\"https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/servocity-spt200-pan-tilt-3_2.jpg?resize=150%2C150\" alt=\"servocity-spt200-pan-tilt-3_2\" width=\"150\" height=\"150\" loading=\"lazy\" srcset=\"https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/servocity-spt200-pan-tilt-3_2.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/servocity-spt200-pan-tilt-3_2.jpg?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/servocity-spt200-pan-tilt-3_2.jpg?resize=768%2C768&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/servocity-spt200-pan-tilt-3_2.jpg?w=800&amp;ssl=1 800w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>Las dos plataformas est\u00e1n adaptadas para usar los servos habituales en los modelos de radiocontrol. Esto me pareci\u00f3 una buena soluci\u00f3n porque son bastante comunes y f\u00e1ciles de encontrar, tienen un precio razonable y son f\u00e1ciles de controlar.<\/p>\n<p>La primera es muy sencilla y barata, pero los servos son parte estructural del sistema mec\u00e1nico. Esto no me hizo gracia porque al ser un primer experimento prefer\u00eda tener aislados los problemas de los dos subsistemas tratando de minimizar las interferencias entre ellos.<\/p>\n<p>La segunda opci\u00f3n es m\u00e1s cara pero, a\u00fan as\u00ed, me pareci\u00f3 aceptable y tiene la ventaja de ser una plataforma m\u00e1s robusta y menos exigente con los servos.<\/p>\n<p>Para continuar con mi experimento elijo la segunda opci\u00f3n. Ya tengo plataforma mec\u00e1nica, ahora tengo que buscar los servos.<\/p>\n<p>Para seleccionar los servos hay que tener en cuenta fundamentalmente dos restricciones:<\/p>\n<ul>\n<li>Su tama\u00f1o y la posici\u00f3n de los soportes que lo sujetan a la plataforma.<\/li>\n<li>Su capacidad de giro.<\/li>\n<\/ul>\n<p>La plataforma seleccionada est\u00e1 dise\u00f1ada para poder sujetar servos del tama\u00f1o m\u00e1s habitual de las marcas HItec o Futaba. No se puede decir que este tama\u00f1o y la disposici\u00f3n de los soportes sea un est\u00e1ndar pero s\u00ed es un factor de forma muy habitual en los servos de radiocontrol.<\/p>\n<p>Para el servo de tilt necesitamos una capacidad de giro de 120\u00ba. Para esta funci\u00f3n selecciono el servo\u00a0<a href=\"http:\/\/www.robotshop.com\/eu\/en\/hitec-hs-485hb-servo-motor.html\" target=\"_blank\">HItec HS-485HB<\/a>, que es bastante com\u00fan y tiene un precio razonable.<\/p>\n<p>Para el servo de pan necesitamos una capacidad de giro de 360\u00ba. Esto ya es m\u00e1s complicado. Estos servos de 360\u00ba, o incluso m\u00e1s, suelen usarse para \u201ccazar la escota\u201d en los barcos de vela de radiocontrol. Suelen ser m\u00e1s grandes de lo normal porque necesitan bastante par para mantener la \u201cce\u00f1ida navegando hacia barlovento\u201d.<\/p>\n<p>Nota del autor: Cazar la escota se refiere a tirar del cabo (la cuerda) que, a trav\u00e9s de un sistema de poleas, cambia la posici\u00f3n de la vela. Navegar en ce\u00f1ida hacia barlovento es navegar contra la direcci\u00f3n del viento en el menor \u00e1ngulo posible. Esto me recuerda mi \u00e9poca de mili en la Armada\u2026\u00a0;-)<\/p>\n<p>Para la funci\u00f3n de pan he probado un servo HItec HS-785-HB comprado en\u00a0<a href=\"http:\/\/www.azormodelismo.com\/\" target=\"_blank\">Azor<\/a>\u00a0como se hac\u00edan antes estas cosas (yendo, preguntando, mirando, tocando\u2026). Este servo tiene un giro de 1260\u00ba (3,5 vueltas) pero no se ajusta al tama\u00f1o de los soportes de la plataforma mec\u00e1nica. Tendr\u00eda que fabricar una placa de adaptaci\u00f3n.<\/p>\n<p>Tambi\u00e9n he probado el servo\u00a0<a href=\"http:\/\/tienda.stockrc.com\/Servo-GWS-S125-1T-de-360\" target=\"_blank\">GWS S125 1T<\/a>.\u00a0Lo he comprado en StockRC, una tienda especializada en drones. Lo usan para mover las antenas direccionales siguiendo al drone. Tiene un giro de 360\u00ba y la ventaja de ser m\u00e1s peque\u00f1o y encajar bien en los soportes de la plataforma. Tiene el inconveniente de ser menos robusto, menos preciso y de peor calidad. Adem\u00e1s, tratando de buscarle los l\u00edmites del rango de movimiento se desengran\u00f3 el potenci\u00f3metro interno de la realimentaci\u00f3n de la posici\u00f3n y segu\u00eda girando sin tope. Lo par\u00e9, lo mov\u00ed en sentido contrario, pero nunca volvi\u00f3 a ser el mismo. Tuve que comprar otro.<\/p>\n<p>Ya tengo soluci\u00f3n para la plataforma mec\u00e1nica y para los servos. Para elegir la electr\u00f3nica de control hay que saber c\u00f3mo funcionan los servos de radiocontrol.<\/p>\n<p>Son servos de posici\u00f3n. Responden con un cambio de posici\u00f3n a un cambio en la consigna de entrada. La respuesta es proporcional a la entrada y, por tanto, tambi\u00e9n es lineal. Tienen una realimentaci\u00f3n interna de la posici\u00f3n que miden con un potenci\u00f3metro conectado al eje a trav\u00e9s de unos engranajes. Esto les permite colocarse en la posici\u00f3n correspondiente a la consigna y mantenerla aunque se aplique una fuerza para tratar de cambiarla. Claro, esto es as\u00ed hasta que se supera el par m\u00e1ximo que es capaz de entregar el servo; despu\u00e9s o se mueve o se rompe.<\/p>\n<p>La se\u00f1al de control del servo de radiocontrol cl\u00e1sico es un tren de pulsos de 5V a una frecuencia de 50Hz. Es decir, un pulso cada 20msec (milisegundos). El ancho de estos pulsos determina la posici\u00f3n del eje del servo. Un ancho de 1500usec (microsegundos) corresponde a la posici\u00f3n de reposo.<\/p>\n<p><a href=\"http:\/\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/posicion_servo.bmp\"><img decoding=\"async\" class=\"alignright size-full wp-image-211\" src=\"http:\/\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/posicion_servo.bmp\" alt=\"posicion_servo\" width=\"299\" height=\"141\" loading=\"lazy\"><\/a>En cuanto al rango del movimiento, los receptores de los equipos de radiocontrol ofrecen\u00a0a los servos un ancho de pulso desde 1000usec hasta 2000usec. A estos anchos de pulso les corresponde una posici\u00f3n del servo de -45\u00ba hasta +45\u00ba, seg\u00fan se indica en el dibujito de al lado.<\/p>\n<p>Este es el motivo por el que los servos habituales tienen documentada una amplitud de 90\u00ba. La realidad es que la mayor\u00eda de estos servos pueden funcionar en un rango de 180\u00ba, seg\u00fan se indica en el dibujo,\u00a0con anchos de pulso desde 600usec hasta 2400usec.<\/p>\n<p>Ya tenemos seleccionada la plataforma mec\u00e1nica, hemos seleccionado los motores y sabemos c\u00f3mo se controlan; nos queda poner en marcha la electr\u00f3nica de control.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/Plataforma_con_servos.jpg\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"aligncenter wp-image-213 size-large\" src=\"https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/Plataforma_con_servos.jpg?resize=640%2C359\" alt=\"Plataforma_con_servos\" width=\"640\" height=\"359\" loading=\"lazy\" srcset=\"https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/Plataforma_con_servos.jpg?resize=1024%2C575&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/Plataforma_con_servos.jpg?resize=300%2C169&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/Plataforma_con_servos.jpg?resize=768%2C431&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/Plataforma_con_servos.jpg?w=1280 1280w, https:\/\/i0.wp.com\/www.rtbasics.com\/WP_2\/wp-content\/uploads\/2016\/06\/Plataforma_con_servos.jpg?w=1920 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>Para evitar el riesgo de aburrimiento lo dejo para el siguiente post.<\/p>\n<\/body>","protected":false},"excerpt":{"rendered":"<p>Estaba yo pensando\u2026 \u00bfC\u00f3mo movemos esto? El sensor de profundidad que incorpora el ASUS Xtion tiene un campo de visi\u00f3n de 58\u00ba en horizontal y 45\u00ba en vertical. Esto quiere decir que el sensor observa el espacio que ocupar\u00eda una &hellip; <a href=\"https:\/\/www.rtbasics.com\/WP_2\/archives\/204\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5,21,20],"tags":[23,7,22,26,31],"class_list":["post-204","post","type-post","status-publish","format-standard","hentry","category-broadcasting","category-depth-sensors","category-sensors","tag-asus-xtion","tag-hard","tag-kinect","tag-pantilt","tag-servo"],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4vaHY-3i","_links":{"self":[{"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/posts\/204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/comments?post=204"}],"version-history":[{"count":7,"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/posts\/204\/revisions"}],"predecessor-version":[{"id":215,"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/posts\/204\/revisions\/215"}],"wp:attachment":[{"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/media?parent=204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/categories?post=204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rtbasics.com\/WP_2\/wp-json\/wp\/v2\/tags?post=204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}