Configuración de MMS con vodafone y HTC G1

Pese a que no uso los MMS, salvo ocasionalmente, nunca los había configurado en el android de mi HTC G1. Hoy he recibido varios mensajes multimedia y no podía descargarlos, así que me he puesto manos a la obra y ya está funcionando. Esta es la configuración para Vodafone y que a mi me funciona:

- APN: mms.vodafone.net
- Proxy: no establecido
- Puerto: no establecido
- Nombre de usuario: wap@wap
- Contraseña: wap125
- Servidor: no establecido
- MMSC: http://mmsc.vodafone.es/servlets/mms
- Proxy MMS: 212.073.032.010
- Puerto de MMS: 80
- MCC: 214
- MNC: 1
- Tipo de APN: mms

Con esto, ya tengo una parte más de mi G1 funcionando.

Beagle board

Llevo un tiempo pensando en una plataforma para mis futuros proyectos electrónicos y robóticos. Lo que buscaba era una plataforma potente con la que poder crear grandes proyectos, entre los que se incluyen visión artificial por ejemplo. Tras buscar un poco creo haber encontrado lo que buscaba y se llama Beagle board.

Beagle Board

La Beagle board consiste en un PC en miniatura ya que mide 3x3 pulgadas (sobre 76.2 x 76.2 mm) y pesa solo 36g. Su procesador es un OMAP3530 de Texas Instruments, basado en el ARM Cortex-A8 que se ejecuta a 500MHz (puede llegar a 600MHz), acompañado de un DSP TMS320C64x ~430MHz y un procesador gráfico Imagination SGX 2D/3D. Además incorpora 256MB de Flash y otros 256MB de SDRAM DDR (en versiones anteriores eran solo 128MB de RAM) en un mismo chip que se monta encima del procesador (tecnología PoP o Package on Package) .

En cuanto a periféricos, tenemos salida DVI mediante un conector HDMI, salida de video analógico, entrada y salida de audio, JTAG, puerto de expansión (I2C, SPI, GPIO, etc.), lector de tarjetas SD/MMC, botón de usuario, etc. Pero lo mejor es que posee USB OTG y USB Host de alta velocidad, por lo que no tendremos problemas en conectarle un adaptador WiFi, bluetooth, cámaras, ratones, teclados, etc.

Cabe destacar la gran potencia de este procesador, que gracias al DSP integrado y su procesador gráfico, es capaz de ejecutar aplicaciones con OpenGL sin problema. Pero aún mejor que su potencia y prestaciones es su precio, 149$. Además hay que sumar que hay muchísimo software y proyectos en torno a esta plataforma, por lo que es fácil encontrar ayuda.

Sin lugar a dudas, es la plataforma que quiero.

Cómo crear un robot de sumo (Parte III): torque y motores

Esta entrada fue escrita hace meses, pero no la publiqué pensando mejorarla. Simplemente para que no caiga en saco roto la publico, aunque actualmente no soy muy partidario de aplicar estos cálculos, prefiriendo los métodos experimentales y aproximaciones más simples.

Anteriormente ya he hablado sobre la fuerza de rozamiento, para recordarlo simplemente diremos que esa fuerza determina cuanto será capaz nuestro robot de empujar y cuanto de aguantar sin ser desplazado. También conviene recordar que esta fuerza dependía tanto de la masa de nuestro robot como del material de nuestra rueda y el suelo. Una cosa que no comenté, es que también dependerá del número de apoyos con el suelo, por ejemplo, si nuestro robot tiene un apoyo frontal, parte de la masa de nuestro robot descansará sobre ese punto, y eso afectará a la fuerza de rozamiento en la rueda.

 

Robot con dos apoyos

En la imagen se ve que ahora habrá una fuerza RB en el frontal del robot. Haré unos sencillos cálculos para ver que fuerza sería necesaria para empujarnos y cuanto podemos empujar.

Calculamos los momentos respecto del punto A:
Sentido horario: 0.03m * mg
Sentido antihorario = 0.08m * RB

Como el robot está equilibrado, la suma se momentos en ambos sentidos debe de ser la misma:
0.03m x mg = 0.08m * RB

Si suponemos que el robot pesa 3Kg, entonces mg ≈ 29.43 N
RB = 0.03m x 29.43 N / 0.08m ≈ 11.04 N

Entonces, como RA + RB = mg (la suma de fuerzas verticales ha de ser nula)
RA = mg - RB = 29.43N - 11.04 = 18.39 N

Por tanto, en una situación estática, y suponiendo unos coeficientes de rozamiento determinados, podemos calcular la fuerza de rozamineto en la rueda y en el apoyo frontal como:
FA = μsRA = 0.9 * 18.39 N = 16.55 N
FBe = μeRA = 0.4 * 11.04 N = 4.42 N
FBd = μdRA = 0.2 * 11.04 N = 2.21 N

Así entonces, vemos que podemos aguantar máximo un empuje de FA + FBe, es decir, 20.97N. En empuje tendremos una fuerza máxima de FA - FBd pues a la fuerza máxima que puede empujar la rueda hay que restar la que tenemos que hacer para superar a la fuerza de rozamiento del apoyo frontal. Resultan 14.34 N. Toda fuerza por encima de esta, hará que nuestras ruedas patinen, pues no será posible transmitir dicha fuerza al suelo.

Entonces, ya sabemos que fuerza como máximo podemos transmitir al suelo, pero, ¿cual necesitamos como mínimo? ¿Qué motor elegir? Para eso usaremos el torque. El torque respecto a un punto, nos sirve para saber si una fuerza será capaz de hacer rotar a dicho punto. Antes, ya hemos usado esto, justo 3 párrafos más arriba. Nosotros calcularemos el torque como

T = F *d

Donde T, indica torque; F fuerza y d, distancia. Por tanto una fuerza de valor 4N a 1m, será igual que otra de 2N a 2m, similar a lo que pasa en la ley de la palanca. Para calcularlo las fuerzas y torque serían como la imagen aproximadamente.

Fuerzas para calcular el torque

De todos modos, esto es un sistema aproximado. En la realidad habrá muchas pérdidas debido a elementos ideales y rozamientos, por lo que siendo prácticos, podemos hacer la siguiente estimación. Si tenemos 2 motores de 1Kg/cm hacen un total de 2Kg/cm, por lo que con unas ruedas de 1 cm de radio (2cm de diámetro) el robot podría pesar hasta 1Kg. Si las ruedas son de 2cm de radio (4cm de diámetro) la mitad, 0.5Kg; y así.

En la mayoría de casos esta aproximación será válida, aunque siempre se podrá afinar muchísimo más. Más adelante comentaré forma experimentales de determinar el peso máximo que pueden mover nuestros motores, así como el agarre que nos están dando las ruedas.

 

LabGNU queda parado indefinidamente

Debido a la falta de tiempo me veo obligado a abandonar este proyecto de forma indefinida. La idea es seguir trabajando en el, pero no se cuando. Seguramente el año que viene vuelva a presentarme al CUSL con este proyecto, para entonces al igual ya tengo algo desarrollado.

De cualquier forma, si hay alguien interesado en trabajar en este tema, puede ponerse en contacto conmigo y así podría pasarle lo poco que he avanzado.

Cómo crear un robot de sumo (Parte II): fuerza de rozamiento

En esta segunda parte voy a hablar del apartado mecánico de un robot de sumo. Me voy a adaptar a las reglas de CosmoBot, ya que es para esta primera competición para la que estoy construyendo mi robot. Las limitaciones serán 20x20cm y 3Kg de peso. Además tendremos en cuenta que el oponente también tendrá estas limitaciones y que la pista es de 1'75m de diámetro.

A la hora de diseñar la parte mecánica lo primero que hay que tener en cuenta es que el peso y dimensiones no sobrepasen los especificados, cosa obvia, pero hay otras cosas que hay que tener en cuenta, como la velocidad que queremos que tenga el robot, la fuerza de rozamiento con el suelo, el centro de masa, etc. Cada una de estas cosas es muy importante a la hora de diseñar nuestro robot, por ello se verán por separado, hoy me centraré en la fuerza de rozamiento. Me gustaría también que muchas veces abusaré un poco del lenguaje y usaré algunos términos que si bien no son exáctos para lo que se usan, serviran para una mejor comprensión, espero sepan comprenderme.

Fuerza de rozamiento

Esta fuerza surge en la superficie que une nuestro robot con el tatami tal y como se muestra en la figura y será la responsable de que podamos empujar más o menos a nuestro contrincante, así como el ser empujados con más o menos facilidad.

En primer lugar si consideramos nuestro robot como un bloque, la fuerza de reacción RN será igual a la masa de nuestro robot multiplicada por la fuerza gravitatoria de la tierra:

FN=m Kg * g m/s2= 3Kg * 9.81m/s2= 29.43N

