Via Rápida a la Visión Computarizada con SimpleCV

En nuestro tiempo, el campo de la computación visual sigue siendo un área prácticamente inexplorada.

Esta semana hemos comenzado a estudiar una librería que promete ser un empujón de calidad para cualquiera que esté aprendiendo sobre computación visual. Nos referimos a la librería SimpleCV, que abstrae de manera magistral una serie de métodos importantes de la famosa librería OpenCV, haciendo nuestra entrada al mundo de la visión computrizada tan sencillo como decir “Hola Mundo”

Acá les dejo el enlace. Estoy seguro de que no se van a arrepentir:

http://simplecv.org

No olviden compartir en el área de comentarios sus resultados, pruebas, impesiones de SimpleCV

 

–jn

Intel Realsense Robotic Kit con Upboard + ROS

IMG_20170216_190038Recientemente publicamos un primer artículo sobre el kit de robótica de Intel que trae una cámara Real Sense y un Upboard.

Aunque esta segunda entrega es bastante corta, esperamos que abra las perspectivas de nuestros lectores sobre lo que se puede llegar a hacer con uno de estos kits y los sistemas de robótica ROS y las facilidades que tiene para el manejo de cámaras Real Sense.

Paso 1 (30 min)

Comenzaremos diciendo que instalar Ubuntu y ROS en el Upboard es una tarea súperfacil siguiendo las instrucciones en este enlace:

https://software.intel.com/realsense/robotic-devkit-quickstart

Esto incluye

  1. Una revisión de materiales incluidos en el kit
    (!) Van a necesitar un cable HDMI estándar para conectar el video del UP Board a un monitor, un teclado, un ratón y un adaptador WIFI USB.
  2. La descarga de Ubuntu 16.04.1 LTS
    (!) Hoy (FEB18) gracias a las pruebas que está haciendo el profesor Tomás de Camino, vimos que ya la versión de Ubuntu 16.04.1 no está disponible en el enlace oficial que trae la guía de quick start de Intel, sino que fue reemplazada por la 16.04.2. Aunque en la buena teoría deben funcionar igual, en caso de experimientar algun problema con el setup acá les dejamos el enlace oficial a esa versión: 
    http://old-releases.ubuntu.com/releases/xenial/ubuntu-16.04.1-desktop-amd64.iso
  3. La creación de un USB Stick de instalación
  4. La instalación del Ubuntu en el UP Board
  5. La actualización del sistema operativo incluyendo el KERNEL de linux optimizado para el Upboard
    (!) En este paso puede que se necesite configurar los servidores APT de Ubuntu para que use los servidores en Estados Unidos (no en Costa Rica) ya que en CR no están los paquetes de ROS. Para esto se abre el menú de búsqueda de Ubuntu y se digita “Software Updates” y en la casilla “Download From” se selecciona “Server from United States”image
  6. La actualización del software de Real Sense
  7. La instalación del sistema ROS en su versión Kinetic
    (!) ROS es un “meta-sistema operativo” de código abierto para robots, desarrollado por la fundación de robótica de código abierto. Para aprender más sobre ROS pueden seguir este enlace http://wiki.ros.org/ROS/Introduction
  8. Ejecución de un “Nodelet” de ROS para la cámara Realsense R200
  9. La ejecución del programa “RVIZ” para visualización 3D
  10. ¡a celebrar carajo!

Si, eso es todo por ahora.

Intel UPBoard y el kit de robótica Real Sense

69c570f4-7821-42da-a8b7-c0d23bf1b202Esta semana nuestra investigación dio un giro inesperado al encontrarnos por primera vez con una pequeña maravilla que desconocíamos: el kit de robótica Real Sense de Intel, que está basado en un dispositivo (diríamos “compentencia” del Raspberry PI) denominado UP Board.

[Actualización 2/20/2017] El UP Board es un dispositivo fabricado por la empresa AAEON que usa tecnología Intel y está optimizado para las cámaras Real Sense de Intel.

Afortunadamente pudimos conseguir uno de estos kits en la tienda de Intel antes de que se agotaran. Esperamos que pronto estén de vuelta.

El kit que se vende por aprox. $350 más gastos de envío e impuestos, contiene una tarjeta Up Board que prácitcamente del mismo tamaño que una Raspberry PI 3, con 32GB de storage eMMC, 4 GB de memoria RAM de alta velocidad y un procesador Intel Atom de 4 núcleos 1.92 GHz y GPIO de 40 pines y fuente de poder (5V 4A). (Especificación completa)

