Arxiu d'etiquetes: arcade

Detecció dels dards: Primeres proves

Ja tinc el prototipus del moble, i ja puc començar a fer proves per a detectar els dards. Com es veu al video, la detecció és molt bona. Si ens fixem en la configuració, la webcam està en el mateix pla XY que la diana. Això crec que té avantatges en la detecció del dard; i desavantatges: necessitaré 2 webcams, i possiblement 3 webcams per posicionar amb fiabilitat el dard en la diana.

Utilitzem la llibreria OpenCV sobre C++, i el flux bàsic consisteix en fer una captura de la webcam; llençar el dard; i fer una altra captura. Aleshores es fa la diferència de les imatges; es converteix a binari; s’aplica una màscara per eliminar bona part del dard. En aquest moment hem de veure la part de baix del dard, i ben clarament la punta. Tenim un número limitat de punts blancs. Amb aquests punts calculem el moment, que seria el centre de gravetat dels punts. I fent un bucle sobre tots els punts puc detectar el punt més inferior, que seria la punta del dard. Finalment, per eliminar possibles errors, calculo la distància entre la punta i el moment, que ha de ser un valor petit.

Encara queda molta feina per fer. D’una banda, s’ha de traduir la detecció del dard als possibles sectors on està el dard. Després afegir una altra webcam. I si afegeixo una tercera webcam, segurament necessitaré algun USB Hub. L’objectiu és utilitzar una sola Raspberry Pi 3 en tot el projecte.

Prototipus de diana de dards II

Fa uns dies vaig construir el primer prototipus de moble, i ja vam fer unes quantes proves per detectar els dards. He tret bastantes conclusions del primer prototipus, i he arribat a la conclusió de què s’ha de fer un nou moble, amb unes noves dimensions.

La primera consideració és la distància de la webcam a la diana. Amb la webcam amb què estic fent les proves (Creative Live! Cam Sync HD), la distància de la webcam al centre de la diana ha de ser com a mínim de 46 cm. Un altre tema important és que el pla de la càmera ha de coincidir exactament amb el pla XY de la diana (aquesta és la manera com jo abordo la posició de les càmeres, evidentment necessitaré dues càmeres, o potser tres). La il·luminació ha de ser uniforme, i sobretot, la construcció ha de ser sòlida. La clau està en què quan faig la sostracció entre una captura i la següent (en la què s’ha llençat un dard), la diferència entre les imatges ha de ser realment la detecció del nou dard (no ha d’haver-hi cap mena de soroll).

Ja he estat fent proves amb el nou prototipus, i val a dir que els resultats han estat molt bons (faré un post i un video properament), o sigui que puc afrontar amb optimisme la part més crítica del projecte.

Com es veu en la imatge, la idea que tinc del moble és integrar una pantalla de 15 polzades just a a sota de la diana, i ficar-hi també els tres o quatre botons que necessitaré per interactuar amb el software. La part del software la tinc bastant avançada, però ara m’he de centrar més en la detecció dels dards.

Un altre tema que he de fer els propers dies és convertir la posició del dard a la puntuació de la diana. No cal dir que amb una sola càmera (en el mateix pla XY que la diana) això és impossible, es necessitaran dues càmeres mínim.

Tauleta Pinball, nova màquina

Per Nadal vaig acabar aquesta taula de pinball, en el format de taula de cafè. Ja és la segona que he fet seguint aquest esquema, montant una TV de 32”. En aquest cas he incorporat algunes millores: la disposició dels botons i la implementació del nudge.

En el procés de construcció m’han vingut ganes de construir una màquina de pinball amb dos monitors (la configuració típica de playfield i backlight), o sigui que estic reunint les peces i ja estic pensant en el disseny. Serà un dels projectes per aquest trimestre.

Nova màquina: recreativa arcade vertical

Aquesta setmana he acabat una nova màquina, una recreativa vertical. Curiosament, és la segona que faig seguides. A mi aquest format m’agrada molt, ja veig que no sóc l’únic.

Com a novetat, he mirat de perfeccionar el tema del vidre que protegeix la pantalla, i el vidre del marquee retroil·luminat. La idea és que amb la fresadora s’ha de fer ranures, i el vidre va encastat dins d’aquestes ranures. El vidre es pinta per darrere, seguint el marc de la pantalla. Queda un resultat molt professional.

recreativa dards v0.0.8

