Algoritmo avanzado para moverse a lo largo de la línea. Concursos internacionales de robots - Reglas - Ejemplos de robots - Robot de trayectoria lineal LEGO EV3 Ev3

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

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 cambiado las áreas personales y comerciales de nuestras vidas. Los robots se utilizan ampliamente en el transporte, la exploración terrestre y espacial, la cirugía, la industria militar, la investigación de laboratorio, la seguridad, la producción en masa de bienes industriales y de consumo. Muchos dispositivos que toman decisiones en función de los datos recibidos de los sensores también pueden considerarse robots, como, por ejemplo, los ascensores, sin los cuales nuestra vida ya es impensable.

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

Objetivo: Aprender a programar un robot para que se desplace en línea recta.

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

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

    Constructor de Mindstorms EV3.

Piezas de diseño: 601 piezas, servomotor: 3 piezas, sensor de color, sensor de movimiento, sensor de infrarrojos y sensor táctil. El bloque de microprocesador EV3 es el cerebro de LEGO Mindstorms.

Un gran servomotor es el responsable del movimiento del robot, que se conecta al EV3 Brick y hace que el robot se mueva: avance y retroceda, gire y conduzca a lo largo de una trayectoria determinada. Este servomotor tiene un sensor de rotación incorporado, que le permite controlar con mucha precisión el movimiento del robot y su velocidad.

Puede hacer que un robot realice una acción utilizando el software EV3. El programa consta de varios bloques de control. Trabajaremos con el bloque de movimiento.

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

    Etapa preparatoria.

    Creación de un campo técnico.

Marcaremos el campo de trabajo del robot, usando cinta aislante y una regla crearemos tres líneas de 30 cm de largo - una línea verde, 1 m 15 cm - roja y 2 m 17 cm - líneas negras.

    Cálculos necesarios:

Diámetro de la rueda del robot - 5 cm 7 mm = 5,7 cm.

Una revolución de la rueda del robot es igual a la circunferencia de un círculo 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

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

Aquellas. Por una revolución de la rueda, el robot recorre 17,9 cm.

Calcule el número de revoluciones necesarias para pasar:

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

    1m 30cm = 130cm

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

    2m 17 cm = 217 cm.

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

    Creación y calibración del programa.

Crearemos un programa de acuerdo con el siguiente algoritmo:

Algoritmo:

    Seleccione un bloque de movimiento en el software Mindstorms EV3.

    Encienda ambos motores en la dirección dada.

    Espere a que la lectura del sensor de rotación de uno de los motores cambie al valor especificado.

    Apague los motores.

El programa terminado se carga en la unidad de control del robot. Ponemos el robot en el campo y pulsamos el botón de inicio. El EV3 atraviesa un campo y se detiene al final de una fila determinada. Pero para lograr un acabado preciso hay que calibrar, ya que factores externos influyen en el movimiento.

    El campo está instalado 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 que no se descarta 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, al cambiar las centésimas de las revoluciones, logramos el resultado requerido.

5. Conclusión.

La capacidad de programar un robot para que se mueva en línea recta será útil para crear programas más complejos. Como regla general, todas las dimensiones del movimiento se indican en los términos de referencia para las competencias de robótica. Son necesarios para que el programa no se sobrecargue con condiciones lógicas, bucles y otros bloques de control complejos.

En la siguiente etapa de familiarización con el robot Lego Mindstorms EV3, aprenderá a programar giros en un cierto ángulo, movimiento en círculo, espirales.

Es muy interesante trabajar con el diseñador. Al aprender más sobre sus capacidades, puede resolver cualquier problema técnico. Y en el futuro, tal vez, cree sus propios modelos interesantes del robot Lego Mindstorms EV3.

Literatura.

    Koposov D. G. "El primer paso hacia la robótica para los grados 5-6". - M.: Binom. Laboratorio del 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/educación/


