El sensor de profundidad que incorpora el ASUS Xtion tiene un campo de visión de 58º en horizontal y 45º en vertical. Esto quiere decir que el sensor observa el espacio que ocuparía una pirámide de base rectangular cuyo vértice estuviera en la lente y que tuviera una amplitud de 58º en horizontal y de 45º en vertical, coincidiendo el lado largo de la base de la pirámide con la horizontal.
Por lo tanto, para componer un escenario más amplio, será necesario girar el sensor en horizontal y en vertical (pan&tilt) para cubrir la amplitud angular que necesitemos representar y adquirir varias instantáneas que luego habrá que registrar en una única nube de puntos.
Para simplificar la visualización de los resultados, me planteo como objetivo registrar en una única nube un barrido de 180º en horizontal. Esto cubriría una banda del escenario de 180º en horizontal por 58º en vertical.
Con este experimento se ensayan todos los recursos y todos los procedimientos necesarios para componer un escenario esférico de 360º con la excepción del movimiento de tilt.
Nos enfrentamos a dos problemas:
- ¿Cómo giramos el sensor? Hay que poner en marcha una plataforma de pan&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.
- ¿Cómo componemos el escenario completo en base a las instantáneas tomadas desde distintas posiciones? Este será el problema del siguiente post, pero adelanto que la librería PCL nos volverá a ayudar con este asunto.
Vamos a lo de hoy. Cuando hablo de una plataforma controlable me refiero a que el proceso que va adquiriendo las instantáneas debe ser capaz de controlar la posición desde la que se está haciendo la foto. Será necesario articular una manera de que este proceso le diga al dispositivo que controla la plataforma dónde debe apuntar.
En la plataforma de pan&tilt, como en cualquier otro sistema de movimiento susceptible de ser controlado se distinguen tres subsistemas:
- El subsistema mecánico. Es la estructura que va a soportar el sensor y estará diseñada de tal manera que permita un movimiento de pan, necesitamos un giro de 360º 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º desde la línea vertical, cuando el sensor apunta al techo, hasta algo por debajo de la horizontal. No será necesario que se vea el suelo a los pies del sensor.
- El subsistema de “potencia”. Llamemos así a la parte que se ocupa de generar el movimiento. No hay grandes requerimientos de capacidad de carga, potencia o incluso precisión, pero hay que buscar algo fácil de controlar que quede bien integrado en la parte mecánica.
- El subsistema de control. Esta será la parte electrónica dedicada a controlar el movimiento. Generará las entradas al sistema de potencia que permiten posicionar la plataforma en el punto necesario en cada momento.
Para elegir la plataforma será necesario considerar estos requerimientos. Además, hay que considerar el requerimiento omnipresente de la cosa económica y estar seguro de que dispongo de las herramientas software y hardware necesarias para ponerla en marcha.
Buscando por la web encontré dos alternativas:
- La primera es sencilla. Podéis verla en la foto de abajo y encontrar más detalles en el enlace.
- La segunda es más robusta. También podéis verla en la foto y en este enlace.
Las dos plataformas están adaptadas para usar los servos habituales en los modelos de radiocontrol. Esto me pareció una buena solución porque son bastante comunes y fáciles de encontrar, tienen un precio razonable y son fáciles de controlar.
La primera es muy sencilla y barata, pero los servos son parte estructural del sistema mecánico. Esto no me hizo gracia porque al ser un primer experimento prefería tener aislados los problemas de los dos subsistemas tratando de minimizar las interferencias entre ellos.
La segunda opción es más cara pero, aún así, me pareció aceptable y tiene la ventaja de ser una plataforma más robusta y menos exigente con los servos.
Para continuar con mi experimento elijo la segunda opción. Ya tengo plataforma mecánica, ahora tengo que buscar los servos.
Para seleccionar los servos hay que tener en cuenta fundamentalmente dos restricciones:
- Su tamaño y la posición de los soportes que lo sujetan a la plataforma.
- Su capacidad de giro.
La plataforma seleccionada está diseñada para poder sujetar servos del tamaño más habitual de las marcas HItec o Futaba. No se puede decir que este tamaño y la disposición de los soportes sea un estándar pero sí es un factor de forma muy habitual en los servos de radiocontrol.
Para el servo de tilt necesitamos una capacidad de giro de 120º. Para esta función selecciono el servo HItec HS-485HB, que es bastante común y tiene un precio razonable.
Para el servo de pan necesitamos una capacidad de giro de 360º. Esto ya es más complicado. Estos servos de 360º, o incluso más, suelen usarse para “cazar la escota” en los barcos de vela de radiocontrol. Suelen ser más grandes de lo normal porque necesitan bastante par para mantener la “ceñida navegando hacia barlovento”.
Nota del autor: Cazar la escota se refiere a tirar del cabo (la cuerda) que, a través de un sistema de poleas, cambia la posición de la vela. Navegar en ceñida hacia barlovento es navegar contra la dirección del viento en el menor ángulo posible. Esto me recuerda mi época de mili en la Armada… ;-)
Para la función de pan he probado un servo HItec HS-785-HB comprado en Azor como se hacían antes estas cosas (yendo, preguntando, mirando, tocando…). Este servo tiene un giro de 1260º (3,5 vueltas) pero no se ajusta al tamaño de los soportes de la plataforma mecánica. Tendría que fabricar una placa de adaptación.
También he probado el servo GWS S125 1T. Lo he comprado en StockRC, una tienda especializada en drones. Lo usan para mover las antenas direccionales siguiendo al drone. Tiene un giro de 360º y la ventaja de ser más pequeño y encajar bien en los soportes de la plataforma. Tiene el inconveniente de ser menos robusto, menos preciso y de peor calidad. Además, tratando de buscarle los límites del rango de movimiento se desengranó el potenciómetro interno de la realimentación de la posición y seguía girando sin tope. Lo paré, lo moví en sentido contrario, pero nunca volvió a ser el mismo. Tuve que comprar otro.
Ya tengo solución para la plataforma mecánica y para los servos. Para elegir la electrónica de control hay que saber cómo funcionan los servos de radiocontrol.
Son servos de posición. Responden con un cambio de posición a un cambio en la consigna de entrada. La respuesta es proporcional a la entrada y, por tanto, también es lineal. Tienen una realimentación interna de la posición que miden con un potenciómetro conectado al eje a través de unos engranajes. Esto les permite colocarse en la posición correspondiente a la consigna y mantenerla aunque se aplique una fuerza para tratar de cambiarla. Claro, esto es así hasta que se supera el par máximo que es capaz de entregar el servo; después o se mueve o se rompe.
La señal de control del servo de radiocontrol clásico 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ón del eje del servo. Un ancho de 1500usec (microsegundos) corresponde a la posición de reposo.
En cuanto al rango del movimiento, los receptores de los equipos de radiocontrol ofrecen a los servos un ancho de pulso desde 1000usec hasta 2000usec. A estos anchos de pulso les corresponde una posición del servo de -45º hasta +45º, según se indica en el dibujito de al lado.
Este es el motivo por el que los servos habituales tienen documentada una amplitud de 90º. La realidad es que la mayoría de estos servos pueden funcionar en un rango de 180º, según se indica en el dibujo, con anchos de pulso desde 600usec hasta 2400usec.
Ya tenemos seleccionada la plataforma mecánica, hemos seleccionado los motores y sabemos cómo se controlan; nos queda poner en marcha la electrónica de control.
Para evitar el riesgo de aburrimiento lo dejo para el siguiente post.