Introducción a la Robótica
Memoria de las prácticas obligatorias con Lego
- 13 de Noviembre de 2006:
- Toma de contacto con el "ladrillo" y BrickOS.
- Hola Mundo:
- Copia de BrickOs en el ladrillo con firmdl3 --tty=/dev/ttyS0 /usr/lib/brickos/brickOS.src
- Compilación con Make rescribiendo PROGRAM con nuestro fichero holamundo.c (se genera .lx)
- Transferencia al ladrillo con dll --tty=/dev/ttyS0 holamundo.lx
- holamundo.c (web)
- Sensor de luz:
- Intento de diferenciar con el sensor de luz algo blanco o negro.
- 16 de Noviembre de 2006:
- Sensor de luz:
- Medición satisfactoria del sensor de luz con su valor en crudo, mucho más rico que usando la macro LIGHT_X (usamos ds_scale (SENSOR_X) para el valor en crudo del sensor de luz). Blanco: < 760 y Negro: > 790. Los valores intermedios se supone que ocurren cuando nos estamos saliendo de la linea.
- SensorLuz.c (web)
- Motores:
- Toma de contacto con los motores.
- Pequeño programa que acelera de 50 en 50 empezando desde 0 y frena en cada incremento del intervalo.
- motores.c (fichero)
- Programa de prueba: aceleracion hasta que el sensor detecte blanco, una vez este en blanco si detecta negro vuelven a funcionar los motores.
- motoresLuz.c (fichero)
- 22 de Noviembre de 2006:
- Linea negra sobre fondo blanco.
- Pequeño programa capaz de seguir una linea negra sobre un fondo blanco. Usamos concurrencia: cuando pierde la linea gira a izquierda y derecha, mientras espera al evento "he econtrado linea negra".
- El programa además se para e inicia al pusar el botón Prgm (web)
- Próximo objetivo, intentar averiguar si se sale por la derecha o por la izquierda y ajustar la velocidad de cada uno de los motores a ello (no sabemos si es posible).
- LineaVer1.c (web)
- 27 de Noviembre de 2006:
- Mejora del programa LineaVer1:
- El
programa memoriza si se salió la última vez por la derecha o por la
izquierda. Esto es fácil. ya que al girar hacia la izquierda y derecha
y encontrar la linea, sabemos si estabamos girando hacia la izquierda o
hacia la derecha. Además los giros se hacen de manera incremental, es
decir, giramos un poco a la derecha, despues un poco a la izquierda y
vamos incrementando el giro hasta encontrar la linea negra. Ver segmento código. (web)
- De esta manera, al salirse encuentra la línea más rápido la mayoría de las veces (por ejemplo durante una curva, siempre volverá a la linea por el lado bueno) y disminuye el tiempo de recorrido de la línea.
- Se ha puesto los valores o parámetros modificables como constantes, de esta manera es más fácil hacer comprobaciones y ajustes de los valores.
- La mejora en cuanto a tiempo es de casi 1 minuto a unos 40 segundos.
- LineaBasico.c (fichero).
- 29 de Noviembre de 2006:
- Intento de mejora del programa LineaBasico.
- Ahora, al girar a la derecha o izquierda, si se vuelve a salir por el mismo lado que se salió la última vez, suopnemos que estamos en una curva e intentamos tomarla como tal, acelerando un motor y desacelerando el otro motor. De esta manera, el robot en vez de ir en linea recta, se mueve describiendo una curva.
- Este incremento y decremento se
realiza cada vez que nos salimos por el mismo lado (y dependiendo del
valor de la variable global direccion). En el caso de que nos hayamos
salido por el lado contrario, hacemos que la velocidad en ambos motores
sea la misma y que el robot por tanto, vaya en linea recta. Ver segmento de código. (web)
- Esta mejora es muy sensible a los incrementos y decrementos que hagamos en los motores. Se comporta mejor en curvas largas y suaves, pero el comportamiento es algo peor en curvas seguidas y pronunciadas.
- Conseguimos reducir algo el tiempo, pero no de una manera significativa.
- LineaMejorada.c (fichero).