Siendo que la cámara Real Sense se consigue por $170, la tarjeta UP Board con 4GB RAM, 32GB Storage, nos sale costando aproximadamente $180, más un dongle wifi que necesitamos para conectarlo a Internet ($20)

Pero no nos confundamos; pusimos “competencia” entre comillas por que ¡esta cosa realmente vuela! Pienso que el precio está justificado por el desempeño que presenta y la facilidad con que lo pudimos poner en operación.

Viene optimizado y preparado para correr Ubuntu Linux (tal cual se descarga del sitio de Cannonical), trae un USB3.0  optimizado para la cámara Real Sense R200  que conforma el kit y otros cuatro puertos USB 2.0 más.

Mi experiencia echando a andar este pequeño monstruo fue realmente placentera. Fue cuestión de preparar un USB Stick con una imagen de Ubuntu, bootearlo en el dispositivo e instalar.

Luego de eso instalamos algunas librerías muy interesantes que estaremos detallando pronto en nuestra siguiente entrega, tales como ROS (robot operating system), OpenCV Apps, Optimizaciones del Kernel de Linux para el upboard, etc.

A este punto pudimos instalar todas las librerías necesarias, e incluso instalar y correr Netbeans 8.2 sin ningun impacto en el desempeño del dispositivo.

 

 

Cámara de Seguridad Diferencial RASPBERRY PI 3 – Parte I

En este pequeño tutorial vamos a explorar la forma de crear una cámara de seguridad diferencial. Es decir una cámara que reacciona al comparar matemáticamente dos fotografías constantemente.

Suena complejo, pero gracias a nuestros amigos de ImageMagick en Linux, termina siendo realmente sencillo.

Básicamente queremos tomar una foto como base, luego tomar otra, si esta segunda foto es diferente de la anterior, entonces algo se movió así que guardamos esa segunda foto y reportamos el hallazgo, usamos esta ultima foto como base y repetimos el proceso.

Para lograr esto en una Raspberry PI 3 (desde la cual escribo y programo hoy) vamos a utilizar dos utilitarios:

  1. raspistill: Utilitario de Raspbian que adquiere una foto de una cámara compatible con el puerto para cámara del Raspberry PI.
  2. compare: Utilitario del paquete ImageMagick de Linux que compara dos fotografías para determinar la diferencia matemática entre ellas.

(!) Antes de instalar paquetes adicionales, es importante recordar mantener al dia el sistema operativo mediante los comandos sudo apt update seguido de  sudo apt upgrade

Para instalar imagemagick usaremos: sudo apt install imagemagick

Para tomar una fotografía hay que tener en cuenta lo siguiente:

  1. Si no está habilitada, es necesario habilitar la cámara del Raspberry PI. Para esto se puede usar el Menu de Raspbian > Preferences > Raspberry PI Configuration
    Una vez en la pantalla de configuración, buscamos la pestaña “Interfaces” y nos aseguramos de que la cámara esté en posición “Enabled” y hacemos clic en “OK”
    (!) Es probable que necesite rebootear el Raspberry PI si la cámara estaba deshabilitada.
  2. El comando básico para tomar una foto es este: raspistill -o test.jpeg
  3. Una variante que usaremos más adelante para tomar una foto sin una pantalla de preview es esta: raspistill -nopreview -o test.jpeg

Para comparar dos fotografías usamos el siguiente comando: compare -metric RMSE foto1.jpeg foto2.jpeg NULL:

Así las cosas, el siguiente ejercicio tomaremos dos fotos, y las compararemos.

  1. Tomamos una primera foto: raspistill -o foto1.jpeg
  2. Sin variar la cámara ni la escena, tomamos una segunda foto: raspistill -o foto2.jpeg
  3. Variamos la escena, moviendo un objeto ligermanete y tomamos una tercera foto: raspistill -o foto3.jpeg
  4. Comparamos el resultado de una misma escena: compare -metric RMSE foto1.jpeg foto2.jpeg NULL:
    Esto nos devuelve un valor parecido a este : "2433.9 (0.0371389)".
  5. Ahora comparamos el resultado de la escena movida: compare -metric RMSE foto1.jpeg foto2.jpeg NULL:
    En este caso vemos que la diferencia matemática aumenta: "4396.62 (0.067088)"

Abajo dejo las fotos 1,2 y 3 en orden a manera de ilustración.

En nuestra próxima entrega vamos a estudiar la forma de automatizar este proceso con nodejs.

FIN!


Foto 1 – Base

foto1s


Foto 2 – Misma escena

foto2s


Foto 3 – Escena con variaciones

foto3s