Ja tinc ganes de fer aquesta nova recreativa: una màquina de darts amb detecció automàtica dels darts i la seva puntuació. Però no dards amb punta de plàstic. Ha de ser un dartboard original de suro amb dards de punta metàl·lica.

Per a la detecció dels dards hi havia la possibilitat d’utilitzar una malla resistiva i poder posicionar on llencem els dards. Però crec que no seria de fiar. El millor serà utilitzar visió per computadora amb OpenCV. Ja parlaré sobre el tema més endavant.

De moment he estat treballant amb la lògica dels diferents jocs de dards que hi ha. Els més populars són: 301, 501, Count Up, Cricket, Round the Clock, Halve it. I ara ja puc presentar la primera versió de l’aplicació, no funcional, que només funciona a la consola de Linux. Aquesta versió simula partides reals de fins a 4 jugadors: primer esculls el joc; després número de jugadors; després assignes els usuaris; comencem a jugar al joc seleccionat passant per les diferents rondes (cada ronda són tres tirades dels dards). I així anem registrant la puntuació fins que arribem al guanyador.

En les següent versions del programa (escrit amb C++) s’haurà d’implementar tota la part de OpenCV, i finalment tota la part de SDL (llibreria gràfica). Tot haurà de córrer en una Raspberry Pi 3, de manera que el desenvolupament el faig en el portàtil, però assegurant la portabilitat a la RPi3. Aquest hauria de ser el projecte estrella d’aquest semestre. És una idea que em persegueix de fa tres anys. De fet no és una idea original, hi ha diversos projectes que utilitzen dards amb punta de ferro i taulells de suro o fibra, en comptes de les dianes electròniques amb puntes de plàstic. Potser ara el projecte més similar seria open-cv-steeldarts, que s’està desenvolupant amb Python i que encara no és plenament funcional. Li donaré una ullada sobretot pel tema de la calibració i detecció dels dards.

Enllaços:

Provant taules B2S a Virtual Pinball

Aquests dies estic fent una nova màquina de Pinball, igual que la primera, amb configuració FS (FullScreen), és a dir, d’una sola pantalla. Aprofitant que tinc un ordinador amb el qual puc fer proves, en un segon disc dur vull instal·lar el Visual Pinball amb configuració B2S (Backglass to Screen), és a dir, amb dues pantalles: la principal és el playfield, i la secundària és el backglass.

Així doncs he instal·lat el Visual Pinball i el VPinMAME, i he mirat els tutorials per veure com funciona això del B2S. I ja tinc les primeres taules funcionant. No és difícil d’entendre i d’implementar, però el que sí que és veritat és que hauré d’anar una per una de les 200 taules que tinc implementades i classificades.

El primer que s’ha de fer és baixar-se els arxius de backglass (amb extensió .directb2s). A partir de les dues pantalles que tinc (una de 22” 1920×1080; i una altra de 17” 1280×1024), creo el fitxer screenres.txt, relacionat amb la geometria de les dues pantalles. I aleshores he d’anar una per una de les taules, entrar en el script (el codi), i configurar el script per tal de què funcioni el mode B2S. Executar la taula (jugar una estona :-)), comprovar que tot funciona correctament, i ajustar algun paràmetre si és necessari. En particular, les taules que tenen DMD (Dot Matrix Display), ajustaré la geometria per tal de què el display DMD aparegui en la pantalla del backglass, en una posició que no sigui invasiva.

En la configuració FS tinc implementades 200 taules. Algunes d’elles no s’han portat encara a B2S, doncs no tenen fitxer de backglass, o m’han donat problemes. Si tinc temps, miraré d’implementar algunes taules més que vegi que són divertides, per tal de recuperar el valor de 200 taules implementades. En el futur, miraré d’introduir el display de DMD, tot i que jo sempre tinc un ull posat en la simplicitat.

Quan tingui configurades les taules B2S serà el moment de fer el moble de pinball amb dues pantalles, de moment amb un format petit: pantalles de 22” i 17”, i un moble el més petit possible que integri aquestes dues pantalles. Aquesta serà la part més divertida i original. A més, si estic engrescat, vull ficar un plunger analògic, un acceleròmetre per al nudge, i un moneder. Però això ja serà una altra història. De moment ja hi ha molta feina configurant les taules B2S.

Amstrad PCW8256. Provant l’emulador Joyce



Aquests últims dies he reviscut l’ordinador Amstrad PCW8256 que teníem per casa els cap al 1986. El feia servir el meu pare per escriure, però també el féiem servir pels treballs de l’insti. Anava amb una pantalla monocroma verda, el teclat i la impressora d’agulles. Tota l’electrònica estava en el monitor, fins i tot la placa de l’impressora. I en el monitor també hi havia la disketera de 3”, que tenia dues cares.

He instal·lat el Joyce a la Raspberry Pi, i m’ha agradat molt reviure aquest sistema. Evidentment, s’ha d’escollir l’opció de lletres verdes, simulant la pantalla de fósfor verd.

L’ordinador venia amb dos disketes, que eren discs d’arrencada. El primer era el CP/M, el sistema operatiu, des del qual es podia accedir a l’intèrpret de Basic (Mallard Basic). El segon diskette, també bootable, era el Locoscript, que és el processador de textos amb què venia. He fet un document amb LocoScript sobre els rius de Catalunya, simulant com si fos un treball de l’insti.

També he jugat una estona al Tetris. L’emulador emula molt bé la màquina original. Si vols jugar al Tetris, has de fer eject del disket inserit (el CP/M)(el SO ja està carregat a la RAM), i ficar el disket del Tetris (Insert). Aleshores, ja des de la línia de comandes, ja es pot cridar a l’executable i jugar al Tetris, com es veu en la imatge.

Quins temps aquells! El link a la wiki:

Adaptació dels emuladors MAME i gngeo per limitar el temps de partida

Tenia pendent des de l’octubre aconseguir aquesta funcionalitat. Es tracta d’una màquina en que l’operació està controlada pel temps. Una moneda són 15 minuts de joc. Els emuladors MAME i gngeo (NeoGeo) tenen el botó de COIN que permet donar crèdits per jugar. Ara bé, el moneder controla el comptador de temps, i és necessari ficar monedes per donar temps a les partides. La comunicació entre el front-end i els dos emuladors es fa senzillament amb un fitxer de text on es llegeix i es grava el valor del comptador. La funcionalitat implementada és:

  • Quan estic en el front-end el temps no corre. Si es fica una moneda, suma el temps establert (15 minuts per defecte).
  • Quan entro a l’emulador (mame4all o gngeo), es llegeix el valor del temps restant, i comença a descomptar el temps, que està sempre visible.
  • Des de l’emulador puc ficar una moneda, suma el temps, i s’actualitza el comptador correctament.
  • Quan sortim de l’emulador i tornem al frontend, el temps queda ben guardat.
  • Si mentre jugo s’acaba el temps, es retorna al front-end, esperant la inserció d’una nova moneda.

Canvis en el codi i documentació:

    \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

I el video:

retroplaneta.com

Big Arcade

Big Arcade

  • Màquines arcade i recreatives.
  • Construcció de recreatives. Personalitzem tamany i disseny
  • A part de màquines arcade i marcianitos, realitzem mobles on integrem arcade, pinball, jukebox.
  • Els nostres models inclouen: bartop, mini-bartop, màquina upright, arcade stick, cocktail. Visita tots els models a www.retroplaneta.com.
  • Visita el nostre local a Gràcia-Barcelona

www.retroplaneta.com

Màquina recreativa Big Arcade

Big Arcade

Big Arcade

Ja tinc acabada la nova màquina de peu , que anomenaré Big Arcade. El disseny ve directament d’un client que em va fer la petició (suposo que va trobar les mides per Internet), i realment m’agrada. En aquesta màquina s’ha cuidat uns quants detalls. Concretament, s’ha posat un moneder de Industrias Lorenzo, s’ha cuidat del so, una TV de 21 polzades, vidre protector, i s’ha millorat la col·locació i els acabats de la marquesina.

Quant al monitor, vaig aconseguir una TV de 21”, tot i que malauradament només té una resolució de 640x480px. Tot i que la resolució no és cap meravella, al final m’agrada aquests pixels una mica grossos, i és un consol saber que puc montar màquines amb aquesta resolució. En aquesta ocasió el cable HDMI to VGA no m’ha donat problemes, i això és un gran avanç doncs tinc una pista de per què en anteriors ocasions havia tingut tants problemes amb aquesta mena de cables.

Una altra millora que he fet en aquesta màquina és poder canviar el volum apretant dos botons, una solució totalment software, tant en el front-end com en els emuladors. Aquesta és una solució bona doncs ja no cal accedir al potenciòmetre de l’amplificador de so.

En definitiva, una nova màquina en què he implementat unes quantes millores en la construcció i en els acabats. Una màquina per disfrutar construint-la i jugant-la.

I el video: