Segway

    segwayEl Segway es el primer aparato de transporte impulsado eléctricamente que mantiene su propio equilibrio. Con unas dimensiones inferiores al tamaño promedio de un cuerpo adulto y la habilidad de imitar el equilibrio humano, el Segway usa el mismo espacio que un peatón y puede ir a cualquier sitio por donde una persona puede andar. Este vehículo permite ir más lejos, moverse más rápido y aumentar la cantidad de peso que puede cargar por los sitios por donde se anda normalmente.

    segway_comercial

    El segway puede modelizarse como el péndulo invertido, un problema clásico de control, un sistema no lineal e inestable en ausencia de control. Es necesaria la presencia de un control con objeto de estabilizar el sistema. El segway emplea sensores de inclinación, giróscopos y la electrónica necesaria para controlar el movimiento del vehículo.

    Podemos encontrar varias implementaciones realizadas con LEGO que resuelven el problema de estabilidad.

    legway1

    Steve Hassenplug, creador del LegWay en el 2002, emplea un método de control diferente para mantener estable un robot que se sujeta sobre 2 ruedas. El vehículo fue construído con el LEGO MINDSTORMS RCX, pero el sistema de control estaba basado en la información de 2 sensores EOPD (Electro-Optical Proximity Detector), que devolvían la distancia de un punto concreto del vehículo al suelo. Esto proporcionaba una medida indirecta del ángulo de inclinación del vehículo y eliminaba la necesidad de uso de los giróscopos. El programa fue escrito en BrickOS (LegOS).

    legway_light

    A partir de la idea de Steve surgieron otras variantes, como la de James Matthews en el 2004, que basó la realimentación en función de la cantidad de luz recibida de dos sensores situados delante y detrás del vehículo. Con un código tan simple como el siguiente de NQC consiguió estabilizarlo durante 10-15 seg.

    #define SENSOR_3_THRESHOLD 49 // Valor a medir experimentalmente
    #define SENSOR_1_THRESHOLD 45 // Valor a medir experimentalmente

    task main () {
    SetSensor(SENSOR_1, SENSOR_LIGHT);
    SetSensor(SENSOR_3, SENSOR_LIGHT);
    SetPower(OUT_A+OUT_C, OUT_FULL);

    until(false) {
    if (SENSOR_1 >= SENSOR_1_THRESHOLD) {
    OnFwd(OUT_A);
    OnRev(OUT_C);
    Wait(1);
    }
    if (SENSOR_3 >= SENSOR_3_THRESHOLD) {
    OnRev(OUT_A);
    OnFwd(OUT_C);
    }
    }
    }

    segway_philo

    La inspiración del modelo de la fotografía anterior de Philippe Hurbain la proporcionó el Legway. El modelo de Philo se basa en el NXT y realimenta la posición con el sensor de luminosidad. Tiene varios vídeos en los que documenta el modelo estabilizado durante 1.5 minutos.

    Podemos deducir la inclinación del robot a través del sensor de luminosidad teniendo en cuenta que existe una relación entre luminosidad y ángulo: partiendo de una posición de equilibrio se toma la medida de referencia de luminosidad. Si el robot se cae hacia el lado del sensor, es decir, se acerca el sensor al suelo, crece el valor de luminosidad y de este valor inferimos el ángulo. Para ajustar los parámetros es necesario raelizar una calibración previa. Debido a que el sistema es no lineal y la variación de la respuesta obtenida no es la misma dependiendo si el robot cae hacia uno u otro lado, se han dispuesto dos sensores, uno a cada lado del robot, y para el cálculo de la inclinación se hace uso de la lectura del sensor cuya luminosidad es mayor. Para que este sistema funcione debemos trabajar en unas condiciones de iluminación controladas, a la par que la superficie debe ser lo más homogénea posible. Es posible trabajar en condiciones distintas si implementamos un sistema adaptativo. Por ejemplo, si la lectura de ambos sensores crece, podemos encontrarnos en un sistema en el que la iluminación del entorno está aumentando o la superficie sobre la que nos movemos es más clara, por lo que deberemos de adaptar los umbrales de trabajo a esta nueva situación.

    El programa fue escrito en NBC y para el desarrollo hizo uso de BricxCC.
    Philo proporciona el código fuente del modelo.

    Basándose en los modelos anteriores de Steve Hassenplug y de Philippe Hurbain, Ryo Watanabe creó en el 2007 una nueva versión basada en el NXT y haciendo uso del giróscopo. En su página documenta con todo detalle desde la estructura hasta la obtención de las ecuaciones que caracterizan al modelo.

    nxtway-g_ryo

    nxtOSEK proporciona el API en C para el NXTway-GS.

    Este otro modelo de cadornabeach descubre su inclinación mediante sensores de luminosidad y está demás controlado por un segundo NXT a través de bluetooth.

    Aunque no lo hemos comentado, también es posible hacer uso del acelerómetro y calcular la inclinación mediante trigonometría.

    Artículos relacionados:

    1. Resolvedor del cubo de Rubik
    2. Multiplexor de sensores NXT
    3. Robot NXT Escáner
    4. Lenguajes de programación para NXT
    5. Uso del nuevo sensor de color con NXC

    Escribe un comentario

    You must be registrado para poder escribir un comentario.