23 abril 2017

Una nota técnica



El problema que no me dejaba dormir
Con el Tomás Jr. lo habíamos discutido antes, la cantidad de datos que captura el GPS de la Gopro es enorme porque no hace una simple triangulación de antenas celulares sino que trabaja con los satélites, igual que los Garmin y otros equipos profesionales: además de la posición captura datos sobre velocidad, altura, fuerza G y mucha otra información exótica que se aprovecha apenas en los relojitos que podemos usar con la aplicación Quick que entrega Gopro.

Lo que más me obsesionaba era traspasar los datos a un archivo kms, que es el formato que lee Google Earth y de ese modo poder superponer las trayectorias en los excelentes mapas satelitales que tenemos hoy disponibles. Por ejemplo dejar marcado el recorrido del video anterior en el mapa satelital de Google Earth, sabía que podía hacerse pero no se me ocurría como.

Anoche me amanecí buscando, tenía que haber alguna manera de extraer los datos de GPS que Gopro incrusta en alguna parte dentro de los videos. Recurriendo a San google me encontré que yo no era el único que buscaba lo mismo, eran cientos de personas rompiéndose la cabeza sobre como extraer los metadatos del video. Lo peor es que Gopro mantiene un curioso y hermético silencia en ese tema, lo que provocaba furia y frustración entre los usuarios de los foros oficiales de soporte.

Algo sobre la historia y el diseño
Gopro es una empresa que nació en California, un típico emprendimiento tecnologico de Silicon Valley que ha hecho millonario a su dueño Nicholas Woodman. El concepto está basado en las selfies: Woodman se dio cuenta que el fenómeno de las selfies iba a crecer mucho y se le ocurrió que los tipos que hacen deportes como surf o ciclismo iban a demandar ya no fotos, sino videos. En base a eso fue el diseño original cuyas genialidades incluyen quecabe en la palma de la mano, pesa unos pocos gramos y además tiene una calidad de imagen muy cercana -a veces superior- a muchas cámaras grandes y profesionales.

La Gopro es muy cara no solo por el valor de marca, sino porque sus especificaciones técnicas siempre han sido impresionantes. Apenas apareció surgieron las competidoras chinas, desde las que cuestan un par de dólares hasta las SJ-400 que cuestan algo más de 100 dólares, pero la gran diferencia es en las especificaciónes técnicas, la calidad del hardware y el software usados. La Gopro Hero 5 agregó funciones como el GPS real, que puede ser lo que le de ventaja por un tiempo sobre sus muchas competidoras de menor precio. Otra cosa interesante del diseño es la visión de Woodman en centrarse en los contenidos, como dice en una entrevista:

Aunque GoPro esencialmente hace cámaras, Woodman ve a su compañía de una manera mucho más amplia. “Creemos que somos una compañía que facilita crear contenidos”. “Nuestros clientes están subiendo a YouTube cerca de 6,000 videos al día, etiquetados y descritos como GoPro”, añadió. “Facilitamos a las personas apasionadas alrededor del mundo capturar y compartir experiencias de vida en forma de contenido atractivo”

Pese a todas estas genialidades del diseño, que le dan grandes ventajas tácticas, la compañía de Woodman sigue el modelo de Apple, consistente en generar clientes fanáticos y cautivos, dispuestos a pagar mucho por cada mejora y a buscar siempre "el próximo modelo" como hace Apple con los Iphone. Esto ha llevado a la compañía a tener prácticas irritantes para los clientes al ocultar información para desalentar los desarrollos Open Source, hacer accesorios no estandarizados, etc. Yo creo que es cuestión de tiempo que aparezca una Gopro de los pobres, en Open Source con las mismas o mejores prestaciones, a menos precio y más escalable, tal como hoy los celulares chinos One Plus son mucho más poderosos que los Iphone y bastante más baratos.

Volvamos al problema
Pero volvamos a lo que me tenía con insomnio. Busqué y busqué hasta que encontré dos programas que podían extraer los metadatos de los videos, el más sencillo era Dashware, que al parecer fue desarrollado por Gopro pero sin usar el nombre de la marca (siempre ocultando) y permitía cambiar los indicadores desde una gran biblioteca para usarlos en imágenes desde avión, barcos, etc. EL velocímetro redoondo del video lo hice usando ese programa. La gracia es que en una de sus carpetas, guardaba un archivo CSV (comma separated values) que obviamente debía ser el que contenía todos los datos del GPS ¡Bingo! claro que tenía los datos.

Luego bastaría convertir el archivo CSV a kms que es el formato que lee Google Earth, hay muchas aplicaciones online que hacen gratis esa conversión. Pero no era tan sencillo. Al convertir a kms y abrirlo con Google Earth me salía una trayectoria que atravesaba la mitad de la tierra, en lugar del modesto viaje entre el cementerio y mi casa.

¿Que pasaba? Que el CSV generado por la Gopro tenía muchísima información adicional, yo solo necesitaba latitud, longitud y altura ¿como iba a "podar" todos los datos que estaban sobrando? Ese era un trabajo especial para Python, pero tendría que conocer el significado de cada columna del formato Gopro y su orden ¡demasiado trabajo!

Eureka
Finalmente hoy en la mañana di con la solución, después de mucho buscarla, bastante escondido en un foro de soporte, encontré un software genial, Open source, hecho por un aficionado, que separa los metadatos en cuatro archivos limpiecitos: aceleración, GPS, giroscopio y temporización. Gracias a eso y usando una página para convertir CSV a kml como esta


Pude obtener el kml que me permitió colocar en el mismo foro orgullosamente mi solución, miren:


La trayectoria está marcada con más de 6000 marcadores, me imagino que es uno por cada frame individual, se puede ver en la densa línea amarilla donde se amontonan los miles de marcadores, supongo que con Python no sería difícil eliminar muchos de ellos para no tener una línea tan densa, por ejemplo dejar un marcador por segundo, en lugar de veinticuatro, tal vez más adelante lo haga. Por ahora disfruto con mi nuevo descubrimiento y empezaré desde ahora a buscar aplicaciones.

10 comentarios:

  1. Si entiendo bien ( lo que es poco probable :-) ) un archivo bruto, salido tal cual de maquina, y publicado donde sea, tiene datos del lugar, trayecto, velocidad etc.
    O, por ejemplo, youtube emascula esos datos al publicar.
    Las implicancias en privacidad pueden ser complicadas para los que no mantienen una intachable conducta, como por contraste la tienen los contertulios.
    ¿Puede anularse el GPS, como en los celulares,al menos para un usuario comun?

    ResponderBorrar
  2. Wilson, no hay problema de privacidad, el GPS se puede deactivar y activar desde el menú de la cámara. Lo que hace es asociar A CADA CUADRO del video grabado un montón de datos como la localización, la temperatura, aceleración, altura, fuerza g y muchos más datos (creo que son más de 26 variables en el metadata original), o sea por cada segundo de video se graban entre 24 y 200 series de esas variables, es una cantidad enorme de información. Estos datos son incrustados en el archivo de video y ya un astuto hizo la ingeniería reversa para recuperar en cuatro archivos la información más importante (aceleración, gps, giroscopio y temperatura), esto lo entrega en archivos de texto claro. El archivo de GPS se puede transformar en un kml que muestra todos esos miles de marcadores con una precisión asombrosa sobre el mapa satelital de Google Earth. Lo acabo de probar con un video del triángulo y la resolución es de ¡2 metros! es impresionante, la marca se coloca a 2 metros de donde estaba yo.

    ResponderBorrar
  3. Esto ofrece una utilidad enorme que hasta ahora no existía -no al menos con tanta facilidad). Imagina por ejemplo en el incidente de la frontera con los bolivianos, si hubiesen llevado Gopro 5 se habría podido mostrar en el juicio sobre el Google Earth la ubicación exacta de donde fueron los hechos respaldados por el video, o sea video y ubicación calzados sobre el Google Earth!

    Lo mismo sería sumamente útil en los procedimientos policiales, cada radiopatrulla debería tener una Gopro de estas, sería un control excelente y agregaría un inestimable medio de prueba de los procedimientos, geo localizándolos

    ResponderBorrar
  4. Vicente Rodriguez24 abril, 2017 00:15

    Felicitaciones, te pasaste Tomas!! Me apasiona la informática también, y google street view, earth son grandes herramientas...
    Tengo en mi auto hace unos días instalada una cámara muy simple (china)
    Me costó 15mil pesos, que graba mis viajes, principalmente la puse por accidentes o choques para tener una prueba gráfica, pero tu cámara es increíble toda la información que captura, una consulta: graba de noche?
    Saludos desde el sur de Chile.

    ResponderBorrar
  5. Hola Vicente, yo también fui de los primeros en comprar una cámara china de unas 20 lucas, graban a 1080p en una calidad bastante buena si las condiciones de luz son adecuadas, yo quiero ponerla en la puerta como cámara de seguridad, o también podría ser en el auto como cámara trasera, estoy considerando ambas alternativas, porque hay sistemas completos de cámaras de seguridad bien baratos ahora y mucho más completos, con unas 40 lucas se puede armar un buen sistema.

    Yo usé bastante la camarita china, le saqué el jugo, la desarmé entera y la pude volver a armar (cosa que casi nunca me pasa). Tiene dos problemas principales, el lente ojo de pez es fijo (no se puede grabar en modo lineal o estrecho) y no tiene balance de blancos, así que en condiciones de iluminación raras distorsiona los colores dando un tono azul o anaranjado, con buenas condiciones de luz funcionan perfecto, yo hice varios videos en Lima con mi cámara china.

    La Gopro como toda cámara graba bien en la oscuridad hasta cierto punto: cuando la luz baja ajusta automáticamente la exposición para dejar pasar más luz, lo que tiene el efecto de perjudicar la nitidez (a menos que se use un trípode), también sube el ISO automáticamente hasta 3200 si es necesario y eso pone ruido en el video (se ve como granulado) cuando lo sube mucho, lo otro que el balance de blancos automático ya no funciona así es que hay que fijarlo manualmente para que no quede azulado o anaranjado. Eso todavía no lo manejo bien pero se supone que son cosas que pueden corregirse, he visto videos muy buenos en la oscuridad, pero hay que manejar bien los seteos

    ResponderBorrar
  6. Una pregunta Tomás, quizá lo hayas puesto en otro post y no lo he leído...¿cuánto te ha costado la Gopro? Es para comparar el precio de Chile con los precios europeos.

    ResponderBorrar
  7. Me costó un ojo de la cara Adelino, la compré por Ebay en 380 dólares pero por una empresa nacional que pagaba flete y derechos terminé pagando más de 600 dólares ¡cuando la había comprado vi que en el retail acá en Chile estaba en poco más de 500! Fue la compra más estúpida que he hecho en los últimos años. En Europa creo que está alrededor de los 360-400 euros

    ResponderBorrar
  8. Gracias por la info. Es algo más cara comparada con Europa...pero baratísima si lo comparas con Argentina y Uruguay (tengo conocidos allí). No me extraña la oleada de argentinos que hay cada fin de semana en los pasos fronterizos.

    Por poner algún ejemplo:


    https://tiendas.mediamarkt.es/p/videocamara-outdoor-gopro-hero5-black-4k-12-megapixeles-1341372?gclid=CKqSs9ejvdMCFQWeGwodh0AEMw&gclsrc=aw.ds


    El precio es de una cadena europea de venta de aparatos electrónicos (mediamarkt). Creo que en Alemania sería más barato aún.

    PS: Hay una página muy buena para comparar costes entre ciudades y países, numbeo.com Yo la suelo utilizar mucho cuando tengo que ir de viaje para comparar precios.

    ResponderBorrar
  9. Interesante lo de la GoPro y los chiches "ocultos" que tiene. Son como los celulares, o los notebooks de retail. vienen con una cantidad de chiches y apps que ni sabias que existen y solo los descubres cuando ya estan obsoletos o te dan algun problema, o te baja la curiosidad.

    A pesar de que tengo mi Innovv C1-C2 todavia no le meto mano al firmware para poder ajustar los valores y actualizarlo. en cuanto me haga un tiempo veré que chiches ocultos tiene...

    ResponderBorrar
  10. Adelino, el ideal es encargarla a alguien que viaje pero tienes que esperar la oportunidad. Lo mío fue una compra estúpidamente impulsiva, acá en el retail está a 523 dólares.

    José, los foros de soporte de los usuarios son lo mejor para eso, está lleno de buenos datos

    ResponderBorrar

"Send me a postcard, drop me a line
Stating point of view
Indicate precisely what you mean to say
Yours sincerely, wasting away
Give me your answer, fill in a form
Mine for evermore
Will you still need me, will you still feed me
When I'm sixty-four"