Algoritmo avanzado para moverse a lo largo de la línea. Movimiento de línea con dos sensores de luz Movimiento de línea suave ev3

15.01.2012, 18:51

Hasta ahora, en artículos sobre algoritmos utilizados al moverse a lo largo de una línea, se consideraba un método cuando el sensor de luz parecía seguir su borde izquierdo o derecho: tan pronto como el robot se mueve a la parte blanca del campo, el controlador devuelve el robot. hacia el borde, el sensor comienza a moverse más profundamente en las líneas negras: el regulador lo enderezó.
A pesar de que la imagen de arriba es para un controlador de relé, el principio general de movimiento del proporcional (controlador P) será el mismo. Como ya se mencionó, la velocidad promedio de dicho movimiento no es muy alta y se hicieron varios intentos para aumentarla debido a una ligera complicación del algoritmo: en un caso se utilizó frenado "suave", en el otro, además de giros. , se introdujo el movimiento hacia adelante.
Para permitir que el robot avanzara en algunas áreas, se asignó un área estrecha en el rango de valores dados por el sensor de luz, que podría denominarse convencionalmente "el sensor está en el borde de la línea".
Este enfoque tiene un pequeño inconveniente: si el robot "sigue" el borde izquierdo de la línea, en los giros a la derecha no detecta inmediatamente la curvatura de la trayectoria y, como resultado, pasa más tiempo buscando la línea y girando. . Además, es seguro decir que cuanto más pronunciado es el giro, más dura la búsqueda.
La siguiente figura muestra que si el sensor no estuviera en el lado izquierdo del borde, sino en el derecho, entonces ya ha detectado la curvatura de la trayectoria y comenzaría a realizar maniobras de giro.

Por lo tanto, es una buena idea equipar al robot con dos sensores a la vez, que estaban ubicados en lados opuestos de la línea y, en consecuencia, ayudarían al robot a responder más rápidamente a los cambios en la dirección del movimiento.
El siguiente paso es determinar cómo afectará este cambio de diseño al programa. Para simplificar, debe comenzar nuevamente con el controlador de relé más simple y, por lo tanto, en primer lugar, está interesado en las posibles posiciones de los sensores en relación con la línea:

De hecho, se puede distinguir un estado más permisible: en rutas difíciles será la intersección de una intersección o algún tipo de engrosamiento en el camino.
No se considerarán otras posiciones de los sensores, porque o se derivan de las que se muestran arriba, o estas son las posiciones del robot cuando salió de la línea y ya no podrá volver a él utilizando la información de los sensores. Como resultado, todas las disposiciones anteriores se pueden reducir a la siguiente clasificación:
  • el sensor izquierdo, así como el derecho, sobre la superficie de la luz
  • sensor izquierdo sobre la superficie clara, sensor derecho sobre la oscuridad
  • sensor izquierdo sobre la superficie oscura, sensor derecho sobre la luz
  • Ambos sensores están ubicados sobre una superficie oscura.
Si en un momento determinado el programa del robot detecta una de estas posiciones, deberá reaccionar en consecuencia:
    Si ambos sensores están por encima de la superficie blanca, entonces esta es una situación normal en la que la línea está entre los sensores, por lo que el robot debe ir en línea recta. Si el sensor izquierdo todavía está por encima de la superficie de luz, y el sensor derecho ya está por encima del oscuro, entonces el robot ha conducido su lado derecho hacia la línea. y eso significa que debe girar a la derecha para que la línea esté nuevamente entre los sensores. Si el sensor izquierdo está sobre una superficie oscura, y el de la derecha está todavía por encima de uno claro, entonces para alinear el robot necesita girar a la izquierda. Si ambos sensores están sobre una superficie oscura, entonces, en general, el robot continúa moviéndose en línea recta.

El diagrama de arriba muestra inmediatamente cómo exactamente debería cambiar el comportamiento de los motores en el programa. Ahora, escribir el programa no debería ser difícil. Debería comenzar eligiendo qué sensor será sondeado primero. Realmente no importa, así que dejémoslo a la izquierda. Es necesario determinar si está sobre una superficie clara o sobre una oscura:
Esta acción aún no le permite saber en qué dirección debe ir el robot. Pero dividirá los estados enumerados anteriormente en dos grupos: (I, II) para la rama superior y (III, IV) para la inferior. Cada uno de los grupos ahora tiene dos estados, por lo que debe seleccionar uno de ellos. Si observa detenidamente los dos primeros estados I y II, difieren en la posición del sensor derecho; en un caso, está sobre una superficie clara, en el otro, sobre una oscura. Esto es lo que determinará la elección de qué acción tomar:
Ahora puede insertar bloques que definan el comportamiento de los motores de acuerdo con las tablas de arriba: la rama superior de la condición anidada define la combinación "ambos sensores en luz", la superior - "izquierda en luz, derecha en oscuridad":
La rama inferior de la afección principal es responsable de otro grupo de estados III y IV. Estas dos condiciones también difieren entre sí en el nivel de iluminación que capta el sensor derecho. Por tanto, determinará la elección de cada uno de ellos:
Las dos ramas resultantes están llenas de bloques de movimiento. La rama superior es responsable del estado "izquierda en oscuridad, derecha en luz", y la inferior, de "ambos sensores en oscuridad".
Cabe señalar que este diseño solo determina cómo encender los motores en función de las lecturas de los sensores en un determinado lugar del campo, naturalmente luego de un momento el programa debe verificar si las lecturas han cambiado con el fin de corregir el comportamiento de los motores, y después de un momento otra vez, otra vez, y así sucesivamente. d. Por lo tanto, debe colocarse en un bucle que proporcione esta verificación iterativa:

Un programa tan simple proporcionará una velocidad de movimiento bastante alta del robot a lo largo de la línea sin sobrepasarla, si establece correctamente la velocidad máxima al conducir en los estados I y IV, y también establece el método óptimo de frenado en los estados II y III - cuanto más pronunciadas son las curvas en la pista, más "duro" debe ser el frenado - la velocidad debe bajar más rápido y viceversa - con giros suaves es muy posible aplicar el frenado a través de la potencia apagada o incluso en general a través de una ligera caída en velocidad.

También deben decirse algunas palabras sobre la ubicación de los sensores en el robot. Obviamente, para la ubicación de estos dos sensores con respecto a las ruedas, se aplicarán las mismas recomendaciones que para un sensor, solo para el vértice del triángulo, en este caso, se toma la mitad del segmento que conecta los dos sensores. La misma distancia entre los sensores también debe seleccionarse a partir de las características de la pista: cuanto más cerca estén los sensores entre sí, más a menudo se alineará el robot (realizará giros relativamente lentos), pero si los sensores se extienden lo suficiente , existe el riesgo de salirse de la pista, por lo que tendrá que realizar giros más cerrados y velocidades de desplazamiento más lentas en las secciones rectas.



Echemos un vistazo al algoritmo más simple para moverse a lo largo de la línea negra en un sensor de un solo color en el EV3.

Este algoritmo es el más lento, pero el más estable.

El robot se moverá no estrictamente a lo largo de la línea negra, sino a lo largo de su borde, girando a la izquierda y a la derecha y avanzando gradualmente.

El algoritmo es muy simple: si el sensor ve negro, entonces el robot gira en una dirección, si es blanco, en la otra.

Implementación en el entorno Lego Mindstorms EV3

En ambos bloques de movimiento, seleccione el modo "habilitar". Colocamos el interruptor en el sensor de color - medición - color. En la parte inferior, no olvide cambiar "sin color" a blanco. Además, es necesario especificar correctamente todos los puertos.

No olvide agregar un ciclo, el robot no irá a ningún lado sin él.

Echale un vistazo. Para obtener mejores resultados, intente cambiar la configuración de dirección y potencia.

Movimiento con dos sensores:

Ya conoce el algoritmo para el movimiento del robot a lo largo de la línea negra usando un sensor. Hoy consideraremos el movimiento a lo largo de una línea utilizando dos sensores de color.
Los sensores deben instalarse de modo que la línea negra quede entre ellos.


El algoritmo será el siguiente:
Si ambos sensores ven blanco, avanzamos;
Si uno de los sensores ve blanco y el otro negro, gire hacia negro;
Si ambos sensores ven negro, estamos en una intersección (por ejemplo, pararemos).

Para implementar el algoritmo, necesitamos rastrear las lecturas de ambos sensores y solo entonces configurar el movimiento para el robot. Para hacer esto, usaremos conmutadores anidados en otro conmutador. Por lo tanto, primero interrogaremos al primer sensor y luego, independientemente de las lecturas del primero, interrogaremos al segundo sensor y luego configuraremos la acción.
Conectemos el sensor izquierdo al puerto # 1, el de la derecha al puerto # 4.

Programa con comentarios:

No olvidemos que arrancamos los motores en el modo "On" para que funcionen el tiempo que sea necesario en función de las lecturas de los sensores. Además, a menudo se olvidan de la necesidad de un bucle; sin él, el programa finalizará inmediatamente.

http://studrobots.ru/

El mismo programa para el modelo NXT:

Estudie el programa de movimiento. Programe el robot. Video de prueba del modelo de avance

El texto de la obra se coloca sin imágenes ni fórmulas.
La versión completa del trabajo está disponible en la pestaña "Archivos de trabajo" en formato PDF.

Juego de construcción Lego Mindstorms EV3

Etapa preparatoria

Crear y calibrar un programa

Conclusión

Literatura

1. Introducción.

La robótica es una de las áreas más importantes del progreso científico y tecnológico, en la que los problemas de la mecánica y las nuevas tecnologías entran en contacto con los problemas de la inteligencia artificial.

En los últimos años, los avances en robótica y sistemas automatizados han transformado las áreas personales y comerciales de nuestras vidas. Los robots se utilizan ampliamente en el transporte, en la exploración de la Tierra y el espacio, en la cirugía, en la industria militar, en la investigación de laboratorio, en el campo de la seguridad, en la producción masiva de bienes industriales y de consumo. Muchos dispositivos que toman decisiones basadas en datos recibidos de sensores también pueden considerarse robots, como son, por ejemplo, ascensores, sin los cuales nuestra vida ya es impensable.

Mindstorms EV3 Constructor nos invita a adentrarnos en el fascinante mundo de los robots, sumergirnos en el complejo entorno de la tecnología de la información.

Objetivo: aprender a programar el movimiento del robot en línea recta.

    Familiarícese con el constructor Mindstorms EV3 y su entorno de programación.

    Escribir programas para el movimiento del robot en línea recta a 30 cm, 1 m 30 cm y 2 m 17 cm.

    Constructor de Mindstorms EV3.

Piezas del juego de construcción - 601 piezas, servomotor - 3 piezas, sensor de color, sensor de movimiento táctil, sensor de infrarrojos y sensor táctil. El bloque del microprocesador EV3 es el cerebro del constructor de LEGO Mindstorms.

Un gran servomotor es responsable del movimiento del robot, que está conectado al microordenador EV3 y hace que el robot se mueva: ir hacia adelante y hacia atrás, girar y conducir a lo largo de una trayectoria determinada. Este servomotor tiene un sensor de rotación incorporado, que permite un control muy preciso del movimiento del robot y su velocidad.

Puede utilizar el software informático EV3 para que su robot realice una acción. El programa consta de varias unidades de control. Trabajaremos con un bloque de movimiento.

El bloque de movimiento controla los motores del robot, lo enciende, lo apaga, lo hace funcionar según las tareas. Puede programar el movimiento para un cierto número de revoluciones o grados.

    Etapa preparatoria.

    Creación de un campo técnico.

En el campo de trabajo del robot, aplicaremos una marca, utilizando cinta aislante y una regla, crearemos tres líneas de 30 cm de largo - una línea verde, 1 m 15 cm - una línea roja y 2 m 17 cm - una línea negra .

    Cálculos necesarios:

El diámetro de la rueda del robot es de 5 cm 7 mm = 5,7 cm.

Una revolución de la rueda del robot es igual a la circunferencia con un diámetro de 5.7 cm. La circunferencia se encuentra mediante la fórmula

Donde r es el radio de la rueda, d es el diámetro, π = 3.14

l = 5,7 * 3,14 = 17,898 = 17,9.

Aquellos. en una revolución de rueda, el robot se desplaza 17,9 cm.

Calculemos el número de revoluciones necesarias para conducir:

N = 30: 17,9 = 1,68.

    1 metro 30 cm = 130 cm

N = 130: 17,9 = 7,26.

    2 m 17 cm = 217 cm.

N = 217: 17,9 = 12,12.

    Creación y calibración del programa.

Crearemos el programa según el siguiente algoritmo:

Algoritmo:

    Seleccione el bloque de movimiento en el software Mindstorms EV3.

    Encienda ambos motores en la dirección especificada.

    Espere el cambio en el valor del sensor de rotación de uno de los motores al valor especificado.

    Apague los motores.

Cargamos el programa terminado en la unidad de control del robot. Ponemos el robot en el campo y presionamos el botón de inicio. El EV3 atraviesa el campo y se detiene al final de la línea establecida. Pero para lograr un acabado preciso, es necesario calibrar, ya que factores externos influyen en el movimiento.

    El campo se instala en los escritorios de los estudiantes, por lo que es posible una ligera desviación de la superficie.

    La superficie del campo es lisa, por lo tanto, es posible una mala adherencia de las ruedas del robot al campo.

    Al calcular el número de revoluciones, tuvimos que redondear los números y, por lo tanto, cambiando las centésimas de las revoluciones, logramos el resultado requerido.

5. Conclusión.

Aprender a programar el robot para que se mueva en línea recta será útil para crear programas más complejos. Como regla general, todos los tamaños de movimiento se indican en los términos de referencia para las competencias de robótica. Son necesarios para que el programa no se sobrecargue por condiciones lógicas, ciclos y otros bloques de control complejos.

En la siguiente etapa de conocimiento del robot Lego Mindstorms EV3, tendrá que aprender a programar giros en un cierto ángulo, movimiento en círculo, espirales.

Es muy interesante trabajar con el constructor. Aprendiendo más sobre sus capacidades, puede resolver cualquier problema técnico. Y en el futuro, quizás, cree sus propios modelos interesantes del robot Lego Mindstorms EV3.

Literatura.

    D. Koposov "El primer paso hacia la robótica para los grados 5-6". - M.: Binom. Laboratorio de conocimiento, 2012 - 286 p.

    Filippov S. A. "Robótica para niños y padres" - "Ciencia" 2010.

    recursos de Internet

    http: // lego. rkc-74.ru/

    http://www.9151394.ru/projects/lego/lego6/beliovskaya/

    http: // www. Lego. com / education /

Uno de los movimientos básicos en la construcción ligera es seguir la línea negra.

La teoría general y los ejemplos específicos de la creación de un programa se describen en el sitio web wroboto.ru

Describiré cómo implementamos esto en el entorno EV3, ya que existen diferencias.

Lo primero que el robot necesita saber es el valor del “punto ideal” ubicado en el borde de blanco y negro.

La ubicación del punto rojo en la figura corresponde exactamente a esta posición.

La opción de cálculo ideal es medir el valor de blanco y negro y tomar la media aritmética.

Esto se puede hacer manualmente. Pero las desventajas son visibles de inmediato: incluso en poco tiempo, la iluminación puede cambiar y el valor calculado resultará incorrecto.

Esto significa que puede hacer que el robot lo haga.

A través de nuestros experimentos, descubrimos que no es necesario medir tanto el blanco como el negro. Solo se puede medir el blanco. Y el valor de punto ideal se calcula como el valor de blanco dividido por 1,2 (1,15), según el ancho de la línea negra y la velocidad del robot.

El valor calculado debe escribirse en una variable para poder acceder a él más tarde.

Cálculo del punto ideal

El siguiente parámetro involucrado en el movimiento es la relación de dirección. Cuanto más grande es, más nítido reacciona el robot a los cambios de iluminación. Pero un valor demasiado alto hará que el robot se mueva. El valor se selecciona experimentalmente de forma individual para cada diseño de robot.

