Archivo de la categoría: Arcade

Prototipo de diana de dardos II

Hace unos días construí el primer prototipo de mueble, y ya hicimos unas cuantas pruebas para detectar los dardos. He sacado bastantes conclusiones del primer prototipo, y he llegado a la conclusión de que hay que hacer un mueble nuevo, con unas nuevas dimensiones.

La primera consideración es la distancia de la webcam a la diana. Con la webcam con la que estoy haciendo las pruebas (Creative Live! Cam Sync HD), la distancia de la webcam al centro de la diana ha de ser como mínimo de 46 cm. Otro tema importante es que el plano de la cámara ha de coincidir exactamente con el plano XY de la diana (esta es la manera cómo yo abordo la posición de las cámaras, evidentmente necesitaré dos cámaras, o quizás tres). La iluminación ha de ser uniforme, y sobretodo, la construcción ha de ser sólida. La clave está en que cuando hago la sustracción entre una captura y la siguiente (en la que se ha lanzado un dardo), la diferencia entre las imágenes ha de ser realmente la detección del nuevo dardo (no tiene que haber ningún tipo de ruido).

Ya he estado haciendo pruebas con el nuevo prototipo, y hay que decir que los resultados han sido muy buenos (haré un post y un video próximamente), o sea que puedo afrontar con optimismo la parte más crítica del proyecto.

Com se ve en la imagen, la idea que tengo del mueble es integrar una pantalla de 15 pulgadas justo debajo de la diana, y meterle también tres o cuatro botones que necesitaré para interactuar con el software. La parte del software la tengo bastante avanzada, pero ahora me tengo que centrar más en la detección de los dardos.

Otro tema que tengo que hacer los próximos días es convertir la posición del dardo en la puntuación de la diana. No es necesario decir que con una sola cámara (en el mismo plano XY que la diana) esto es imposible, se necesitarán dos cámaras mínimo.

Prototipo de diana de dardos con buena iluminación

A ver si doy un empujón al proyecto de la diana electrónica. He avanzado bastante en el software. Ya hice pruebas en su día con la librería OpenCV, y ahora es el momento de atacar la parte crítica del problema, que es la detección fiable de los dardos.

Como el problema es bastante crítico, lo primero será tener la diana con unas condiciones de luz bien controladas, con iluminación uniforme y sin sombras. Para ello he montado una estructura de madera con tira de LEDs por los lados, com se ve en la foto. El siguiente paso será conseguir unas webcams decentes. De momento las pruebas las he hecho con una webcam muy sencilla con resolución de 480px. Estoy esperando una webcam de 720px, que a parte de una mejor resolución espero que tenga mejor calidad. Finalmente también dispongo de una RaspiCam NoIR (la cámera de infrarrojos propia de la Raspberry Pi). Esta sí que tiene una buena resolución y calidad, el problema es que no es USB, y por tanto en una Raspberry Pi sólo puede haber una cámara RaspiCam.

La idea inicial es utilizar una Raspberry Pi 3, con dos webcams USB conectadas. Se trata de ir haciendo pruebas e ir controlando todas las variables y causísticas que se puedan dar. Por suerte, en todo este proceso no estoy solo, sino que hay más gente empeñada en la construcción de una diana eletrónica con dardos de punta de hierro. Concretamente el proyecto https://github.com/hanneshoettinger/opencv-steel-darts y la discusión que se genera en el grupo de Facebook de https://www.facebook.com/groups/281778298914107/. Hacía años que no entraba en el Facebook, ya veo que en las próximas semanas seré un asiduo.

Ya iré explicando mis aventuras y avances.

Mesita Pinball, nueva máquina

Por Navidades acabé esta mesa de pinball, en el formato de mesa de café. Ya es la segunda que he hecho siguiendo este esquema, montando una TV de 32». En este caso he incorporado algunas mejoras: la disposición de los botones y la implementación del nudge.

En el proceso de construcción me han entrado ganas de construir una máquina de pinball con dos monitores (la configuración típica de playfield y backlight), o sea que estoy reuniendo las piezas y ya estoy pensando en el diseño. Será uno de los proyectos para este trimestre.

Nueva máquina: recreativa arcade vertical

Esta semana he acabado una nueva máquina, una recreativa vertical. Curiosamente, es la segunda que hago de forma seguida. A mi este formato me gusta mucho, ya veo que no soy el único.

Como novedad, he mirado de perfeccionar el tema del vidrio que protege la pantalla, y el vidrio del marquee retroiluminado. La idea es que con la fresadora se practican unas ranuras en los laterales, y el vidrio va encastado dentro de estas ranuras. El vidrio se pinta por detrás, siguiendo el marco de la pantalla. Queda un resultado muy profesional.

