Construyase su propio espejo inteligente


Ha sido famoso la noticia  de un ingeniero de software de Google(Max Braun,)  que ha construido su propio espejo  casero  inteligente para su cuarto de baño ,mientras está esperando que llegue algo similar en  el mercado ,de modo que decidió hacerlo el mismo  en su tiempo libre registrando  todos los detalles de construcción sobre la plataforma Medium.com.
Es posible que haya visto un espejo inteligente casero antes, pero el diseño de Braun ha resultado ser un elegante espejo  con  Android con un acabado final que nos  recuerda directamente a la ciencia ficción. Se utiliza un espejo de dos vías, un panel de visualización, una tarjeta controladora, además de un montón de componentes y suministros de arte y manualidades. Usando una combinación de Android y las API de pronóstico del tiempo, así como una alimentación por  RSS , creó este panel de información de vidrio,siendo sólo un milímetro de espesor  y colocando la pantalla en una capa entre el cristal del espejo de dos vías y la puerta del gabinete de la medicina.

 

mirror

El panel de la pantalla es bastante impresionante. Se puede ver la fecha y la hora a la derecha donde su cara sería. A la izquierda, se puede ver el tiempo actual y un pronóstico de 24 horas con algunos titulares de las noticias recientes de abajo. En su mayor parte, los iconos y el texto son en blanco y negro para evitar ser  sea demasiado distraído.
Otros conceptos que esta barajando son el tráfico , recordatorios y básicamente cualquier cosa que tenga una tarjeta de Google Now pues la idea es que no sea necesario para interactuar con esta interfaz de usuario:en su lugar, se actualiza automáticamente y hay una interfaz de búsqueda por voz abierto para cualquier cosa que se nos ocurra.

espejonew

A pesar de su apariencia Impresionante, Braun todavía lo llama  prototipo. Si nos fijamos en el interior del espejo,esta construido en base a un Amazon Fire TV Stick corriendo Android APK ,el cual gobierna el UI(Interfaz de Usuario).
Precisamente en este punto es donde encontramos más problemas, ya que no es lo mismo la información condensada en un smartphone o incluso una tablet, que información dividida y bien presentada  para poder leerse desde lejos: ahí es donde la FireTV y su interfaz para televisores encaja a la perfección

Además de eso dispone de cables para conectar los dispositivos, LED para mostrar avisos y un HDMI para la imagen. Los resultados son muy llamativos pues podemos ver todos los datos, el tiempo, las notificaciones… e incluso interactuar desde la distancia con nuestro móvil ya que podemos enviar información a la Fire TV.
El autor escribió la Interfaz de Usuario mediante unos pocos cientos de líneas de código y ademas  esta experimentando con diferentes dispositivos como Chromecast, reproductor Nexus, y recientemente Amazon TV Stick.

El espejo puede incluso escuchar sus preguntas con la función de búsqueda por voz en la Aplicación Móvil de Google.

Este es un proyecto increíble y esperamos ver más de estos  ya industrializados  en el próximo CES, pero mientras  haya productos  similares  en el mercado  se puede obtener un resultado muy  parecido al espejo de Braun  con los siguientes componentes:

  • Un smartphone o por dimensiones mejor una tableta Android  que ya no usemos ( por ejemplo porque se le haya roto el digitalizador)
  • Un espejo de dos direcciones
  • Papel negro,bolígrafo, tijeras, pegamento,adhesivos de doblecara, clavos,etc

 

HannahMitt en su proyecto de Github, y   EvanCohen     han obtenido resultados parecidos que resumimos ahora: ambos se basan en el  uso de  la aplicación de Mirror Home que deberemos instalar  en nuestro dispositivo Android.