Para el que no lo recuerde, la letra N se corresponde con Newtons, que es lo mismo que 1 [m*Kg/s2] y es la unidad de la fuerza en el sistema internacional. Para que lo entendamos mejor, si tenemos un cuerpo de 1Kg a y suponemos la aceleración gravitatoria de valor 9.81m/s2 entonces ese cuerpo haría una fuerza en el sentido de la gravedad de 9.81N. En los cálculo anteriores, además se ha supuesto que la masa del robot es la máxima permitida, 3Kg.

Por la ley de acción y reacción de Newton, sabemos que toda fuerza provoca otra fuerza que será igual en magnitud y dirección y contraria en sentido. Es por ello que la fuerza FN provoca la fuerza RN que se denomina reacción o fuerza normal. También sabemos que para empezar a desplazar el bloque necesitaremos aplicar un fuerza P(N), pero esta fuerza deberá de ser capaz de contrarestar a F(N). F(N) es lo que se conoce como fuerza de rozamiento y su valor viene dado por la siguiente relación

F(N)=RN

RN ya la conocemos y µ es una constante, llamada coeficiente de rozamiento, que dependerá de los materiales de los que estén hechos nuestras ruedas y el tatami. Este valor es adimensional, es decir, no tiene unidades. Además este coeficiente tiene dos valores distintos, uno el coeficiente de rozamiento dinámico (µd) y el otro el coeficiente de rozamiento estático (µe). El coeficiente de rozamiento estático por norma es mayor que el dinámico. La diferencia entre uno y otro es simple, mientras nuestro robot esté sin moverse estará usando el µe, en el momento que empiece a desplazar ese coeficiente cambiará a µd. Si suponemos unas ruedas de goma y un suelo de madera, µe será del orden de 0.9 y µd sobre 0.7, por tanto tendriamos una fuerza de:

F(N)=RN*μ = 29.43N * 0.7 ≈ 20.60N

Esta es la fuerza que seremos capaces de vencer sin que nuestras ruedas patinen, o la que seremos capaces de aguantar sin que se desplacen por la superficie. Esto nos servirá a la hora de dimensionar los motores, ya que así sabremos que fuerza será aprovechable.

Hasta aquí todo bien, pero el problema es conocer el coeficiente de rozamiento, así como ver cómo afectan otros factores a la fuerza de rozamiento (número de apoyos, anchura de las ruedas, etc.), pero eso lo dejo para la siguiente parte: Torque y motores.

Cómo crear un robot de sumo (Parte I)

Se acerca CosmoBot 09 y este año tengo la intención de ir para competir tanto en la categoría de sumo como de velocistas. En la categoría de sumo nunca he participado, de hecho nunca he asistido a una competición de este tipo. Es por ello que he empezado a investigar sobre el tema y me he decidido a escribir una serie de entradas, para que sirva de guia a quien quiera construir uno de estos robots.

Lo primero es hablar de este tipo de competición. Es una prueba que se encuentra muy frecuentemente en competiciones robóticas en la mayoría de paises. El objetivo es simple, dos robots se situan dentro de una plataforma circular, que generalmente es negra con un borde blanco, y el primero que consiga echar fuera de la plataforma al otro es el ganador. Las reglas suelen variar de una competición a otra, aunque el dohyo suele respetarse bastante.

Especificaciones típicas de un Dohyo

Por lo general existen 3 categorías de sumo; la más pequeña es conocida como mini-sumo y el peso máximo del robot es de 500g y unas dimensiones de 10x10cm; y luego dos categorías más de 3Kg y 20x20cm y otra de 10Kg y 30x30. Algunas competiciones imponen restricciones en cuanto a la altura, otras no. Hay otro tipo de competiciones más destructivas y que no se deben de confundir con el sumo, llamadas las "robot wars" (buscando desde google se encuentran muchos videos), básicamente consisten en proveer a los robots de armas del tipo motosierras, martillos e incluso sopletes, con el objetivo de destruir al contrincante. Se ve más por EE.UU. y U.K. aunque no es típico verlo en otros sitios.

Sabido esto, lo primero que tendremos que hacer es leernos las normas de la competición a la que tengamos pensado presentar nuestro robot y estar seguros de que cumplimos la normativa, pues sino nos descalificarán. En el caso de CosmoBot podemos encontrarla en el apartado Normativa de sumos. Destacar simplemente los aspectos físicos del robot, 3Kg y máximo 20x20cm, además otra cosa que suele ser la norma, un botón que al pulsarlo inicie una cuenta atrás de 5 segundos, y entonces puede empezar a moverse.