recreativa dardos v0.0.8

Ya tengo ganas de hacer esta nueva recreativa: una máquina de dardos con detección automática de los dardos y su puntuación. Pero no dardos con punta de plástico. Ha de ser un dartboard original de corcho con dardos de punta metálica.

Para la detección de los dardos había la posibilidad de utilizar una malla resistiva y poder posicionar dónde lanzamos los dardos. Pero creo que no sería de fiar. Lo mejor será utilizar visión por computadora con OpenCV. Ya hablaré sobre el tema más adelante.

De momento he estado trabajando con la lógica de los diferentes juegos de dardos que hay. Los más populares son: 301, 501, Count Up, Cricket, Round the Clock, Halve it. Y ahora ya puedo presentar la primera versión de la aplicación, no funcional, que sólo funciona en la consola de Linux. Esta versión simula partidas reales de hasta 4 jugadores: primero escoges el juego; después número de jugadores; después asignas los usuarios; comenzamos a jugar al juego seleccionado pasando por las diferentes rondas (cada ronda son tres tiradas de los dardos). Y así vamos registrando la puntuación hasta que llegamos al ganador.

En las siguientes versiones del programa (escrito en C++) se tendrá que implementar toda la parte de OpenCV, y finalmente toda la parte de SDL (librería gráfica). Todo tendrá que correr en una Raspberry Pi 3, de manera que el desarrollo lo hago en el portátil, pero asegurando la portabilidad en la RPi3. Este tiene que ser el proyecto estrella de este semestre. Es una idea que me persigue de hace tres años. De hecho no es una idea original, hay diversos proyectos que utilizan dardos con punta de hierro y tableros de corcho o fibra, en vez de las dianas electrónicas con puntas de plástico. Quizás ahora el proyecto más similar sería open-cv-steeldarts, que se está desarrollando en Python y que todavía no es plenamente funcional. Le daré una ojeada sobretodo por el tema de la calibración y detección de los dardos.

Enlaces:

Probando mesas B2S en Virtual Pinball

Estos días estoy haciendo una nueva máquina de Pinball, igual que la primera, con configuración FS (FullScreen), es decir, de una sola pantalla. Aprovechando que tengo un ordinador con el que hacer pruebas, en un segundo disco quiero instalar el Visual Pinball con configuración B2S (Backglass to Screen), es decir, con dos pantallas: la principal es el playfield, y la secundaria es el backglass.

Así pues he instalado el Visual Pinball y el VPinMAME, y he mirado los tutoriales para ver cómo funciona esto del B2S. Y ya tengo las primeras mesas funcionando. No es difícil de entender y de implementar, pero lo que sí es cierto es que tendré que ir una por una de las más de 200 mesas que tengo implementadas y clasificadas.

Lo primero que hay que hacer es bajarse los archivos de backglass (con extensión .directb2s). A partir de las dos pantallas que tengo (una de 22» 1920×1080; y otra de 17» 1280×1024), creo el fichero screenres.txt, relacionado con la geometría de las dos pantallas. Y entonces he de ir una por una de las mesas, entrar en el script (el código), y configurar el script para que funcione el modo B2S. Ejecutar la mesa (jugar un rato :-)), comprobar que todo funcione correctamente, y ajustar algún parámetro si es necesario. En particular, las mesas que tienen DMD (Dot Matrix Display), ajustaré la geometría para que el display DMD aparezca en la pantalla del backglass, en una posición que no sea invasiva.

En la configuración FS tengo implementadas 200 mesas. Algunas de ellas no se han portado todavía a B2S, pues no tienen el fichero de backglass, o me han dado problemas. Si tengo tiempo, miraré de implementar algunas mesas más que vea que son divertidas, y así recuperar el valor de 200 mesas implementadas. En el futuro, miraré de introducir el display de DMD, aunque yo siempre tengo un ojo puesto en la simplicidad.

Cuando tenga configuradas las mesas B2S será el momento de hacer el mueble de pinball con dos pantalls, de momento en un formato pequeño: pantallas de 22» y 17», y un mueble lo más pequeño posible que integre estas dos pantallas. Esta será la parte más divertida y original. Además, si tengo tiempo, quiero poner un plunger analógico, un accelerómetro para el nudge, y un monedero. Pero esto será otra historia. De momento ya hay mucha faena configurando las mesas B2S.

Amstrad PCW8256. Probando el emulador Joyce



Estos últimos días he revivido el ordenador Amstrad PCW8256 que teníamos en casa hacia el 1986. Lo utilizaba mi padre para escribir, pero también lo utilizábamos para los trabajos del instituto. Venía con una pantalla monocroma verde, el teclado y la impresora de agujas. Toda la electrónica estaba en el monitor, incluso la placa de la impresora. Y en el monitor también había la disketera de 3», que tenía dos caras.