Tras instalarla ,deberemos ajustar el brillo al máximo para que se vea claramente, eliminar el ahorro de energía  y  desinstalar  el resto de aplicaciones pues lo ideal es  mantener el dispositivo lo más ligero posible para consumir el mínimo.
pantala1
Esta app  le puede decir las  noticias, comprueba su estado de ánimo, y le muestra los cómics: todas esta información esta disponible mientras  usted comprueba su cabello o se afeita.Esta aplicación es inusual pues como hemos dicho esta pensada  para usarla  detrás de un espejo de acrílico de dos vías.

La información que muestra esta app :

  • Día, hora y pantalla de tiempo
  • Recomendaciones Ciclismo
  • Oscilaciones bursátiles
  • Mensajes edificantes sobre la base de sonrisas cara
  • XKCD de hoy
  • Siguiente evento del calendario
  • Top titular de la noticia

Atención ,muchas de las funciones están escritos para mostrar sólo hasta cuando son más relevantes.Si encuentra errores puede reportarlos  aqui ( el repositorio Github del proyecto)

pantala2  pantal3

Instalada esta app, debemos medir la tableta y en el papel negro recortamos para cubrir todo el tamaño del espejo excepto donde vaya el móvil o la tablet.  Enganche  ahora  el papel negro con el espejo, ajústelo y deje un tiempo para que se seque.

Coloque con pegamento un trozo de papel tres veces más gordo que la tableta en cada una de las esquinas del espejo. Ahora  puede colocar los adhesivos en la parte superior e inferior y presione para que quede compacto.