El último parámetro es la potencia base de los motores. Afecta la velocidad de movimiento del robot. Un aumento en la velocidad de movimiento conduce a un aumento en el tiempo de respuesta del robot a los cambios en la iluminación, lo que puede provocar una desviación de la trayectoria. El valor también se selecciona experimentalmente.

Por conveniencia, estos parámetros también se pueden escribir en variables.

Relación de dirección y potencia base

La lógica del movimiento a lo largo de la línea negra es la siguiente: se mide la desviación del punto ideal. Cuanto más grande es, más fuerte debe esforzarse el robot por volver a él.

Para hacer esto, calculamos dos números: el valor de potencia de cada uno de los motores B y C por separado.

En forma de fórmulas, se ve así:

Donde Isens es el valor de las lecturas del sensor de luz.

Finalmente, la implementación en EV3. Es más conveniente organizarlo como un bloque separado.

Implementación de algoritmos

Este es exactamente el algoritmo que se implementó en el robot para la categoría media WRO 2015

Esta tarea es clásica, conceptualmente simple, se puede resolver muchas veces, y cada vez descubrirás algo nuevo por ti mismo.

Hay muchos enfoques para resolver el problema de seguimiento de línea. La elección de uno de ellos depende del diseño específico del robot, del número de sensores, de su ubicación con respecto a las ruedas y entre sí.

En nuestro ejemplo, analizaremos tres ejemplos de un robot basado en el modelo de entrenamiento básico Robot Educator.

Para empezar, armamos un modelo básico del robot de entrenamiento Robot Educator, para ello puedes usar las instrucciones en el software MINDSTORMS EV3.

Además, por ejemplo, necesitamos sensores de color de luz EV3. Estos sensores de luz, como ningún otro, son los que mejor se adaptan a nuestra tarea, al trabajar con ellos, no tenemos que preocuparnos por la intensidad de la luz ambiental. Para este sensor, en los programas usaremos el modo de luz reflejada, en el que se estima la cantidad de luz reflejada de la retroiluminación roja del sensor. Los límites de las lecturas del sensor son 0 - 100 unidades, para "sin reflexión" y "reflexión total", respectivamente.

Por ejemplo, analizaremos 3 ejemplos de programas para moverse a lo largo de una trayectoria negra representada sobre un fondo plano y claro:

· Un sensor, con regulador P.

· Un sensor, con controlador de PC.

· Dos sensores.

Ejemplo 1. Un sensor, con un controlador P.

Diseño

El sensor de luz está montado en un rayo convenientemente ubicado en el modelo.


Algoritmo

El funcionamiento del algoritmo se basa en el hecho de que, según el grado de superposición del haz de luz de fondo del sensor con una línea negra, las lecturas devueltas por el sensor varían con un gradiente. El robot mantiene la posición del sensor de luz en el borde de la línea negra. Al convertir los datos de entrada del sensor de luz, el sistema de control genera un valor para la velocidad de rotación del robot.


Dado que en una trayectoria real el sensor genera valores en todo su rango de trabajo (0-100), entonces el valor al que se esfuerza el robot es 50. En este caso, los valores de las funciones de rotación transmitidas se forman en el rango -50-50, pero estos valores no son suficientes para un giro pronunciado de la trayectoria. Por lo tanto, el rango debe expandirse una vez y media a -75 - 75.

Como resultado, en el programa, la función de la calculadora es un controlador proporcional simple. Cuya función ( (a-50) * 1,5 ) en el rango de trabajo del sensor de luz genera los valores de rotación de acuerdo con el gráfico:

Un ejemplo de cómo funciona el algoritmo

Ejemplo 2. Un sensor, con un controlador de PC.

Este ejemplo se basa en la misma construcción.

Es posible que hayas notado que en el ejemplo anterior, el robot se balanceó excesivamente, lo que no le permitió acelerar lo suficiente. Ahora intentaremos mejorar un poco esta situación.

A nuestro controlador proporcional, también agregamos un controlador de cubo simple que agregará flexibilidad a la función del controlador. Esto reducirá el balanceo del robot cerca del límite deseado de la trayectoria, así como también producirá sacudidas más fuertes a una gran distancia de él.