Archivo por meses: agosto 2014

Máquina de marcianitos. Proyecto Pimame/PiPlay (Arcade bartop cabinet)

Uno de los recuerdos de mi infancia fueron las máquinas de marcianitos que había en los bares. De cuando en cuando conseguíamos 25 pesetas y podíamos jugar una partida. Entonces, cuando tenía 12 años, no sabía ni qué eran los juegos Arcade… para nosotros eran las máquinas de marcianitos, y basta. Con el tiempo, evidentmente, los juegos se fuero sofisticando a todos niveles: gráficos, sonido,… Paralelamente, en casa jugábamos al Spectrum, cargando los juegos desde las cintas de cassette. Y entonces llegó la era del PC doméstico que lo cambió todo.va canviar tot

Para los que somos de mi generación (40 y pico), las máquinas de los bares representan todo un mundo de recuerdos y vivencias asociados a un mundo en que la electrónica de consumo lo estaba cambiando todo (relojes digitales, coches teledirigidos, …).

Han pasado muchos años, el mundo de los videojuegos ha evolucionado muchísimo, es una industria tan potente com el cine. Cada vez la gente ve menos televisión y va menos al cine (cosa impensable hace tiempo), y la sociedad en que vivimos se caracteriza por una gran variedad de dispositivos conectados a Internet, con una gran y diversa oferta de ocio.

Una gente al entorno del proyecto MAME (Multi Arcade Machine Emulator,) ha emulado las ROMs originales de aquellas máquinas Arcade a diversas plataformas, concretamente al PC. Una ROM es el chip donde estaba el software (firmware) que hacía correr el juego. Este software en código máquina se puede traducir a líneas de código a otras plataformas y lenguajes de programación. Esto es lo que hacen los emuladores. Por tanto, ahora todo el mundo puede jugar a los juegos de los as ’70, ’80 y ’90 en su PC. I así lo hice hará unos tres años en una máquina Linux, cuando descubrí el proyecto MAME y ya pensé entonces en construirme una máquina Arcade.

En estos tres años también han pasado muchas cosas, y concretamente la eclosión del hardware libre, representado por dos proyectos paradigmáticos como son el Arduino y la Raspberry Pi (entre otros). I lo bueno del caso es que el proyecto MAME se ha portado y optimizado a la plataforma de la Raspberry Pi, con todas las ventajas que esto supone de cara construirse un mueble Arcade (presupuesto, espacio, consumo,…). Esta tarea se ha hecho gracias a Shea Silverman y al proyecto PiMAME, que ahora se llama PiPlay.

Así pues este curso pasado me puse manos a la obra y para el verano ya tenía a punto mi mueble bartop con más de 1000 juegos clasificados por categorías (plataforma, galería, shooter, puzzle, fighting, …) i jugabilidad (preferidos, muy buenos, buenos, malos). El proyecto ha sido muy variado y divertido, e incluye entre otras:

  • Construcción del mueble (cortar las maderas, pulir, pintar,…)
  • Configuración de la Raspberry Pi y de MAME
  • Programación de un front-end propio (más detalles en este post)
  • Interfície joystick-USB. Aunque funciona correctamente esta solución, se ha de explorar la posibilidad de configurar el joystick i los 6 botons sólo con los pines GPIO de la RPi. El resultado sería más sencillo y rápido de implementar.
  • Fuente de alimentación 12V-5V
  • Metacrilato, adhesivos
  • Matriz de LEDs para la markee
  • Pantalla plana, conversor HDMI-VGA
  • Amplificador de sonido. La salia de sonido en la Raspberry Pi no es muy buena, y esto se nota a la hora de amplificar el sonido. En este aspecto faltan más pruebas a ver si hay posibilidad de obtener un sonido más limpio.

Después de muchas horas de trabajo, calculo que el presupuesto es de unos 250 euros. La bona noticia es que hay margen para automatizar/mejorar todo el proceso, por ejemplo utilizando una máquina CNC per cortar las maderas.

Aquí puedes ver el vídeo del mueble acabado.

Para más información:

Script para automatizar la creación de anaglifos 3D