Introduzca la tableta Android justo en el hueco que queda y conéctelo para que no se apague rápidamente(con más cinta adhesiva podemos ocultar los cables.

Ya puede fijarlo a la  pared, vigilando no dañar el propio espejo.

Si tiene dudas en el siguiente vídeo podemos ver todo el proceso:

Por cierto para terminar , esta idea no es sólo válida  para el espejo del baño, también podría servir para los espejos de los ascensores, los espejos de los retrovisores ,etc ,

 

Fuente aqui

Cómo eliminar las animaciones y el sonido en Android


Seguramente, si  le encanta personalizar su  terminal Android, seguramente ya haya instalado un launcher para cambiar los iconos y mucho más. No obstante, ¿ha probado alguna vez a cambiar la animación de inicio o de apagado  de su dispositivo? ¿ha probado alguna vez a cambiar el sonido de la animación de inicio o de apagado  de su dispositivo?En este post  intentaremos  explorar todas estas vías de personalización.

 

Para aquellos que no conozcan qué es la animación de inicio, se trata básicamente de esa una animación compuesta  de una serie de imágenes similares  que se reproducen en una secuencia establecida   y  que suele aparecer cuando encendemos nuestro smartphone o tableta con Android.  Lógicamente la animación de apagado,por analogía  se trata básicamente de otra corta animación  de una serie de imágenes similares  que también  se reproducen en una secuencia establecida y que aparece cuando apagamos nuestro smartphone o tableta con Android.

Además, tanto  en la animación de inicio como la de apagado, indistintamente se puede reproducir un sonido ( físicamente es  un fichero mp3 )que incluso puede ser diferente  respectivamente tanto para el inicio  como para el apagado del terminal.

Obviamente, todas estas posibilidades  provocan que en muchas ocasiones nos cansemos de la secuencia o de la melodía  y queramos cambiarla por algo más personal. En ese post  se muestran las  formas más sencillas de hacerlo, una mediante instalación manual y otra descargándonos una aplicación que lo hará todo automáticamente.

 

Como era de esperar, para realizar todos los pasos necesitaremos acceso root. Para poder acceder  al sistema de ficheros  el shell   Root Browser es una buena opción.

Este programa  tiene un aspecto similar al de la imagen siguiente, donde como el lector puede comprobar  ,os muestra los permisos de cada archivo o carpeta , así como demás atributos :

 Root Browser: captura de pantalla

Es programa,  como puede suponer,   es un  gestor de archivos válido  para los usuarios con permisos de root permitiendo explorar el  sistema de archivos de Android y tomar el control de su dispositivo Android.

Al instalarlo por  primera vez pide  permisos para la instalación de una Caja de herramientas ROM que ha incluido esta aplicación y ha añadido muchas características más.

Las características de este programa  incluyen:

☆ Dos paneles del administrador de archivos
☆ lotes copiar / pegar, zip, tar, borrar, mover cualquier archivo o carpeta
☆ Explora apk, RAR, ZIP y los archivos jar
☆ Cambiar permisos de archivos y la propiedad
☆ Ver y editar cualquier archivo
☆ sqlite explorador
☆ Mover, copiar, renombrar y borrar archivos.
☆ Crear y eliminar directorios (carpetas).
☆ Enviar archivos por correo electrónico.
☆ Agregar nuevos archivos y carpetas en el directorio
☆ Instalar cremalleras mediante la recuperación de relojería
☆ Ejecutar archivos de comandos
☆ Mostrar lista de archivos con imágenes en miniatura de las imágenes.
☆ marcar cualquier carpeta
☆ Abrir archivos y carpetas con otras aplicaciones
☆ Cambiar el tema (doble botón home del grifo)
☆ ordenar por nombre, tamaño y fecha
☆ Extraer archivos individuales desde zip / desde servidores / tarros
☆ Buscar archivos o carpetas

Tras instalar  Root Explorer  desde Google Play  , seleccionaremos en el menú superior y buscaremos la carpeta System, y dentro  de esta accederemos a la supcarpeta Media (o Multimedia, depende del dispositivo en el que esté trabajando). .  Dentro de esta carpeta ,ya en ella  veremos tres subcarpetas   y los  siguientes ficheros importantes:

  • bootanimation.zip
  • bootaudio.mp3
  • shutanimation.zip
  • shutaudio.mp3

Una vez  en esta carpeta , tendremos que asegurarnos de que los permisos de lectura, escritura y ejecución están habilitados. Si lo están, tan solo debemos  pensar  que es lo que deseamos conseguir

 Root Browser: captura de pantalla

1-Eliminar el audio de la animación de inicio:

Haremos una copia de seguridad del archivo  bootaudio.mp3  y lo colocaremos en una carpeta segura a la que tengamos acceso, de forma que si ocurriera algo, siempre podamos volver a dejar todo el sistema como estaba anteriormente.Echa esa copia ,simplemente eliminaremos ese fichero  mediante la opción “Delete” del menú contextual que aparece al mantener pulsado sobre ese fichero

2-Eliminar el audio de la animación de apagado: 

Haremos una copia de seguridad del archivo  shutaudio.mp3 y lo colocaremos en una carpeta segura a la que tengamos acceso, de forma que si ocurriera algo, siempre podamos volver a dejar todo el sistema como estaba anteriormente.Echa esa copia, simplemente eliminaremos ese fichero  mediante la opción “Delete” del menú contextual que aparece al mantener pulsado sobre ese fichero

3-Cambiar  la animación de inicio

Nos dirigiremos de nuevo a la carpeta System de nuestro Android, y dentro de ésta, buscar la carpeta Media  En ella encontrará   un archivo llamado bootanimation.zip, que es el que contiene la animación de inicio. Pues bien, lo primero que haremos será hacer una copia de seguridad del archivo y la colocaremos en una carpeta segura a la que tengamos acceso, de forma que si ocurriera algo, siempre podamos volver a dejar todo el sistema como estaba anteriormente. Después, cambiaremos el nombre del archivo a bootanimation1.zip, por ejemplo.

Ahora, lo único que queda es encontrar una secuencia de animación que nos guste y copiarla en la carpeta anterior con el nombre bootanimation.zip. Estas animaciones pueden encontrarse por Internet fácilmente, aunque existen ya  recopiladas por uno de los miembros de XDA en este hilo.

 

3-Cambiar  la animación de apagado

Nos dirigiremos de nuevo a la carpeta System de nuestro Android, y dentro de ésta, buscar la carpeta Media  En ella encontrará un archivo llamado shutanimation.zip , que es el que contiene la animación de apagado. Pues bien, lo primero que haremos será hacer una copia de seguridad del archivo y la colocaremos en una carpeta segura a la que tengamos acceso, de forma que si ocurriera algo, siempre podamos volver a dejar todo el sistema como estaba anteriormente. Después, cambiaremos el nombre del archivo a shutanimation1.zip, por ejemplo.

Ahora, lo único que queda es encontrar una secuencia de animación que nos guste y copiarla en la carpeta anterior con el nombre  shutanimation.zip. Estas animaciones pueden encontrarse por internet fácilmente, por ejemplo  también recopiladas por uno de los miembros de XDA en este hilo.( simplemente si tiene otro nombre renombrar este a shutanimation.zip).

Método automático mediante aplicación

Si el método manual le parece complicado, puede utilizar esta aplicación –en la que también necesitará acceso root-. Se llama Boot Animations y ofrece más de 300 animaciones que podremos probar fácilmente,pero  me temo  que tendrá que echar mano de su tarjeta de crédito  pues la mayoría  de ellas son de pago.

 

Ejemplos para dotar de mas seguridad para nuestros dispositivos conectados


A pesar de los beneficios que ofrece el Iot ( Internet de las Cosas), ésta también tiene sus propios peligros. La seguridad es el Talón de Aquiles de IoT.
Internet de las Cosas ofrece numerosas ventajas tanto a empresas como a ciudadanos, pero, a su vez, conlleva una serie de peligros  que exigen  precaución para evitar el riesgo catastrófico que suponen los ciberataques

Aunque todos sabemos la gran expansión del IoT , también es cierto  que se ha abierto  una gran puerta al mundo y que  no esta exento de riesgo especialmente para delicuentes cibercriminales que quieren aprovechar las vulnerabilidades detectadas  para su propio lucro personal.

En este contexto desde la empresa Eleven Path , pensando en el símil del pestillo de toda la vida de nuestra puerta que impide la apertura  de esta  desde el exterior si este esta cerrado, crearon Latch ,el cual constituye un servicio en la nube para que los usuarios pueden crear “pestillos digitales” para poner a sus identidades digitales, y que les permita poner ON/OFF las cuentas con tan solo hacer clic en la identidad que quiere desbloquear o bloquear cuando la vaya a utilizar usando uns app desde su terminal móvil.

 Como ejemplo de uso de latch ,en el siguiente vídeo se puede ver cómo desde Telegram se envía un comando determinado  (en el video es “Abracadabra”) a un bot de Telegram que es controlado vía una topología Sinfonier( este ultimo un producto también de Eleven Path).

La Topología comprueba si Latch autoriza ese comando o no a una  placa Intel Edison  al que hay conectado un led . Si Latch está abierto, entonces se enciende el LED, pero si Latch está cerrado, entonces sale un mensaje de Latch Protected.

Hay muchos mas ejemplos de uso de Latch como el de  una hucha regulada mediante esta solución de seguridad, a través de la cual es posible apreciar perfectamente cómo funcionan los ‘pestillos virtuales’.

En esta solución conectan a una placa Intel Edison a Internet   y esta vez  también a un lector Biométrico  en el que los usuarios de esa hucha protegida  grabarían sus huellas dactilares. Una vez reconocidos los usuarios, los padres podrían bloquear, desbloquear con Latch la hucha  , o elegir la cantidad que la hucha dispensa a cada una de las huellas vinculadas. “Rizando mas el rizo” incluso se podría diferenciar cuánto dinero nos da la hucha dependiendo del dedo que utilicemos para autenticarnos.

 

Aunque esta hucha no está concebida con el objetivo de comercializarse, sí que demuestra de una manera clara el potencial de Latch con respecto a Internet de las Cosas enfocandose claramente en hacer mas segura cualquier acción sobre un dispositivo IoT.

Y ahora por ultimo  veamos una demostración   mas sencilla  de cómo se puede integrar Latch usando una Raspberry Pi  para controlar un cerrojo físico desde la aplicación de Latch

El hardware  esta vez es una Raspberry PI  desde la que hemos hablado en numerosas ocasiones en este  blog, la  cual servirá  para realizar las llamadas al servidor de Latch y manejar los elementos físicos que se necesiten; tanto la API de Latch, como la API de la GPIO, están disponibles en diferentes lenguajes comunes,pero en el caso de la Rasberry ,Python es uno  de los lenguajes  mas sencillos .  En el ejemplo el actuador  del cerrrojo es un simple motor  paso a paso con la electrónico necesarias   y  para evitar actuar sobre el cerrojo cuando la puerta no esté cerrada,también han  incorporado  un sensor que permita determinar el estado de la puerta, saber si está abierta o cerrada (por simplicidad ha optado por un simple sensor capacitivo)

Con sólo integrar tres elementos podemos pues poner un Latch a un sistema de acceso físico de nuestra vida real, como una puerta, una ventana, o un cajón; incluso sin que necesiten una llave para su accionamiento. Lo único que necesitamos es:

–          Detectar el intento de acceso.

–          Evaluar el estado del acceso, si está abierto o cerrado.

–          Actuar sobre el acceso para bloquearlo o desbloquearlo.

 En el siguiente vídeo podemos ver el ejemplo funcionando:

Si esta interesado en este link puede obtener el código completo  y adaptarlo  a su propia necesidad

 

Es obvio que existen muchísimos mas ejemplos: por ejemplo usando  Mobile Connect para autenticarnos con la SIM de nuestro móvil , plugins que permiten integrar Latch en el proceso de autenticación en Ruby, en Liferay, en cerraduras electrónicas utilizando DNIe, NFC y apps móviles, y en una centralita Asterik para configurar el funcionamiento de las llamadas,etc

Para todos los interesados, Eleven Paths celebrará este año otra edición de su concurso Plugin Latch, destinado a desarrolladores que quieran trabajar con esta solución de seguridad y crear aplicaciones innovadoras. El premio: 5.000 dólares en Bitcoins que irán destinados al ganador.

 

 

Más información sobre Latch en latch.elevenpaths.com.

Imprima su propio telescopio open hardware y Arduino


Para el proyecto Ultrascope sus creadores se preguntaban si era posible desarrollar un telescopio kit-set que reduciría  el costo de la astronomía de nivel profesional en un orden de magnitud
En otras palabras, un telescopio robot – o ARO – Automated Robotic Observatorio, que permitiría a los astrónomos aficionados  contribuir a proyectos de ciencia ciudadana por un costo reducido radicalmente.

Es cierto que todavía estan refinando el rendimiento del  primer ULTRASCOPE SERIE EXPLORER usando un espejo ARO 3,5 pulgadas que es capaz de realizar fotografía celeste y fotometría por lo que actualmente sus creadores están buscando voluntarios    Beta Testers en todo el mundo para probar el diseño alcance actual y sugerir mejoras.

En el siguiente vídeo podemos  ver el fantástico aspecto que presenta una vez  terminado

 

Este sueño habría sido casi imposible hace tan sólo 24 meses. Los niveles de precisión requeridos para un ámbito de calidad científica fabricante de hecho habrían dado lugar a errores de composición que conspiran para hacer observaciones fustrante para los aspirantes a ciudadanos científicos. Sin embargo, la aparición de las impresoras 3D de bajo costo y de corte por láser, así como las plataformas de microcontroladores como Arduino ,asi como smartphones como el  Lumia 1020- con su CCD de 41 megapíxeles – significa que un proyecto como este ahora es eminentemente posible.

La Open Space Agency (OSA) dice que el grupo quería demostrar que era posible crear un diseño de código abierto barato de producir y que la gente pudiera construir para hacer observaciones científicamente valiosas. El smartphone   adherido al Ultrascope sube automáticamente las imágenes a la nube para construir una biblioteca de imágenes compartidas en línea y así poder crear un mapa colaborativo del firmamento.

Por cierto  ,los archivos 3D ,y el software para Ultrascope estarán muy pronto disponibles bajo una licencia abierta.

Si quiere mas información no dude en consultar su site   aqui

Coche RC Autonomo basado en Rasberry Pi y Arduino


Este proyecto desarrollado por   Zeng Wang  constituye  una versión reducida de un  sistema de auto-conducción ( eso si usando un coche de RC) con una Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45)
, un Arduino ,y  un ordenador exterior con software de código abierto.

