¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Sensores y control proporcional de un robot

Después de esta lección: Puedo simular un controlador proporcional y medir cuánto se pasa del objetivo.

Lección de 60 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

Cómo llega un robot a su objetivo

Un controlador proporcional es la regla más sencilla para que un robot llegue a un objetivo. Mueve la articulación en proporción a lo lejos que está. Cuanto más cerca, más despacio se mueve.

Aprenderás a simularlo, a ver cuándo se pasa del objetivo y a ponerle un número a ese error. Todo es una simulación.

Al final de esta lección

Nota

Puedo simular un controlador proporcional y medir cuánto se pasa del objetivo.

Palabras clave

PalabraQué significa
Sensorun aparato que mide, como el ángulo de una articulación
Errorel objetivo menos la posición medida
Gananciael número por el que se multiplica el error
Sobreoscilacióncuánto se pasa la posición del objetivo
Retrasoel tiempo que tarda el sensor en dar su medida

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un controlador proporcional corrige en cada paso

En cada paso, el robot mide la posición y calcula el error: el objetivo menos la posición medida. La velocidad es la ganancia por el error.

La posición nueva es la anterior más la velocidad por la duración del paso. El robot se acerca, y cuanto más cerca, menos corrige.

Ejemplo resuelto: objetivo 10, ganancia 5

PasoError medidoCambioPosición
01000
11055
252,57,5
32,51,258,75
41,250,6259,375

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La posición tras tres pasos

Comando
docker exec jupyter python3 -c "print(10 * (1 - 0.5 ** 3))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El retraso del sensor hace pasarse al robot

Un sensor real no da la posición de ahora, sino la de hace un momento. El robot corrige con una medida vieja y sigue empujando cuando ya ha llegado.

Entonces se pasa del objetivo. La sobreoscilación es cuánto: la posición más alta menos el objetivo.

Ejemplo resuelto: un paso de retraso

PasoMedida que usaPosición
105
2010
3512,5
41012,5
512,511,25

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La sobreoscilación de esa respuesta

Comando
docker exec jupyter python3 -c "print(max([0, 5, 10, 12.5, 12.5, 11.25]) - 10)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El controlador con retraso en Python

Código: python
target = 10
gain = 5
dt = 0.1
position = 0
previous = 0  # lo que el sensor midió un paso antes

print(0, position)
for k in range(1, 6):
    measured = previous  # el sensor llega con un paso de retraso
    previous = position
    position = position + gain * (target - measured) * dt
    print(k, round(position, 2))
# Cambia gain a 2 y ejecuta otra vez: ya no se pasa del objetivo.

Ganancia baja: lenta pero sin pasarse

Con ganancia 5 el robot llega rápido y se pasa. Con ganancia 2 corrige menos en cada paso y llega más despacio, pero no pasa del objetivo.

Se elige la ganancia más alta que no se pase. Con un sensor más rápido se puede subir más.

Ejemplo resuelto: dos ganancias con el mismo retraso

GananciaPosición en el paso 5Posición más altaSe pasa
511,2512,5Sí, 2,5
27,687,68No

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error muy común

Advertencia

Mucha gente cree que una ganancia más alta siempre es mejor porque llega antes. Con un sensor que tarda, una ganancia alta hace que el robot se pase y oscile. Súbela poco a poco y mira la respuesta.

Para ir más lejos: otra ganancia

Con objetivo 10, paso de 0,1 s y un paso de retraso, prueba la ganancia 4. Apunta las posiciones de los pasos 1 a 5.

Decide si el robot se pasa del objetivo y cuánto.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.