Una vez que pasan esos 5 segundos ambos robots empezarán a moverse y a tratar de eliminar al oponente. Para ello suelen valerse de distintos mecanismo tanto electrónicos como mecánicos que les ayuden a tomar la ventaja del combate.

Los robots son de muy distintas formas y materiales, hay algunos que se venden ya fabricados listos para ser programados o en forma de kit, hay otros creados con piezas de Lego, otros con piezas hechas a medida en máquinas de corte y otros hechos con material reciclado, todo vale.

 

Robot prefabricado

En la próxima entrada dedicada a este tema hablaré de una de las partes más importantes, la parte mecánica: estructura, ruedas, materiales, fuerzas, velocidad, etc. Mientras tanto quien ande interesado puede probar a buscar por google por competiciones de otros años como las de Robolid, MadridBot, CosmoBot, UPC, HispaBot, etc.

CosmoBot 09

Ya está abierto el plazo de inscripción para CosmoBot 09. Se trata de 2 días en los que se celebrarán unos campeonatos de robótica en las categorías de velocistas y sumo. Para los que no estén familiarizados con estas competiciones, las explico un poco.

Velocistas
Se trata de una competición en la que 2 robots autónomos deben de competir por ser el más rápido, pero sin salirse de un recorrido marcado por dos lineas negras. Estos recorridos generalmente suelen contener curvas suaves y además son simétricos. Se coloca un robot en un extremo de la pista y el oponente en el extremo simétrico opuesto. El primero que rebase al oponen es el ganador.
Prueba de velocistas en Robolid

Sumo
Pues su propio nombre lo dice todo, dos robots luchando por sacar del tatami al oponente. El límite del tatami viene delimitado por una linea blanca de 5cm. Si sobrepasa la linea, está eliminado. Por supuesto los robots también han de ser autónomos (en el caso de CosmoBot) pero hay algunas competiciones en las que los robots son radio controlados.

Respecto a los premios, son 3000€, 1500€ y 750€ para 1º, 2º y 3º respectivamente, en cada categoría, por lo que la competición está asegurada. Estos premios son posibles gracias a que La Caixa patrocina el evento. La fecha de inscripción es hasta el 31 de Enero, por lo que más vale no despistarse.

Más información en http://www.roboticspot.com/especial/cosmobot2009/index.php

Implementación de VISA en GNU/Linux

Después de un periodo sin escribir nada en mi blog me gustaría retomar el ritmo y seguir publicando más información referente a mi proyecto para el III CUSL.

Tras revisar varios sitios y algunos documentos sobre instrumentación virtual, parece evidente que el siguiente paso para conseguir una implementación libre de LabGNU será crear una librería VISA abierta. Buscando he podido encontrar OpenVISA (para C), pero parece que está abandonada desde hace tiempo. También existe una librería para python llamada PyVISA, pero que será poco útil de momento, ya que su funcionamiento se lo debe a un módulo de python (parte del mismo proyecto) llamado vpp43, que por lo poco que he mirado parece que se apoya en una librería externa propietaria del fabricante de hardware. El objetivo de este módulo es adaptar las llamadas a la librería propietaría desde el lenguaje python. También le veo un gran inconveniente, y es que los nombres de las funciones cambian, por lo que por ejemplo la función estándar definida por la especificación VISA como viRead, en python sería read, y esto pasa con todas las funciones. De momento queda descartado el uso de este proyecto en LabGNU.

De momento creo que lo principal es tener una implementación de VISA abierta, y salvo que OpenVISA tenga un grado suficiente de madurez, tendré que empezar a construirla. En esta primera fase del proyecto creo que me contentaré con la implementación tenga soporte para RS-232 y según el tiempo disponible GPIB o USB.

De momento esto es todo lo que he podido hacer, ya que el tiempo libre que tengo es menor cada día.

Hoy comienza el tercer encuentro Evento Blog España

Bueno, hoy comienza Evento Blog España por tercer año consecutivo. Al igual que las pasadas dos ediciones tiene lugar en la capital Andaluza. Yo estaré por allí así que espero ver a todos los grandes blogueros de la red.

Yo voy a Evento Blog España

Nos vemos en EBE.

Andalucía Compromiso Digital

Hoy he conocido un nuevo proyecto de la Junta de Andalucía llamado Andalucía Compromiso Digital. Por lo que veo se trata de buscar voluntariado para hacer un poco de alfabetización digital y hacer así más pequeña la gran brecha digital existente en Andalucía.

Os dejo un video promocional:

URL: www.andaluciacompromisodigital.org

Distribuir contenido