El sistema utiliza tanto una Raspberry Pi con la cámara incorporada  oficial  como un sensor ultrasónico como entradas, enviando la informacion a un ordenador  que recibe el video  y se encarga del procesamiento en tiempo real del video capturado por la raspberry Pi mediante  reconocimiento de objetos (señal de stop y semáforos) y medición de distancia  ordenando las señales correspondientes  de la dirección mediante una placa Arduino para el control del coche de RC.

Dos programas ejecutándose en la Raspberry Pi permiten gestionar la información que recibe y la transmiten junto al vídeo de baja resolución (320 x 240) que capta la cámara a otro ordenador vía WiFi .A su vez el mando que controla el coche teledirigido efectivamente sigue dirigiéndolo, pero lo hace a través de las órdenes que le pasa ese ordenador vía USB mediante una placa Arduino.

El código fuente esta disponible en git hub 

El resultado, como puede verse en el vídeo, es espectacular .

 

 

 

El objetivo del autor Wang en efecto era modificar un coche RC  para que fuese capaz de  manejar tres tareas: auto-conducción en la pista, la señal de detención  ,la detección semáforo, y evitar colisiones frontales.

El sistema construido  consta de tres subsistemas:

  • Unidad de entrada (cámara, el sensor de ultrasonidos)
  • Unidad de procesamiento (ordenador) y
  • Unidad de control del coche RC.