Creo que no había hecho ningún post en este blog sobre mi colección fotográfica de insectos. Esta colección está disponible online en http://arthropoda.joanillo.org. Hace más de dos años y medio que está pública en la red, y en estos momentos consta de unas 2000 fotos de unos 350 insectos identificados (es decir, casi nada). Entre las diferentes opciones que hay en la página web hay la posibilidad de visualizar algunos ejemplares en 3 dimensiones (3D), mediante dos de los métodos comunes: ojos cruzados con pares estereográficos, y anaglifos.

Cryptocephalus aureolusEl método de los ojos cruzados es de los más populares porque no requiere de ningunas gafas ni aparatos. Consiste en poner una al lado de la otra las dos fotos que forman el par estereográfico. A la izquierda ponemos la foto que se corresponde con el ojo derecho; y a la derecha la foto que se corresponde con el ojo izquierdo. La técnica consiste en visualizar la pantalla a medio metro aproximadamente, mirar al punto medio de las dos fotos, enfocar a un punto como si estuviese detrás de la pantalla, y dejar que las dos imágenes se junten solas. Entonces, de forma mágica, aparece la foto en toda su profundidad. Si es la primera vez que lo pruebas puede ser un poco difícil, pero vale la pena intentarlo. Inténtalo con el par estereográfico que se muestra, que se corresponde con un escarabajo de la família Chrysomelidae, concretamente un Cryptocephalus aureolus.

Cryptocephalus aureolusOtro método popular de visualizar imágenes 3D son los anaglifos, en los que hay que utilizar las gafas cyan-rojo (o verde-rojo). Consiste en separar las dos imágenes en sus capas RGB, y eliminar para la imagen izquierda la capa roja; y para la imagen derecha la capa cyan. Esto se puede hacer de forma manual con los programas más populares de edición de fotos como Gimp o Photoshop. Finalmente, volver a juntar las imágenes en una de sola, y visualizarla con unas gafas de colores. La visualización 3D en este caso es muy fácil, es automática con sólo ponerte las gafas. El inconveniente es que el resultado final ha perdido calidad cromática.

En este post lo que hacemos es presentar y explicar el script que se utiliza para automatizar la creación de los anaglifos, tal como se utiliza en arthropoda.joanillo.org. Has de tener en cuenta que este script está pensado para sistemas Linux y está programado en bash script. No puedo dar soporte a otros sistemas operativos, pero la idea es totalmente trasladable. La herramienta principal que se utiliza es la utilidad convert que se encuentra dentro del paquete imagemagick. convert es una utilidad en línea de comandos para manipular imágenes, y que te permite acceder a las capas RGB. Para instalar esta utilidad:

$ sudo apt-get install imagemagick

Si queremos extraer la capa roja de una foto haremos:

/usr/bin/convert left_pic.jpg -separate -channel r left_pic_separate_R.JPG

y si queremos combinar dos fotos haremos:

/usr/bin/convert pic1.jpg pic2.jpg -combine pic_combine.jpg

Con todo esto ya podemos poner todo el script, que de hecho es muy cortito:

#!/bin/bash
#two arguments: left pic and right pic
# ./anaglyph_creation.sh 130609_091940.JPG 130609_091944.JPG

pics_or=./;
pics_anaglyphs=./anaglyph/;
pics_temp=./temp/;

echo $1;
echo $2;

basename=`basename "$1"`;
file_without_ext=${basename:0:13}
file_anaglyph=${file_without_ext}_ana.JPG

#anaglyph creation 
#1.Separate red channel for the left pic, and cyan for the right pic:
/usr/bin/convert $pics_or$1 -separate -channel r ${pics_temp}separate_R.JPG
/usr/bin/convert $pics_or$2 -separate -delete -3 ${pics_temp}separate_GB_%d.JPG #elimina el vermell
#2. Combine modified left and right pics in a new one:
/usr/bin/convert ${pics_temp}separate_R.JPG ${pics_temp}separate_GB_0.JPG ${pics_temp}separate_GB_1.JPG -set colorspace RGB -combine $pics_anaglyphs$file_anaglyph

rm pics_temp/*

Enlaces:
-Pares estereográficos: http://arthropoda.joanillo.org/stereo.php
-Anaglifos: http://arthropoda.joanillo.org/anagliphs.php
-wikipedia: http://en.wikipedia.org/wiki/Anaglyph_3D