Para ver una presentación con imágenes, diseño y diapositivas, descargar su archivo y abrirlo en PowerPoint en tu ordenador.
Contenido de texto de las diapositivas de la presentación:
"Algoritmo para moverse a lo largo de una línea negra con un sensor de color" Círculo sobre "Robótica" Profesor antes de Yezidov Ahmed Elievich En MBU DO "Shelkovskaya CTT" Para estudiar el algoritmo para moverse a lo largo de una línea negra, un robot Lego Mindstorms EV3 con un sensor de color se utilizará Sensor de color El sensor de color distingue 7 colores y puede detectar la ausencia de color. Al igual que en el NXT, puede funcionar como un sensor de luz Campo de competencia de robots Line S La pista propuesta en forma de "S" le permitirá realizar otra prueba interesante de velocidad y reacción de los robots creados. Consideremos el algoritmo más simple para moverse a lo largo de una línea negra en un sensor de 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 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 ve blanco, en la otra. Trazado de una línea en el modo de luz reflejada con dos sensores A veces, el sensor de color no puede distinguir muy bien entre el blanco y el negro. La solución a este problema es utilizar el sensor no en modo de detección de color, sino en modo de detección de brillo de luz reflejada. En este modo, conociendo los valores del sensor en una superficie oscura y clara, podemos decir de forma independiente qué se considerará blanco y qué negro. Ahora determinemos los valores de brillo en las superficies blanca y negra. Para ello, en el menú del EV3 Brick encontramos la pestaña "Brick Applications". Ahora se encuentra en la ventana de visualización del puerto y puede ver las lecturas de todos los sensores en el momento actual. nuestros sensores deben brillar en rojo, lo que significa que están en modo de detección de luz reflejada. Si brillan en azul, en la ventana de visualización del puerto en el puerto deseado, presione el botón central y seleccione el modo COL-REFLECT Ahora colocaremos el robot para que ambos sensores estén ubicados sobre la superficie blanca. Nos fijamos en los números de los puertos 1 y 4. En nuestro caso, los valores son 66 y 71, respectivamente. Estos serán los valores de blanco de los sensores. Ahora coloquemos el robot de modo que los sensores estén ubicados sobre la superficie negra. Nuevamente, veamos los valores de los puertos 1 y 4. Tenemos 5 y 6, respectivamente. Estos son los significados del negro. A continuación, modificaremos el programa anterior. Es decir, cambiamos la configuración de los interruptores. Siempre que tengan Sensor de color -> Medición -> Color instalado. Necesitamos configurar el sensor de color -> Comparación -> Intensidad de luz reflejada. Ahora tenemos que configurar el "tipo de comparación" y el "valor de umbral". El valor umbral es el valor de algunos "grises", los valores por debajo de los cuales consideraremos negro y más, blanco. Para la primera aproximación conviene utilizar el valor medio entre el blanco y el negro de cada sensor. Así, el valor umbral del primer sensor (puerto #1) será (66+5)/2=35,5. Redondee a 35. Valor de umbral del segundo sensor (puerto #4): (71+6)/2 = 38.5. Redondeemos a 38. Ahora establecemos estos valores en cada interruptor, respectivamente. Eso es todo, los bloques con movimientos permanecen en sus lugares sin cambios, porque si ponemos el signo " en el "tipo de comparación"<», то все, что сверху (под галочкой) будет считаться черным, а снизу (под крестиком) – белым, как и было в предыдущей программе.Старайтесь ставить датчики так, чтобы разница между белым и черным была как можно больше. Если разница меньше 30 - ставьте датчики ниже. Это было краткое руководство по программированию робота Lego ev3, для движения по черной линии, с одним и двумя датчиками цвета

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

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

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

Lo primero que necesita saber el robot 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.

Puedes hacerlo manualmente. Pero las desventajas son inmediatamente visibles: incluso durante un breve período de tiempo, la iluminación puede cambiar y el valor calculado resultará ser incorrecto.

Entonces puedes hacer que un robot lo haga.

En el curso de los experimentos, descubrimos que no es necesario medir tanto el blanco como el negro. Solo se puede medir el blanco. Y el valor del punto ideal se calcula como el valor del blanco dividido por 1,2 (1,15), dependiendo del 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 velocidad de giro. Cuanto más grande es, más bruscamente reacciona el robot a los cambios de iluminación. Pero un valor demasiado alto hará que el robot se tambalee. 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 a la velocidad 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 conducir a una desviación de la trayectoria. El valor también se selecciona experimentalmente.

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

Relación de dirección y potencia base

La lógica de moverse 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 para 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órmula, 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 emitir en forma de un bloque separado.

Implementación del algoritmo

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

Algoritmos de control para un robot LEGO móvil. Seguimiento de línea con dos sensores de luz

Profesor de educación adicional

Kazakova Lyubov Alexandrovna


movimiento de línea

  • Dos sensores de luz
  • Controlador proporcional (controlador P)

Algoritmo para moverse a lo largo de la línea negra sin un controlador proporcional

  • Ambos motores giran con la misma potencia.
  • Si el sensor de luz derecho golpea la línea negra, entonces la potencia del motor izquierdo (por ejemplo B) disminuye o se detiene
  • Si el sensor de luz izquierdo golpea la línea negra, entonces la potencia del otro de los motores (por ejemplo, C) disminuye (vuelve a la línea), disminuye o se detiene
  • Si ambos sensores están en blanco o negro, entonces hay un movimiento rectilíneo

El movimiento se organiza cambiando la potencia de uno de los motores.


Ejemplo de un programa para moverse a lo largo de la línea negra sin un controlador P

El movimiento se organiza cambiando el ángulo de rotación.


  • El controlador proporcional (controlador P) le permite ajustar el comportamiento del robot, dependiendo de cuánto difiere su comportamiento del deseado.
  • Cuanto más se desvía el robot del objetivo, más fuerza se necesita para volver a él.

  • El controlador P se utiliza para mantener el robot en un estado determinado:
  • Mantener la posición del manipulador Moverse a lo largo de una línea (sensor de luz) Moverse a lo largo de una pared (sensor de distancia)
  • Manteniendo la posición del manipulador
  • Línea de movimiento (sensor de luz)
  • Moverse a lo largo de una pared (sensor de distancia)

Seguimiento de línea con un sensor

  • El objetivo es moverse a lo largo de la frontera "blanco-negro"
  • Una persona puede distinguir el borde de blanco y negro. El robot no puede.
  • El objetivo del robot está en el color gris.

cruces

Al usar dos sensores de luz, es posible organizar el tráfico en rutas más difíciles



Algoritmo para conducir por una carretera con intersecciones

  • Ambos sensores en blanco: el robot se desplaza en línea recta (ambos motores giran con la misma potencia)
  • Si el sensor de luz derecho toca la línea negra y el izquierdo la línea blanca, gira a la derecha
  • Si el sensor de luz izquierdo toca la línea negra y el derecho toca la línea blanca, entonces gira a la izquierda
  • Si ambos sensores están en negro, se produce un movimiento rectilíneo. Puedes contar intersecciones o realizar algún tipo de acción


El principio de funcionamiento del regulador P.

Posición de los sensores

O=O1-O2


Algoritmo para moverse a lo largo de la línea negra con un controlador proporcional

SW \u003d K * (CT)

  • C - valores objetivo (tomar lecturas del sensor de luz en blanco y negro, calcular el promedio)
  • T - valor actual - recibido del sensor
  • K es el coeficiente de sensibilidad. Cuanto más, mayor es la sensibilidad.


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 100)
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.