Unidad de entrada

Una placa  Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45) al que se conecta un módulo de cámara pi y un sensor ultrasónico-HC SR04 se utiliza para recoger datos de entrada. Dos programas de cliente se ejecutan en Raspberry Pi para el streaming de vídeo en color y datos de los sensores ultrasónicos a la computadora a través de conexión Wi-Fi local.Con el fin de conseguir una baja latencia de streaming de vídeo, el vídeo se escala hasta QVGA (320 × 240) resolución.

Unidad de procesamiento

La unidad de procesamiento (ordenador) se encarga de múltiples tareas: recibir datos de Raspberry Pi, el entrenamiento de la red neural red y la predicción (dirección), la detección de objetos (señal de stop y semáforos), medición de distancia (visión monocular), y el envío de instrucciones via Arduino a través de conexión USB .

Servidor TCP
Un programa de servidor TCP multihilo se ejecuta en el ordenador para recibir cuadros de imagen por streaming y datos ultrasónicos de la Raspberry Pi. Los cuadros de imagen se convierten a escala de grises y se descodifican en matrices numpy.

Red Neuronal
Una ventaja de usar la red neuronal es que una vez que la red ha aprendido, sólo necesita cargar parámetros formados después, y por tanto, la predicción puede ser muy rápida. Sólo la mitad inferior de la imagen de entrada se utiliza para fines de aprendizaje y de predicción. Hay 38.400 (320 × 120) nodos en la capa de entrada y 32 nodos en la capa oculta. El número de nodos en la capa oculta se elige bastante arbitrario.

Hay cuatro nodos en la capa de salida, donde cada nodo corresponde a las instrucciones de control de dirección: izquierda, derecha, adelante y atrás respectivamente (aunque inversa no se utiliza  Wang la ha incluido en la capa de salida).

mlp_half_32-2

A continuación se muestra el proceso de recolección de datos de entrenamiento.Primero cada cuadro se recorta y se convierte en una matriz numpy. Entonces la imagen de tren está emparejado con la etiqueta de tren (entrada humana). Por último, todos los datos y etiquetas de imagen emparejados se guardan en un archivo NPZ. La red neuronal está entrenada en el uso de OpenCV  usando el  método de propagación de vuelta. Una vez que la formación se lleva a cabo, los pesos se guardan en un archivo xml. Para generar predicciones, la misma red neuronal se construye y se carga con el archivo xml capacitado.

collect_train_data

Detección de Objetos
Para este proyecto Wang adaptó el enfoque basado en la forma utilizando clasificadores en cascada Haar basados ​​en características para la detección de objetos. Desde cada objeto se requiere su propio clasificador y sigue el mismo proceso de formación y detección, asi que en este proyecto sólo se centra en señal de stop y la detección del semáforo.

OpenCV proporciona un entrenador, así como detector. Las muestras positivas (contener objeto de destino) fueron adquiridos utilizando un smartphone , y se recortan para que solo el objeto deseado sea visible. Las muestras negativas (sin objeto de destino), por otro lado, se recogieron al azar. En particular, para el semáforo  muestras positivas contienen igual número de semáforos en rojo que semáforos en verde. El mismo conjunto de datos de muestras negativas se utilizan tanto para la señal de stop como para  la formación del semáforo. A continuación se muestran algunas muestras positivas y negativas utilizadas en este proyecto.

pos_neg_samples

sample_tabel

Para reconocer diferentes estados del semáforo (rojo, verde), se necesita un poco de procesamiento de imágenes más allá de la detección.

El diagrama de flujo a continuación resume el proceso de reconocimiento semáforo.

brightest_spot

En primer lugar, entrenado el clasificador en  cascada se utiliza éste para detectar un semáforo. El cuadro delimitador es considerada como una región de interés (ROI). En segundo lugar, la falta de definición de Gauss se aplica dentro de la ROI para reducir ruidos. En tercer lugar, encontrar el punto más brillante en el retorno de la inversión. Por último, los estados rojos o verdes se determinan basándose simplemente en la posición del punto más brillante en el retorno de la inversión.

Distancia de medida
Raspberry Pi sólo puede soportar un módulo de cámara de un pi. El uso de dos cámaras web USB traerá peso extra para el coche RC y también parece poco práctico.Por lo tanto, se elige el método visión monocular.

Este proyecto adaptó un modelo de geometría de detectar la distancia a un objeto utilizando el método de la visión monocular propuesto por Chu, Ji, Guo, Li y Wang (2004).

distante

P es un punto en el objeto de destino; d es la distancia desde el centro óptico hasta el punto P. En base a la geometría de la relación anterior, la fórmula (1) muestra cómo calcular la distancia d. En la fórmula (1), f es la longitud focal de la cámara; ∂ es el ángulo de inclinación de la cámara; h es la altura del centro óptico; (x0, y0) se refiere al punto de plano de la imagen y el eje óptico intersección; (x, y) se refiere a la proyección del punto P en el plano de la imagen. Supongamos O1 (u0, v0) es la cámara de coordenadas del punto de eje óptico y el plano de la imagen de intersección, también supongamos que la dimensión física de un píxel correspondiente al eje X y el eje Y en el plano de la imagen son dx y dy. Entonces:
distance_measure
v es la cámara de coordenadas en el eje y, y se puede devolver en el proceso de detección de objetos. Todos los demás parámetros son parámetros intrínsecos de la cámara que se pueden recuperar de la matriz de la cámara.

OpenCV proporciona funciones para calibración de la cámara. Matriz de la cámara para la cámara de 5MP pi se devuelve después de la calibración. Idealmente, a_x y a_y tienen el mismo valor. Varianza de estos dos valores se traducirá en píxeles no cuadrados en la imagen. La siguiente matriz indica que la lente de longitud focal fija en cámara pi ofrece un razonablemente buen resultado en el manejo de la distorsión de aspecto. Aquí es un artículo interesante discutir la distancia focal de la cámara pi con la acción de la lente y su equivalente de cámara de 35mm.
pi_cam_matrixLa matriz devuelve valores en píxeles y h se mide en centímetros. Mediante la aplicación de la fórmula (3), la distancia física d se calcula en centímetros.

Unidad RC Car Control

El coche RC utilizada en este proyecto tiene un controlador tipo de interruptor de encendido / apagado. Cuando se pulsa un botón, la resistencia entre el contacto pasador y el suelo chip de referencia es cero. Por lo tanto, una placa Arduino se utiliza para simular las acciones sobre el pulsador. Cuatro pines de Arduino se eligen para conectar cuatro clavijas de chips en el controlador, que corresponde a adelante, atrás, izquierda y derecha, respectivamente, acciones. Pines de Arduino envian señales baja indicando a tierra los pines de chips del controlador; Por otro lado el envío de señal de alta indica la resistencia entre los pines de chips y suelo permanecen sin cambios. El Arduino se conecta al ordenador a través de USB. Las salidas de computadora comandos para Arduino utilizando interfaz serie, y luego el Arduino lee los comandos y escribe señales de bajo o alto, simulando acciones de botón de prensa para conducir el coche RC.

Resultados

La predicción de las muestras de prueba devuelve una precisión de 85% en comparación con la precisión de 96% de que las muestras de entrenamiento devoluciones. En la situación de conducción real, predicciones se generan cerca de 10 veces por segundo (velocidad de transmisión de aproximadamente 10 fotogramas / s).

Características Haar por naturaleza son la rotación sensible. En este proyecto, sin embargo, la rotación no es una preocupación ya que tanto la señal de stop y el semáforo son objetos fijos, que es también un caso general en el entorno del mundo real.

drive_test01drive_test02

Para distancia aspecto medición, el sensor de ultrasonidos sólo se utiliza para determinar la distancia a un obstáculo delante del coche RC y proporciona resultados exactos cuando se toma la detección de ángulo adecuado y estado de la superficie en las consideraciones. Por otro lado, la cámara Pi ofrece “suficientemente buenos” resultados de la medición. De hecho, siempre y cuando sabemos que el número correspondiente a la distancia real, sabemos cuándo dejar el coche RC. Los resultados experimentales de detección a distancia usando la cámara pi se muestran a continuación:
camera_measure2

En este proyecto, la exactitud de la medición de la distancia utilizando el enfoque de visión monocular podría estar influenciada por los siguientes factores: (1) errores en la medición de los valores reales, (2) objeto de delimitación variaciones de caja en el proceso de detección, (3) errores en el proceso de calibración de la cámara, (4) relación no lineal entre la distancia y la cámara de coordenadas: la mayor distancia del, más rápido cambio de la cámara de coordenadas, por lo tanto cuanto mayor sea el error.

En general, el coche de RC podría navegar con éxito en la pista con la capacidad de evitar la colisión frontal, y responder a la señal de stop y semáforos en consecuencia.

Segun Wang ,el proceso de entrenamiento fue relativamente sencillo debido a la sencillez del modelo de carretera utilizada, y a eso se le sumaba la detección de objetos gestionada por la plataforma OpenCV (Open Source Computer Vision) que entre otras cosas también permitía calibrar la cámara.

 

Es sin duda  un proyecto apasionante y sorprendente el que ha realizado  Zheng Wang  demostrando  una vez hasta donde  puede llegar  la capacidad de procesamiento  actual  presentes en dispositivos tan reducidos y modestos como lo constituye la gama  de la Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45)

Mas  información en la web del autor