Seguimiento de línea con dos sensores de luz. Concurso internacional de robots - Reglas - Ejemplos de robots - Movimiento de línea de Lego EV3 Robot Lego ev3

Así es como una persona ve la línea:

Así es como lo ve el robot:


Usaremos esta función cuando diseñemos y programemos un robot para la categoría de competencia "Trayectoria".

Hay muchas formas de enseñar a un robot a ver una línea y moverse a lo largo de ella. Hay programas complejos y otros muy simples.

Quiero hablar sobre una forma de programación que incluso los niños en los grados 2-3 dominarán. A esta edad les resulta mucho más fácil montar estructuras siguiendo instrucciones, y programar un robot es una tarea difícil para ellos. Pero este método le permitirá al niño programar el robot en cualquier ruta de la pista en 15-30 minutos (teniendo en cuenta la verificación y el ajuste por etapas de algunas características de la trayectoria).

Este método se probó en competencias municipales y regionales de robótica en la región de Surgut y en el Okrug-Yugra autónomo de Khanty-Mansi y llevó a nuestra escuela a los primeros lugares. Allí me convencí de que este tema es muy relevante para muchos equipos.

Bueno, comencemos.

Al prepararse para este tipo de competencia, la programación es solo una parte de la solución al problema. Debe comenzar diseñando un robot para una pista específica. En el próximo artículo, te mostraré cómo hacerlo. Bueno, como el movimiento a lo largo de la línea es muy común, comenzaré con la programación.

Considere la versión del robot con dos sensores de luz, ya que es más comprensible para los estudiantes de primaria.

Los sensores de luz están conectados a los puertos 2 y 3. Motores a los puertos B y C.
Los sensores se colocan en los bordes de la línea (intente experimentar colocando los sensores a diferentes distancias entre sí ya diferentes alturas).
Un punto importante. Para el mejor funcionamiento de dicho circuito, es deseable seleccionar un par de sensores de acuerdo con los parámetros. De lo contrario, será necesario introducir un bloque para corregir los valores de los sensores.
Instalación de sensores en el chasis según el esquema clásico (triángulo), aproximadamente como en la figura.

El programa constará de un pequeño número de bloques:


1. Dos bloques de sensor de luz;
2. Cuatro bloques de "Matemáticas";
3. Dos bloques de motores.

El robot está controlado por dos motores. La potencia de cada uno es de 100 unidades. Para nuestro esquema, tomaremos el valor promedio de la potencia del motor igual a 50. Es decir, la velocidad promedio al moverse en línea recta será igual a 50 unidades. Al desviarse del movimiento rectilíneo, la potencia de los motores aumentará o disminuirá proporcionalmente, dependiendo del ángulo de desviación.

Ahora averigüemos cómo conectar todos los bloques, configurar el programa y qué sucederá en él.
Expongamos dos sensores de luz y asígneles los puertos 2 y 3.
Tomamos un bloque de matemáticas y seleccionamos "Resta".
Conectemos los sensores de luz de las salidas de "Intensidad" con neumáticos al bloque matemático a las entradas "A" y "B".
Si los sensores del robot se instalan simétricamente desde el centro de la línea de seguimiento, los valores de ambos sensores serán iguales. Después de la resta, obtenemos el valor - 0.
El siguiente bloque de matemáticas se usará como un coeficiente y deberá configurar "Multiplicar" en él.
Para calcular el coeficiente, debe medir el nivel de "blanco" y "negro" con la unidad NXT.
Supongamos: blanco -70, negro -50.
A continuación, calculamos: 70-50=20 (diferencia entre blanco y negro), 50/20=2,5 ​​(establecemos el valor promedio de potencia al moverse en línea recta en los bloques de matemáticas a 50. Este valor más la potencia añadida al ajustar el movimiento debe ser igual a cien)
Intente establecer el valor en 2,5 en la entrada "A" y luego recójalo con mayor precisión.
Conecte la salida "Resultado" del bloque matemático "Resta" anterior a la entrada "B" del bloque matemático "Multiplicación".
Luego viene un par: un bloque de matemáticas (adición) y motor B.
Configuración del bloque matemático:
La entrada "A" se establece en 50 (la mitad de la potencia del motor).
La salida del bloque "Resultado" está conectada por un bus a la entrada "Potencia" del motor B.
Después del vapor está el bloque matemático (Resta) y el motor C.
Configuración del bloque matemático:
La entrada "A" se establece en 50.
La entrada "B" está conectada por un bus a la salida "Resultado" del bloque de matemáticas "Multiplicación".
La salida del bloque "Resultado" está conectada por un bus a la entrada "Potencia" del motor C.

Como resultado de todas estas acciones, recibirá el siguiente programa:

Como todo esto funcionará en un ciclo, agregamos el "Ciclo", seleccionamos y lo transferimos todo al "Ciclo".

Ahora intentemos averiguar cómo funcionará el programa y cómo configurarlo.


Mientras el robot se mueve en línea recta, los valores de los sensores son los mismos, lo que significa que la salida del bloque "Restar" tendrá el valor 0. La salida del bloque "Multiplicación" también da el valor 0. Este valor se alimenta en paralelo al par de control del motor. Dado que en estos bloques se establece el valor 50, sumar o restar 0 no afecta la potencia de los motores. Ambos motores funcionan a la misma potencia de 50 y el robot rueda en línea recta.

Supongamos que la pista hace un giro o el robot se desvía de una línea recta. ¿Lo que sucederá?

La figura muestra que la iluminación del sensor conectado al puerto 2 (en adelante, sensores 2 y 3) aumenta, ya que pasa a un campo blanco, y la iluminación del sensor 3 disminuye. Suponga que los valores de estos sensores se convierten en: sensor 2 - 55 unidades y sensor 3 - 45 unidades.
El bloque "Restas" determinará la diferencia entre los valores de los dos sensores (10) y lo alimentará al bloque de corrección (multiplicación por un factor (10 * 2.5 = 25)) y luego a los bloques de control
motores
En el bloque matemático (Adición) del control del motor B al valor de velocidad promedio de 50
Se sumarán 25 y se aplicará un valor de potencia de 75 al motor B.
En el bloque matemático (Sustracción) del control del motor C, se restarán 25 del valor de velocidad promedio de 50 y se aplicará un valor de potencia de 25 al motor C.
Así, se corregirá la desviación de una línea recta.

Si la pista gira bruscamente hacia un lado y el sensor 2 está en blanco y el sensor 3 está en negro. Los valores de iluminación de estos sensores se convierten en: sensor 2 - 70 unidades y sensor 3 - 50 unidades.
El bloque "Resta" determinará la diferencia entre los valores de los dos sensores (20) y la alimentará al bloque de corrección (20 * 2.5 = 50) y luego a los bloques de control del motor.
Ahora, en el bloque de matemáticas (Suma) que controla el motor B, el valor de potencia 50 +50 = 100 se aplicará al motor B.
En el bloque matemático (Sustracción) del control del motor C, se aplicará un valor de potencia de 50 - 50 = 0 al motor C.
Y el robot hará un giro brusco.

En campos blancos y negros, el robot debe moverse en línea recta. Si esto no sucede, intente hacer coincidir los sensores con los mismos valores.

Ahora vamos a crear un nuevo bloque y usarlo para mover el robot a lo largo de cualquier pista.
Seleccione el ciclo, luego en el menú "Editar", seleccione el comando "Crear mi bloque".

En el cuadro de diálogo "Generador de bloques", asigne un nombre a nuestro bloque, por ejemplo, "Ir", seleccione un icono para el bloque y haga clic en "LISTO".

Ahora tenemos un bloque que se puede usar en los casos en que necesitamos movernos a lo largo de la línea.

En esta lección, continuaremos explorando el uso del sensor de color. El material que se presenta a continuación es muy importante para seguir estudiando el curso de robótica. Después de que aprendamos a usar todos los sensores Lego mindstorms EV3 para resolver muchos problemas prácticos, nos basaremos en el conocimiento adquirido en esta lección.

6.1. Sensor de color - Modo de intensidad de luz reflejada

Entonces, estamos comenzando a estudiar el siguiente modo de operación del sensor de color, que se llama "Brillo de la luz reflejada". En este modo, el sensor de color dirige un haz de luz roja a un objeto o superficie cercana y mide la cantidad de luz reflejada. Los objetos más oscuros absorberán la luz, por lo que el sensor leerá un valor más bajo que las superficies más claras. El rango de valores del sensor se mide desde 0 (muy oscuro) a 100 (muy brillante). Este modo de operación del sensor de color se usa en muchas tareas en robótica, por ejemplo, para organizar el movimiento del robot a lo largo de una ruta determinada a lo largo de una línea negra dibujada en una capa blanca. Al utilizar este modo, se recomienda colocar el sensor de tal manera que la distancia de este a la superficie en estudio sea aproximadamente 1 cm (figura 1).

Arroz. una

Pasemos a los ejercicios prácticos: el sensor de color ya está instalado en nuestro robot y dirigido hacia la superficie del revestimiento sobre el que se moverá nuestro robot. La distancia entre el sensor y el suelo es la recomendada. El sensor de color ya está conectado al puerto "2" Ladrillo EV3. Carguemos el entorno de programación, conectemos el robot al entorno y usemos el campo de rayas de color que creamos para completar las tareas de la Sección 5.4 de la Lección 5 para tomar medidas. Instale el robot de manera que el sensor de color esté ubicado sobre la superficie blanca. "Página de hardware" los entornos de programación cambian al modo "Puertas de vista" (Fig. 2 pos. 1). En este modo podemos observar todas las conexiones que hemos realizado. Sobre el Arroz. 2 se muestran los puertos conectados "B" Y "C" dos grandes motores, y al puerto "2" - sensor de color.

Arroz. 2

Para seleccionar la opción para mostrar las lecturas del sensor, haga clic en la imagen del sensor y seleccione el modo deseado (Fig. 3)

Arroz. 3

Sobre el Arroz. 2 pos. 2 podemos ver que el valor de la lectura del sensor de color sobre la superficie blanca es 84 . En su caso, puede obtener un valor diferente, ya que depende del material de la superficie y de la iluminación dentro de la habitación: parte de la luz, reflejada desde la superficie, incide en el sensor y afecta sus lecturas. Habiendo instalado el robot de tal manera que el sensor de color esté ubicado sobre la franja negra, arreglamos sus lecturas (Figura 4). Intente medir usted mismo los valores de luz reflejada por encima de las bandas de color restantes. ¿Qué valores obtuviste? Escribe tu respuesta en los comentarios de esta lección.

Arroz. 4

Ahora resolvamos problemas prácticos.

Tarea número 11: es necesario escribir un programa para el movimiento del robot, que se detiene cuando llega a la línea negra.

Solución:

El experimento nos mostró que al cruzar la línea negra, el valor del sensor de color en el modo "Brillo de la luz reflejada" es igual 6 . Entonces, para cumplir Tareas #11 nuestro robot debe moverse en línea recta hasta que el valor deseado del sensor de color se haga más pequeño 7 . Usemos el bloque de programa que ya nos es familiar. "Expectativa" Paleta naranja. Elijamos el modo de operación del bloque de programa requerido por la condición del problema "Esperando" (Fig. 5).

Arroz. cinco

También debe configurar los parámetros del bloque de programa "Expectativa". Parámetro "Tipo de comparación" (Fig. 6 pos. 1) puede tomar los siguientes valores: "Iguales"=0, "No es igual"=1, "Más"=2, "Más o igual"=3, "Menos"=4, "Menos que o igual a"=5. En nuestro caso, establecemos "Tipo de comparación" en significado "Menos". Parámetro "Límite" igualar a 7 (Fig. 6 pos. 2).

Arroz. 6

Tan pronto como el valor del sensor de color se establece en menos de 7 , qué pasa cuando el sensor de color está por encima de la línea negra, necesitaremos apagar los motores, parando el robot. Problema resuelto (figura 7).

Arroz. 7

Para continuar con nuestros estudios, necesitaremos hacer un nuevo campo, que es un círculo negro con un diámetro de aproximadamente 1 metro, aplicado a un campo blanco. El grosor de la línea circular es de 2 a 2,5 cm Para la base del campo, puede tomar una hoja de papel A0 (841x1189 mm), pegar dos hojas de papel A1 (594x841 mm). En este campo, marque la línea del círculo y pinte sobre ella con tinta negra. También puede descargar el diseño del campo, realizado en formato Adobe Illustrator, y luego ordenar su impresión en tela de pancarta en una imprenta. El tamaño del diseño es de 1250x1250 mm. (Puede ver el diseño descargado a continuación abriéndolo en Adobe Acrobat Reader)

Este campo nos será útil para resolver varias tareas clásicas del curso de robótica.

Tarea número 12: es necesario escribir un programa para un robot que se mueve dentro de un círculo bordeado por un círculo negro de acuerdo con la siguiente regla:

  • el robot avanza en línea recta;
  • al llegar a la línea negra, el robot se detiene;
  • el robot retrocede dos revoluciones de los motores;
  • el robot gira a la derecha 90 grados;
  • se repite el movimiento del robot.

El conocimiento adquirido en las lecciones anteriores lo ayudará a crear un programa que resuelva el Problema 12 por su cuenta.

Solución del problema No. 12

  1. Comience de frente (Fig. 8 pos. 1);
  2. Espere a que el sensor de color cruce la línea negra (Fig. 8 pos. 2);
  3. Retrocede 2 turnos (Fig. 8 pos. 3);
  4. Gire a la derecha 90 grados (Fig. 8 pos. 4); el valor del ángulo de rotación se calcula para el robot ensamblado según la instrucción small-robot-45544 (Fig. 8 pos. 5);
  5. Repita los comandos 1 - 4 en un bucle sin fin (Fig. 8 pos. 6).

Arroz. 8

Al funcionamiento del sensor de color en el modo "Brillo de la luz reflejada" volveremos muchas veces cuando consideremos algoritmos para moverse a lo largo de la línea negra. Mientras tanto, analicemos el tercer modo de funcionamiento del sensor de color.

6.2. Sensor de color - Modo de intensidad de luz ambiental

Modo de sensor de color "Brillo de la luz ambiental" muy similar al modo "Brillo de la luz reflejada", solo que en este caso el sensor no emite luz, sino que mide la luz natural del ambiente. Visualmente, este modo de funcionamiento del sensor se puede determinar mediante un LED azul que brilla débilmente. Las lecturas del sensor varían de 0 (falta de luz) a 100 (la luz más brillante). Al resolver problemas prácticos que requieren medir la luz ambiental, se recomienda colocar el sensor de manera que permanezca lo más abierto posible y no esté obstruido por otras partes y estructuras.

Conectemos el sensor de color a nuestro robot de la misma manera que conectamos el sensor táctil en la lección n.º 4 (Figura 9). Conecte el sensor de color con un cable al puerto "2" Ladrillo EV3. Pasemos a la resolución de problemas prácticos.

Arroz. nueve

Tarea #13: es necesario escribir un programa que cambie la velocidad de nuestro robot en función de la intensidad de la iluminación exterior.

Para resolver este problema, necesitamos aprender cómo obtener el valor actual del sensor. Y la paleta Amarilla de bloques de programa, que se llama "Sensores".

6.3. Paleta amarilla - "Sensores"

La paleta amarilla del entorno de programación Lego mindstorms EV3 contiene bloques de programación que le permiten recibir lecturas actuales del sensor para su posterior procesamiento en el programa. A diferencia, por ejemplo, del bloque de programa "Expectativa" Los bloques de programa de paleta naranja, paleta amarilla transfieren inmediatamente el control a los siguientes bloques de programa.

El número de bloques de programación en la paleta amarilla es diferente en las versiones doméstica y educativa del entorno de programación. En la versión doméstica del entorno de programación, no hay bloques de programación para sensores que no estén incluidos en la versión doméstica del constructor. Pero, si es necesario, se pueden conectar de forma independiente.

La versión educativa del entorno de programación contiene bloques de programación para todos los sensores que se pueden usar con el constructor Lego mindstorms EV3.

Volvamos a la decisión. Tareas #13 y vea cómo puede recibir y procesar las lecturas del sensor de color. Como ya sabemos: el rango de valores del sensor de color en el modo "Brillo de la luz ambiental" está dentro del rango de 0 antes de 100 . El parámetro que regula la potencia de los motores tiene el mismo rango. Intentemos ajustar la potencia de los motores en el bloque de programa leyendo el sensor de color. "Direccion".

Solución:


Arroz. 10

Carguemos el programa resultante en el robot y ejecútelo para su ejecución. ¿El robot se movió lentamente? Encendamos la linterna LED e intentemos llevarla al sensor de color a diferentes distancias. ¿Qué está pasando con el robot? Cerremos el sensor de color con la palma de nuestra mano. ¿Qué sucedió en este caso? Escriba las respuestas a estas preguntas en los comentarios de la lección.

Tarea - Bonificación

Cargue en el robot y ejecute la tarea que se muestra en la siguiente figura. Repita los experimentos con la linterna LED. Comparte tus impresiones en los comentarios de la lección.

Consideremos el algoritmo más simple para moverse a lo largo de una línea negra en un sensor de un solo color en EV3.

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

El robot no se moverá estrictamente a lo largo de la línea negra, sino a lo largo de su borde, girando hacia la izquierda o hacia 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". El interruptor se establece en el sensor de color - medición - color. En la parte inferior, no olvide cambiar "sin color" a blanco. Además, debe especificar correctamente todos los puertos.

No olvide agregar un bucle, el robot no irá a ninguna parte sin él.

Controlar. Para obtener los mejores resultados, intente cambiar los ajustes de dirección y potencia.

Movimiento con dos sensores:

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


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

Para implementar el algoritmo, necesitamos rastrear las lecturas de ambos sensores, y solo después de eso, configurar el robot para que se mueva. Para hacer esto, usaremos interruptores anidados en otro interruptor. Por lo tanto, primero sondearemos el primer sensor y luego, independientemente de las lecturas del primero, sondearemos el segundo sensor, después de lo cual estableceremos la acción.
Conecte el sensor izquierdo al puerto #1, el sensor derecho al puerto #4.

Programa con comentarios:

No olvide que ponemos en marcha los motores en el modo "Habilitar" para que funcionen el tiempo necesario en función de las lecturas de los sensores. Además, a menudo se olvida la necesidad de un bucle; sin él, el programa finalizará de inmediato.

http://studrobots.ru/

El mismo programa para el modelo NXT:

Estudia el programa de movimiento. Programa el robot. Subir video de prueba del modelo

15.01.2012, 18:51

Hasta ahora, en artículos sobre algoritmos utilizados al moverse a lo largo de una línea, dicho método se consideraba cuando el sensor de luz, por así decirlo, seguía su borde izquierdo o derecho: tan pronto como el robot se movía a la parte blanca del campo, el el controlador devolvió el robot al borde, el sensor comenzó a moverse 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 del movimiento de un proporcional (regulador P) será el mismo. Como ya se mencionó, la velocidad promedio de tal movimiento no es muy alta, y se hicieron varios intentos para aumentarla complicando un poco el algoritmo: en un caso, se usó un frenado "suave", en el otro, además de los giros, Se introdujo el movimiento hacia adelante.
Para permitir que el robot avance en algunas áreas, se asignó una sección estrecha en el rango de valores producidos por el sensor de luz, que podría llamarse condicionalmente "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, entonces, a la derecha, no parece determinar 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 sea el giro, más tiempo llevará esta búsqueda.
La siguiente figura muestra que si el sensor no estuviera ubicado en el lado izquierdo del borde, sino en el lado derecho, entonces ya habría detectado una curvatura de la trayectoria y comenzaría a realizar maniobras de giro.

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

De hecho, se puede destacar un estado más aceptable: en rutas difíciles será la intersección de una intersección o algún tipo de engrosamiento en el camino.
No se tendrán en cuenta otras posiciones de los sensores, porque se derivan de las que se muestran arriba o son las posiciones del robot cuando salió de la línea y ya no podrá volver a ella utilizando la información de los sensores. En consecuencia, todas las disposiciones anteriores pueden reducirse a la siguiente clasificación:
  • el sensor izquierdo, al igual que el derecho, está sobre una superficie clara
  • sensor izquierdo sobre la superficie clara, sensor derecho sobre la oscuridad
  • sensor izquierdo sobre superficie oscura, sensor derecho sobre luz
  • ambos sensores están por encima de la superficie oscura
Si en un momento dado 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 clara y el sensor derecho ya está por encima de la oscuro, entonces el robot condujo su lado derecho hacia la línea, lo que significa que necesita girar a la derecha para que la línea esté nuevamente entre los sensores.Si el sensor izquierdo está sobre la superficie oscura, y el derecho todavía está arriba la luz, entonces el robot necesita girar a la izquierda para alinearse.Si ambos sensores están por encima de la superficie oscura, entonces, en el caso general, el robot sigue recto.

El diagrama anterior muestra inmediatamente cómo debe cambiar exactamente el comportamiento de los motores en el programa. Ahora, escribir un programa no debería ser difícil. Debe comenzar eligiendo qué sensor se sondeará primero. Realmente no importa, así que déjalo. Es necesario determinar si se trata de una superficie clara u oscura:
Esta acción aún no le permite decir 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 definen el comportamiento de los motores de acuerdo con las tablas anteriores: 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 del estado principal es responsable de otro grupo de estados III y IV. Estos dos estados también difieren entre sí en el nivel de iluminación que capta el sensor derecho. Por lo que determinará la elección de cada uno de ellos:
Las dos ramas resultantes se rellenan con bloques de movimiento. La rama superior es responsable del estado "izquierda en oscuridad, derecha en luz", y la rama inferior es responsable de "ambos sensores en oscuridad".
Cabe señalar que este diseño solo determina cómo encender los motores dependiendo de las lecturas de los sensores en un lugar determinado del campo, naturalmente, después de un momento, el programa debe verificar si las lecturas han cambiado para corregir el problema. el comportamiento de los motores en consecuencia, 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 repetida:

Un programa tan simple proporcionará una velocidad bastante alta del robot que se mueve a lo largo de la línea sin sobrepasar sus límites, si establece correctamente la velocidad máxima cuando se mueve 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 empinadas sean las curvas en la pista, más "duro" debe ser el frenado - la velocidad debe caer más rápido y viceversa - con curvas suaves, es muy posible aplicar el frenado apagando la energía o incluso con un ligero bajar de velocidad.

También se deben decir algunas palabras separadas sobre la ubicación de los sensores en el robot. Obviamente, se aplicarán las mismas recomendaciones a la ubicación de estos dos sensores en relación con las ruedas que para un sensor, solo la mitad del segmento que conecta los dos sensores se toma como el vértice del triángulo. La distancia entre los sensores también debe elegirse a partir de las características de la pista: cuanto más cerca estén los sensores, más a menudo el robot se nivelará (realizará giros relativamente lentos), pero si los sensores están lo suficientemente separados , entonces existe el riesgo de salirse de la pista, por lo que deberá realizar giros más cerrados y un movimiento más lento en las rectas.



Esta tarea es clásica, ideológicamente simple, se puede resolver muchas veces y cada vez descubrirás algo nuevo.

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, se desmontarán tres ejemplos de robots basados ​​en el modelo de tutorial principal de Robot Educator.

Para empezar montamos el modelo básico del Robot Educador, para ello puedes utilizar el instructivo 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 más adecuados para nuestra tarea, cuando trabajamos con ellos, no tenemos que preocuparnos por la intensidad de la luz ambiental. Para este sensor, en los programas utilizaremos el modo de luz reflejada, en el que se estima la cantidad de luz reflejada de la iluminación roja del sensor. Los límites de las lecturas del sensor son 0 - 100 unidades, para "sin reflejo" y "reflejo total", respectivamente.

Por ejemplo, analizaremos 3 ejemplos de programas para moverse a lo largo de un camino negro representado en un fondo uniforme y claro:

· Un sensor, con regulador P.

· Un sensor, con regulador PK.

· Dos sensores.

Ejemplo 1. Un sensor, con regulador P.

Diseño

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


Algoritmo

El funcionamiento del algoritmo se basa en que, dependiendo del grado de superposición, la iluminación del sensor se proyecta con una línea negra, las lecturas devueltas por el sensor varían en forma de 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 el valor de la velocidad de giro del robot.


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

Finalmente, en el programa, la función de calculadora es un controlador proporcional simple. cuya función ( (a-50)*1.5 ) en el rango de funcionamiento del sensor de luz genera los valores de rotación de acuerdo con el gráfico:

Un ejemplo del algoritmo

Ejemplo 2. Un sensor, con controlador PK.

Este ejemplo está compilado en el mismo diseño.

Probablemente haya notado que en el ejemplo anterior, el robot se balanceó demasiado, 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á un giro a la función del controlador. Esto reducirá el balanceo del robot cerca del límite deseado de la trayectoria, así como también generará sacudidas más fuertes a una gran distancia de él.