Archivo por meses: abril 2018

Pinball B2S, distribución de los componentes

Estoy avanzando en el proyecto del Pinball B2S, aunque ahora tengo faena porque estoy haciendo un par de máquinas. Estoy a punto de pintar de blanco el mueble, y antes de pintar he de hacer algún agujero más. Pero antes de hacer los agujeros que me faltan, he de disponer todos los componentes en su posición final.

Así que he cogido el ordenador sobre el que he estado haciendo las pruebas, y lo he desmantelado todo. Es lástima porque es un ordenador que conseguí hace un par de meses a un buen precio y que tiene una caja muy insonorizada y una fuente de alimentación muy buena. Como se ve en la foto, a parte del ventilador de la fuente de alimentación, tiene tres ventiladores más y un disipador de la CPU muy grande. Es una buena máquina con una placa ASUS P5Q-E y un Intel Core 2 Quad Q9550 a 2.83GHz. Tiene 4GB de RAM, en alguna mesa de pinball que he jugado creo que sería mejor tener 8GB de RAM, pero de momento lo dejaré así. Cogí este ordenador porque llevaba la gráfica NVidia GeForce 240, que aunque no es muy potente ya lo había probado en otra màquina con muy buen resultado.

Así pues he desmontado la placa, la fuente, la gráfica, el disco duro, un conector USB, todos los cables, … i lo he dispuesto todo sobre la base del pinball. Al principio quería hacer un cajón en la parte trasera de manera que se pudiese acceder a todos los componentes del ordenador sin tener que desmontar la pantalla. Pero com se ve, en la parte trasera tengo la fuente d alimentación y tres ventiladores. Espero no tener que acceder nunca al ordenador, pero si se diese el caso, se tendrá que sacar el vidrio y la pantalla del playfield, tampoco será tanto trabajo.

En la foto no están todos los componentes. Falta un IPAC, todos los botones y cables, y toda la electrónica de la TV. Pero no es problema, veo que tengo suficiente sitio, y además se puede podner algún componente en los laterales.

Tenía ganas de hacer el plunger analógico, pero de momento prefiero acabar la máquina y más adelante ya miraré de meterlo. Ahora veo que la altura del mueble podría haber sido 2 o 3 cm menos alto, pero da igual, lo que importa es que las proporciones entre la pantalla del backglass, el mueble principal, y las patas, sea la correcta. De hecho, me quedará un pinball pequeñito: es un mini virtual pinball. Tenía ganas de hacer uno de pequeño antes de meterme en un pinball de dimensiones reales. Como no se podrá jugar de pie, supongo que lo mejor será jugar sentado en una silla. Ya veremos.

El proyecte en la wiki:

Curso de Inteligencia Artificial CSMM.101x finalizado

Finalmente ya he finalizado el curso de Inteligencia Artificial. Estas últimas horas he hecho el examen final, tipo test. Cuando tenga un poco de tiempo me gustaría repasar algún concepto y volverme a mirar el proyecto del Sudoku y los algoritmos que allá hemos utilizado. Y de cara este verano releer el libro Computational Beauty of Nature, donde había algún capítulo sobre redes neuronales.

Me ha interesado sobretodo la parte del Machine Learning, y de cara el curs que viene me gustaría hacer algún curso en este campo. Ya veremos.

Construyendo el mueble del Virtual Pinball

Manos a la obra! Ya tengo las 200 mesas configuradas, tengo las dos pantallas, el ordenador, botones, IPAC. He de pensar qué monedero le meto, y me gustaría poner un plunger analógico. Pero el caso es que ya puedo empezar a construir el mueble.

De hecho, este es un mini virtual pinball. Es mini porque las pantallas que utilizo son de 24inch para el playfield, y de 17 inch para el backglass. Como es la primera máquina que construyo de este tipo, la pienso como una prueba. La idea es meterle unas patas, pero no tengo claro todavía cómo hacerlo. Se pueden comprar patas de pinball por Internet, pero quiero contener al máximo el presupuesto de este proyecto. Otra posibilidad sería no poner patas, y que la máquina repose sobre la mesa.

La primera vez que construyes una máquina es un aprendizaje sobre la marcha de las cosas con que nos podemos encontrar. Se han de tomar muchas decisiones: medidas, posicionamiento de los componentes, materiales,… Es un proceso de toma de decisiones. Por tanto, nos lo hemos de tomar como un prototipo, y en el trayecto adquirimos un know-how que nos servirá para futuras máquinas (esperamos que haya más).

Para los vinilos de esta máquina todavía no he tomado ninguna decisión, seguramente se basará en la mesa Jacs to Open. Seguramente no serán vinilos, sino que la pintaré con plantillas, una técnica que no he probado. Otras posibilidades de diseño que me han gustado mientras probaba las mesas: Free Fall, Fast Draw, Harlem Globetrotters, Jumping Jack, King Rock, Star Trek.

200 mesas de pinball B2S configuradas y testeadas

He aparcado un tiempo el proyecto de la máquina de dardos por dos motivos. El primero que estoy haciendo un curso de edx.org de Inteligencia Artificial. Y después porque tengo ganas de acabar un virtual pinball de dos pantallas.

Ya tengo configuradas 200 mesas de pinball en modo B2S (Backglass to Screen). Esto significa que tenemos dos pantallas: el playfield (la pantalla principal); y la pantalla que hace de backglass, donde hay el score y otros efectos visuales. He tenido que transformar todas las mesas FS (FullScreen) que tenía a B2S, siempre que haya sido posible. Y he buscado otras mesas chulas hasta llegar a las 200.

La foto que he escogido para ilustrar el post es la mesa Centigrade 37, una mesa Gottlieb de 1980 muy chula que he descubierto.

Por otra parte estoy construyendo el mueble (lo ensearé en los próximos posts), y me queda decidir qué mesa esogeré para las artes. También he de resolver otros aspectos técnicos como el plunger analógico.

Curso de Inteligencia l’Artificial en edx.org

Estoy haciendo el curso ColumbiaX: CSMM.101x de Inteligencia Artificial de edx.org. De hecho. ya lo estoy acabando. Ya estamos en la última semana, y para mi suerte, el último proyecto ya lo tengo entregado y me ha llevado menos faena de lo que me pensaba, sin especiales contratiempos. Ahora sólo me falta hacer el examen final que será el 23 de abril, Sant Jordi.

Los proyectos que se han realizado, todos ellos en Python, son:

  • Proyecto 1: Search Algorythms. BFS, DFS,… Se ha resuelto el 8-puzzle
  • Proyecto 2: Adversarial Search and Games. Se ha resuelto el juego del 2048, que de hecho yo lo he jugado bastante. Este proyecto me costó bastante, y efectivamente llegué a 2048 en una ocasión combinando diferentes heurísticas.
  • Proyecto 3: Machine Learning. Había tres problemas diferentes: I. Perceptron Learning Algorithm; II. Linear Regression; III. Classification
  • Proyecto 4: Constraint Satisfaction Problems. Aquí resolvimos el juego del sudoku con los algoritmos del AC-3 y del backtracking.
  • Proyecto 5: NLP, Natural Language Processing. Un proyecto muy interesante. Había un train data de 25000 comentarios de películas, valoradas del 0 al 10. Y después también hi havía un test data de 25000 comentarios que se tenían que valorar después de entrenar el sistema.

El resumen de las semanas ha sido:

  • Week 1: Introduction to AI
  • Week 2: Intelligent Agents and Uniformed Search
  • Week 3: Heuristic Search
  • Week 4: Adversarial Search and Games
  • Week 5: Machine Learning I
  • Week 6: Machine Learning II
  • Week 7: Machine Learning III
  • Week 8: CSP
  • Week 9: Reinforcement Learning
  • Week 10: Logical Agents
  • Week 11: AI Applications: NLP

Por suerte el curso ya se está acabando porque me ha tomado más tiempo del que tenía y del que quería dedicarles. Pero realmente ha sido interesante y exigente, y me he tenido que poner las pilas con el Python. Realmente el tema de las estructuras de datos, y las diferentes librerías que se han utilizado con Python, son muy potentes.

Intentaré seguir leyendo cosas sobre Inteligencia Artificial (IA) y Machine Learning (ML).

NOTA: todavía no tengo acabado el proyecto de la máquina de dardos, y de hecho me doy cuenta de que el problema de acertar dónde ha tocado el dardo y qué puntuación tiene, a parte de un problema de CV (Computer Vision), también es un problema de ML (Machine Learning).