He instalado el Joyce en la Raspberry Pi, y me ha gustado revivir este sistema. Evidentmente, se ha de escoger la opción de letras verdes, simulando la pantalla de fósforo verde.

El ordenador venía con dos disketes, que eran discos de arranque. El primer era el CP/M, el sistema operativo, desde el que se podía acceder al intérprete de Basic (Mallard Basic). El segudo diskette, tambié bootable, era el Locoscript, que es el processador de textos con que venía. He hecho un documento con LocoScript sobre los ríos de Catalunya, simulando como si fuese un trabajo del insti.

También he jugado un rato al Tetris. El emulador emula muy bien la máquina original. Si quieres jugar al Tetris, has de hacer eject del disket inserido (el CP/M)(el SO ya está cargado en la RAM), y meter el disket del Tetris (Insert). Entonces, ya desde la línea de comandos, ya se puede llamar al ejecutable y jugar al Tetris, com se ve en la imagen.

Qué tiempos aquéllos! El link en la wiki:

Adaptación de los emuladores MAME y gngeo para limitar el tiempo de partida

Tenía pendiente desde octubre conseguir esta funcionalidad. Se trata de una máquina en que la operación está controlada por el tiempo. Una moneda son 15 minutos de juego. Los emuladores MAME y gngeo (NeoGeo) tienen el botón de COIN que permite dar créditos para jugar. Ahora bien, el monedero controla el contador de tiempo, y es necesario meter monedas para dar tiempo a las partidas. La comunicación entre el front-end y los dos emuladores se hace sencillamente con un fichero de texto donde se lee y se graba el valor del contador. La funcionalidad implementada es:

  • Cuando estoy en el front-end el tiempo no corre. Si se mete una moneda, suma el tiempo establecido (15 minutos por defecto).
  • Cuando entro en el emulador (mame4all o gngeo), se lee el valor del tiempo restante, y empieza a descontar el tiempo, que está siempre visible.
  • Desde el emulador puedo poner una moneda, suma el tiempo, y se actualiza el contador correctamente.
  • Cuando salimos del emulador y volvemos al frontend, el tiempo queda bien guardado.
  • Si mientras juego se acaba el tiempo, se vuelve al front-end, esperando la inserción de una nueva moneda.

Cambios en el código y documentación:

    \t

  • http://wiki.joanillo.org/index.php/M%C3%A1quina_Arcade_amb_monedes_i_limitaci%C3%B3_de_temps._MAME_i_neogeo#Introducci.C3.B3_2

Y el video:

retroplaneta.com

Big Arcade

Big Arcade

  • Máquinas arcade y recreativas.
  • Construcción de recreativas. Personalizamos tamaño y diseño
  • A parte de máquinas arcade y marcianitos, realizamos muebles donde integramos arcade, pinball, jukebox.
  • Nuestros modelos incluyen: bartop, mini-bartop, máquina upright, arcade stick, cocktail. Visita todos los modelos en www.retroplaneta.com.
  • Visita nuestro local en Gràcia-Barcelona

www.retroplaneta.com

Máquina recreativa Big Arcade

Big Arcade

Big Arcade

Ya tengo acabada la nueva máquina de pie , que llamaré Big Arcade. El diseño viene directamente de un cliente que me hizo la petición (supongo que encontró las medidas por Internet), y realmente me gusta. En esta máquina se ha cuidado unos cuantos detalles. Concretamente, se ha puesto un monedero de Industrias Lorenzo, se ha cuidado el sonido, una TV de 21 pulgadas, vidrio protector, y se ha mejorado la colocación y los acabados de la marquesina.

En cuanto al monitor, se consiguió una TV de 21», aunque sólo tiene una resolución de 640x480px. Si bien la resolución no es ninguna maravilla, al final me gusta estos pixels un poco gordos, y es un consuelo saber que puedo montar máquinas con esta resolución. En esta ocasión el cable HDMI to VGA no me ha dado problemas, y esto es un gran avance pues tengo una pista de por qué en anteriorse ocasiones había tenido tantos problemas con este tipo de cables.

Otra mejora que se ha hecho en esta máuina es poder cambiar el volumen apretando dos botones, una solución totalmente software, tanto en el front-end como en los emuladores. Esta es una solución buena pues ya no es preciso acceder al potenciómetro del amplificador de sonido.

En definitiva, una nueva máquina en que he implementado unas cuantas mejoras en la construcción y en los acabados. Una máquina para disfrutar construyéndola y jugándola.

Y el video: