sábado, 10 de noviembre de 2012

Instalando Quake III en Raspberry Pi

Hace más de tres meses que recibí mi Raspberry Pi y aún no había tenido la ocasión pero... por fin... esta semana, he pedido una tarjeta SD de 8 GB Clase 10 Extreme Pro de 95Mb/seg, un teclado y un ratón para utilizar exclusivamente en este menester. Y... ¿que mejor para probar nuestra Raspberry Pi que instalando Quake III?.

Lo único que necesitas para hacer funcionar tu Raspberry Pi, es:
  • Un transformador con salida micro USB que saque por DC al menos 700mA aunque yo recomiendo al menos 1,2A  para no quedaros cortos.
  • Una tarjeta SD, yo he pillado una de alta velocidad porque tengo entendido que la velocidad de la tarjeta es una de las cosas que más limita la potencia de Rapberry Pi.
  • Una televisión y un un conector de vídeo compuesto (RCA cable amarillo) o bien una pantalla de PC con conector hdmi.
  • Un teclado y un ratón USB.
  • Un cable de red y un router con conexión a Internet.
  • Tener puesto en la radio Rock FM o en su defecto poner una canción de los Guns and Roses.


Pero bueno, no empecemos la casa por el tejado. En primer lugar hay que instalar un SO a nuestra tarjeta SD, yo como soy un poco vago estoy en Windows y he utilizado este sistema para realizar la instalación de la imagen. En esta página podéis encontrar las diferentes imágenes preconfiguradas para instalar en la tarjeta de vuestra Raspberry Pi. Yo os recomiendo utilizar Raspbian “wheezy”que es una optimización de la versión debian para Raspberry, pero si pretendéis instalar la maquina virtual de Java, esta versión no os valdrá y tendréis que ir a la versión soft-debian pura. Bueno, en este caso nos centramos en la primera de estas, la descargáis y montáis la imagen en una tarjeta SD, aquí os dejo el enlace de la guía para principiantes. A continuación os resumo los pasos que yo seguí, en el enlace podéis encontrar varios métodos más, según las ganas que tengáis de frikear y el SO que utilicéis. Yo como ya he dicho no dispongo de mucho tiempo libre y he utilizado Windows:

  1. Descargar la imagen desde el mirror o por torrent. Cómo ya he dicho, asumo que usaremos Raspbian “wheezy” download 2012-10-28-wheezy-raspbian.zip
  2. Extraer el archivo imagen 2012-10-28-wheezy-raspbian.img del archivo .zip descargado.
  3. Insertar la tarjeta SD en tu lector de tarjetas SD y fijate bien en la letra de la unidad que le corresponde.Si la tarjeta no es nueva, deberías formatearla; de lo contrario Win32DiskImager puede fallar al grabar la imagen.
  4. Ahora descarga la herramienta Win32DiskImager. Los enlaces de descarga se encuentran al lado derecho de la página, descarga el zip con los binarios para poder ejecutarlo directamente.
  5. Extrae el ejecutable del archivo zip y ejecuta el archivo Win32DiskImager. Recuerda ejecutarlo como Administrador!
  6. Elige la imagen 2012-10-28-wheezy-raspbian.img que deberías haber extraído previamente.
  7. Selecciona la unidad correspondiente a tu tarjeta SD. Ten cuidado en seleccionar la unidad correcta ya que si te equivocas borrarás todo el contenido de la unidad que elijas ¡si te equivocas puede que pierdas toda tu información!
  8. Pincha en "Write" y espera a que termine la escritura para completar la operación.
  9. Sal del programa y extrae la tarjeta SD.
  10. Ahora puedes insertar la tarjeta en tu Raspberry Pi, ahora puedes encenderla, y si todo ha ido bien debería arrancar el sistema operativo. 




Al arrancar la Raspberry Pi hay dos cosas importantes, la primera es tener en cuenta que el usuario y contraseña por defecto para el Sistema Operativo Wheezy es usuario: pi y contraseña: raspberry, la segunda es que se debería ejecutar por defecto un script llamado raspi-config y que puede ser ejecutado en cualquier momento utilizando el comando: sudo raspi-config
En dicho script, se pueden ver las opciones mostradas a continuación entre ellas cabe destacar las siguientes:
  • Expandir la partición de memoria de tu tarjeta SD: Si estás utilizando una tarjeta de memoria de más de 4GB puedes elegir esta opción para extender la partición de memoria utilizando así toda la memoria de tu tarjeta, para ello utiliza la opción expand_rootfs
  • Para poner el teclado en español hay que elegir la opción del menú configure_keyboard y seguir las indicaciones en pantalla. Es importante tener en cuenta que hay que ir pulsando el tabulador para ir realizando las selecciones y posteriormente aceptar con la tecla enter.
  • Podéis overclockear vuestra Raspberry Pi, yo la he subido a 800Mhz para realizar estas pruebas.
  • También es importante subir la memoria dedicada a la gráfica con el comando meomry_split, os recomiendo 128Mb no pongáis los 256Mb ya que en ese caso el sistema tiende a tener parones.
Pulsando la tecla ESC se accede a la consola del SO. Lo siguiente que debéis hacer es conectar a Internet vuestra Raspberry Pi utilizando un cable Ethernet entre tu dispositivo Raspberry y un router con conexión ADSL o similar. Si todo funciona correctamente deberías poder ejecutar el comando ifconfig para comprobar que la tarjeta ha obtenido una IP válida. Para comprobar que la conexión funciona puedes ejecutar ping -c 3 www.google.es y deberías obtener respuesta de sus servidores.
Podéis encontrar más información básica sobre como hacer ciertas cosas con Linux en Raspberry Pi iniciación con raspberry.

Y ahora... vamos a comenzar con la instalación de Quake 3, os propongo la solución que a mi me función que es la que consiste en compilar Quake 3 para Raspbian, para lo que hay que seguir los pasos propuestos en este tutorial y que paso a describir a continuación:


  1. Actualiza el sistema con los siguientes comandos (el último en mi caso no se ejecutó correctamente pero sin embargo el sistema ha funcionado perfectamente):
        sudo apt-get update
        sudo apt-get dist-upgrade
        sudo rpi-update 192
    • Reinicia con el comando reboot.
  2. Instala los paquetes necesarios para realizar la compilación:
        sudo apt-get install git gcc build-essential libsdl1.2-dev
  3. Y ahora descarga el código fuente de Quake 3:
        mkdir ~/src
        cd ~/src
        git clone https://github.com/raspberrypi/quake3.git
        cd quake3
  4. Ahora hay que editar el archivo build.sh del directorio quake3 para cambiar el uso de las librerías a utilizar.
        cambia la linea 8 por:  ARM_LIBS=/opt/vc/lib
        cambia la linea 16 por: INCLUDES="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads"
        Comenta la linea usando el simbolo # 19:    #CROSS_COMPILE=bcm2708-
  5. Ahora ejecuta el script que realiza la compilación: ./build.sh
  6. Y... ahora puedes ir a hacerte un café, te o tomarte unas cervezas con tus colegas, porque esto tarda un buen rato (aproximadamente 1 hora).
  7. Ahora tienes que encontrar los archivos: pak0.pk3, pak1.pk3, pak2.pk3, pak3.pk3, pak4.pk3, pak5.pk3, pak6.pk3, pak7.pk3, pak8.pk3 y colocarlos en el directorio build/release-linux-arm/baseq3. Estos archivos los puedes encontrar en el cd original de tu Quake III
  8. Una vez compilado puedes crear un directorio limpio y mover ahí los archivos listados a continuación, puedes eliminar el resto del directorio:
quake3arena/ioq3ded.arm
quake3arena/ioquake3.arm
quake3arena/baseq3/cgamearm.so
quake3arena/baseq3/qagamearm.so
quake3arena/baseq3/uiarm.so
quake3arena/lib/libSDL.so
quake3arena/lib/libSDL-1.2.so.0
quake3arena/lib/libSDL-1.2.so.0.11.3
Ahora ya puedes entrar en la carpeta anterior y ejecutar el archivo ioquake3.arm. Usando el comando ./ioquake3.arm comenzará el juego.
    Quiero agradecer a Shea Silverman su trabajo por servirme de fuente de inspiración.


    Bueno, por último aquí os dejo un vídeo demostrativo del resultado, se que la calidad del vídeo no es muy buena, pero considero que tampoco hace falta mas. Como podéis ver el Quake III funciona más que fluido con la configuración apropiada, habrá que seguir probando cosas para comprobar los límites del Hardware. De momento la prueba de concepto ha sido un éxito!



    Cubieboard

    El mismo día que por fin instalo un sistema operativo a mi RaspBerry ya he pedido mi nuevo juguete. CubieBoard es la nueva placa de alto rendimiento y bajo coste que va a competir con RaspBerry Pi, esta vez desarrollada en Shenzhen China por lo que como no era raro, ofrece mayores prestaciones a un precio muy reducido. En este momento están organizando una campaña de crown funding para recopilar fondos y crear una alta producción consiguiendo reducir así los costes de fabricación. Las características de este dispositivo prometen, incorpora un microprocesador ARM cortex-A8 de 1Ghz de velocidad de reloj, 1Gb de RAM DDR3 y 4Gb de Nand Flash integrada. A continuación os dejo las características del sistema:
    • 1G ARM cortex-A8 processor, NEON, VFPv3, 256KB L2 cache
    • Mali400, OpenGL ES GPU
    • 1GB DDR3 @480MHz
    • HDMI 1080p Output
    • 10/100M Ethernet
    • 4GB Nand Flash
    • 2 USB Host, 1 slot para micro SD, 1 SATA, 1 puerto de Infrarrojos.
    • 96 pines de propósito general incluyendo I2C, SPI, RGB/LVDS, CSI/TS, FM-IN, ADC, CVBS, VGA, SPDIF-OUT, R-TP..
    • Sistemas Operativos probados Android, Ubuntu y otras distribuciones de Linux.
    Frente a los 700Mhz y sus 256 Mb de RAM en los modelos A y los primeros modelos B, 512 en los últimos modelos B. CubieBoard incluye memoria Nand Flash para el sistema operativo por lo que no es necesario comprar una tarjeta SD para poder instalar el sistema operativo, lo que hace que la diferencia de precio con Raspberry Pi, realmente se reduzca un poco. En tan solo unos días han recaudado 71.000 dolares de los 50.000 que pretendían conseguir, y aún quedan otros 28 días más, todavía la puedes conseguir por 59$ por correo ordinario (unas 3 semanas a partir de la fabricación) o por 69$ con envío rápido (unos pocos días a partir de la fabricación). La parte mala es que me imagino que no comenzarán con la fabricación hasta el día que termine la campaña, por o que no creo que pueda disfrutar de este juguetito antes de navidades.

    Aquí os dejo el vídeo promocional de la campaña que están realizando en Indigogo:


    miércoles, 5 de septiembre de 2012

    PFC: DISEÑO, CONSTRUCCIÓN Y CONTROL DE UNA ESTRUCTURA ARTUCLAR RRR

    En esta entrada, pretendo comentar los resultados de mi trabajo realizado en mi primer año como parte del grupo de Automática, Robótica y Visión Artificial (AUROVA) de la Universidad de Alicante. Las investigaciones principales del gurpo se centran en el area de Diseño y Producción Industrial (DPI), principalmente en tareas de Manipulación Inteligente y Control Visual (En la literatura científica es común encontrarlo como "Visual Servoing"). Cuando se realizan tareas de manipulación inteligente de objetos, mediante Visual Servoing con una cámara en el extremo del robot manipulador (Configuración Eye in Hand), es común que una vez alcanzado el objeto a manipular, este desaparezca de la imagen, por tanto la cámara empleada para llegar al objeto ya no es útil una vez alcanzado dicho punto. Incluso, en casos en que por la morfología del objeto, este no desaparece del espacio imagen, las características empleadas para localizarlo y manipularlo, si pueden dejar de ser detectadas por la cámara.


    Es en esta situación en la que se plantea la construcción de un pequeño robot, que pueda ser acoplado en el extremo del robot manipulador principal de forma que incorporando una cámara en su extremo, este robot permita el seguimiento de las características del objeto manipulado mientras se realiza la manipulación. Es aquí donde comienza mi trabajo dentro del grupo y desarrollo la primera de mis funciones a cargo del grupo, que consiste en diseñar y construir el mini-robot COOPER.



    Como se comentaba anteriormente, este robot, debía cumplir una serie de restricciones, de velocidad y peso importante para poder llevar a cabo su tarea, sin entorpecer el funcionamiento del robot principal. Para más información se puede consultar mi proyecto final de carrera donde hay información un poco más detallada acerca de los elementos empleados para construcción del robot y el diseño del sistema Software que lo gobierna.



    jueves, 2 de agosto de 2012

    IOExpander un nuevo Shield de Arduino que permite manejar 32 I/O mediante I2C

    El nuevo Shield IOExpander permite manejar 32 pines de I/O configurables a través I2C. Esta placa se basa en el en el chip de Microchip MCP23017. Este chip incorpora 2 puertos, un puerto A y un puerto B, cada uno de ellos de 8 I/O configurables, cada pin de estos puertos se puede configurar como entrada o como salida. Además este chip incorpora la funcionalidad para generar una señal de interrupción en un pin INTA/INTB adicional, uno por cada puerto, de forma que si se produce un cambio en una entrada del puerto A, se genera una señal de interrupción en el pin INTA y de igual forma ocurre con el puerto B.


    Siguiendo esta funcionalidad, las 32 I/O que incorpora este Shield, están organizadas en 4 puertos ya que incorpora 2 chips. Es decir, un chip A incorpora un puerto A y un puerto B de 8 I/O y a su vez el chip B incorpora otro puerto A y otro puerto B. Para el control de este Shield se ha desarrollado una librería compatible con el IDE de desarrollo de Arduino 1.0.1. Esta librería incorpora funciones para realizar las funciones principales de forma sencilla, entre ellas se encuentran configurar el modo de los pines, escribir en un puerto o pin determinado, leer de un puerto o pin determinado, habilitar la interrupción desde un determinado pin de un puerto dado.


    El Shield, está preparado para poder ser apilado, de forma que se pueden emplear varios de estos al mismo tiempo, gracias a un dipswitch incluido que permite configurar la dirección I2C de cada chip. Posteriormente, a través de el método begin de la librería es posible configurar la dirección de cada uno de los chips en el software.


    domingo, 15 de julio de 2012

    Problema instalando Visual Studio 2008: InfoPath MUI 2007

    Recientemente he necesitado instalar mi antigua versión de Visual Studio 2008 ya que me encuentro desarrollando en estos momentos, sistemas de control visual con la plataforma ViSP para Windows, y para ahorrar problemas en la compilación de dicha plataforma es recomendable utilizar esta versión del IDE. Bonita sorpresa me llevé al encontrar el siguiente mensaje:

    The following component failed to install:
    Microsoft Visual Studio Web Authoring Component

    Menos mal que una rápida búsqueda por Internet me ha llevado a mi queridísima Web de devjoker que tantas veces me ha sacado de apuros. Según explica Pablo Gumpert en este tip,  el problema reside en un componente de la instalación de Office 2007. Para poder instalar nuestro Visual Studio 2008 sólo es necesario desinstalar primero dicho componente que en la versión 2007 se trataba de un componente en fase Beta. El susodicho componente es  InfoPath MUI 2007, desconozco si el problema se debe a estar en fase Beta y tampoco sé si en la versión 2010 de Office ya se ha obtenido una versión estable que no presente este problema. Sin más, la clave para desinstalar este componente es ejecutar el comando:

    msiexec /x {30120000-0044-0C0A-0000-0000000FF1CE} 

    Yo lo he probado en Windows 7 y ha funcionado perfectamente.
    De nuevo aprovecho para dar las gracias a los amigos de devjoker.

    lunes, 7 de mayo de 2012

    Instalando PostgreSQL

    Entrar en la página de http://www.postgresql.org/ y descargar la última release, en este momento es la 9.1.3. Para ello, en la sección Download encontrarás un enlace donde puedes descargar los binarios para diferentes sistemas operativos. Para trabajar con Visual Studio los binarios que nos interesan son los de Windows. Una vez ahí hay que descargar el instalador, para ello tendrás que elegir el de 32 o 64 bits según tu sistema operativo. Una vez hecho esto se iniciará la descarga.
      
    A continuación, el instalador pedirá la contraseña de super usuario. Es muy importante recordar esta contraseña ya que será la que nos permita administrar nuestro sistema de base de datos.


    Por último se pedirá el puerto en que el servidor va a proveer los servicios de gestión de Base de datos. Esto se debe a que el sistema provee sus servicios de forma remota, es decir el servidor permitirá a los clientes conectarse a través de una conexión TCP/IP. Y una vez establecida esta conexión, a través del canal establecido se podrán realizar las consultas SQL, esta característica es común en los sistemas de gestión de Base de Datos administrados. Es importante recordar en que puerto se sirve para poder realizar la conexión al sistema posteriormente, por lo general es recomendable dejar el puerto por defecto.


    Por último hay que marcar la casilla de uso de Stack Builder que nos permitirá instalar componentes adicionales a nuestro sistema PostgreeSQL, entre ellos los drivers de conexión a BBDD desde diferentes plataformas de programación.


    Una vez iniciado Stack Builder, podremos elegir que componentes instalar. Como mínimo habremos de instalar el conector Npgsql que intalará la dll a emplear desde la plataforma .Net para conectar al sistema de gestión de BBDD.


    Al comienzo de la instalación del driver Npgsql aparecerá la ruta de instalación del mismo, en mi caso: C:\Program Files (x86)\PostgreSQL\Npgsql
    Recuerdala por que será donde estará instalada la dll a emplear desde .Net.




    jueves, 5 de abril de 2012

    Blue Tooth con Arduino

    Alberto Bordonado, ha realizado un estupendo trabajo en el que ha desarrollado un sistema donde se realiza la comunicación bidireccional de una placa Arduino con un PC a través de un interfaz BlueTooth. La imaginación me llena la cabeza de ideas... un dataloger inalámbrico, control de dispositivos remotos en casa a través de tu PC o móvil... en fín son miles las cosas que me vienen a la mente, es cuestión de dejarse llevar un poco, cosa que se me da muy bien, jejeje.

    Aquí os dejo la referencia al foro donde se ha desarrollado el proyecto, por cortesía de Alberto Bordonado.