La media ponderada es una medida de tendencia central, que es apropiada cuando en un conjunto de datos cada uno de ellos tiene una importancia relativa (o peso) respecto de los demás datos.
Se obtiene multiplicando cada uno de los datos por su ponderación (peso) para luego sumarlos, obteniendo así una suma ponderada; después se divide esta entre la suma de los pesos, dando como resultado la media ponderada.
Uso de promedio ponderado en un robot velocista.
Para poder guiar nuestro robots utilizamos sensores de luz inflaroja, estos nos darán una lectura que leeremos en pines analógicos para saber donde esta la linea blanco fondo negro, o negra fondo blanco.
Tenemos que determinar con la lecturas de los sensores en que posición se encuetra la linea, una de las soluciones es usar el promedio ponderado.
QTR8A
El promedio ponderado en un seguidor de líneas es un algoritmo utilizado en la robótica y en la automatización de procesos para controlar la trayectoria de un robot o vehículo móvil siguiendo una línea o guía visual. Este algoritmo utiliza el promedio ponderado para calcular la posición media de la línea que está siendo seguida por el robot o vehículo, teniendo en cuenta la posición y la sensibilidad de cada sensor de línea.
Aplicación de promedio ponderado con QTR8A - Linea Negra - Fondo Blanco
► Conexiones:
Este ejemplo es con la regleta de sensores QTR-8A, con las conexiones correspondientes a nuestra placa de desarrollo, cada salida de los sensores (8 sensores) conectados a una entrada analógica de la placa (A0...A7).
Se puede utilizar el promedio ponderado con otro tipo de sensores como por ejemplo 8 CNY70.
En la placa QTR8A debemos conectar, la alimentación, GND y señal para el emisor.
► Lectura de sensores:
En un estado ideal las lecturas de los sensores para color blanco o negro serian:
Superficie blanca = 1023
Superficie negra = 0
Si realizamos la lectura de los 8 sensores, como en la imagen con valores de lecturas orientativos:
Valores leídos por el controlador
A partir de estos valores realizamos un grafico para poder ver las lecturas de cada sensor:
Recordamos que tomamos en este ejemplo que la lectura de los sensores para el color blanco seria de 1023 y para el negro 0. (esto no es así en la practica)
Grafico de valores leídos
Observando el grafico y las referencias, claramente la linea negra esta entre el sensor A3 y el A4.
Para tener datos y un grafico que nos represente mejor nuestro interés sobre la linea negra hacemos un cambio en los valores de lectura.
El máximo de lectura de 1023 lo transformaremos en 1000.
Invertimos los valores de lectura, 1000 será 0 y 0 será 1000.
Esto usando una placa de desarrollo Arduino podemos hacer con la función map.
valor_de_sensor_x = map(lectura_sensor_x, 0, 1023, 1000, 0);
► Tabla con datos de lectura modificados:
Tabla de valores convertidos
► Grafico de nuevo valores:
Grafico de valores convertidos
En este grafico observamos bien donde se encuentra concentrada la posición la linea negra.
Para nuestra aplicación de guiar un Robot seguidor de líneas necesitamos saber la posición exacta de la misma.
Para esto vamos usar estimación por promedio ponderado.
Formula para calcular el promedio ponderado:
Donde:
x = posición relativa
xi = numero de sensor
yi = lectura del sensor
Remplazamos los valores del ejemplo en la formula:
El resultado de la ecuacion es:
x = 3587,5
Como utilizamos la posición de los sensores como ponderación (0 a 7) la ecuación no da valores de extremos de 0 a 7000. Por lo cual:
Si en valor es 0 la linea esta en el sensor A0
Si en valor es 1000 la linea esta en el sensor A1
Si en valor es 2000 la linea esta en el sensor A2
Si en valor es 3000 la linea esta en el sensor A3
Si en valor es 4000 la linea esta en el sensor A4
Si en valor es 5000 la linea esta en el sensor A5
Si en valor es 6000 la linea esta en el sensor A6
Si el valor es 7000, la linea esta en el sensor A7
Valores de posición relativa según ubicación de linea (en un estado ideal)
La ecuación no dio una posición relativa con los valores de lecturas que fueron mapeado con la función map de 3587,5 redondeamos a 3587.
Valores de sensores mapeados
La posición relativa calculada para que la linea este en el medio de la QTR-8A es 3500
Posición Relativa de Set point
Esta posición relativa de 3500 es nuestro set point, si estamos en ese valor nuestro robot esta situado en el medio de la linea.
La diferencia entre la posición relativa y el set point es nuestro error.
Error = posición relativa - set point
Siguiendo con nuestro caso donde la posición relativa es 3587 el error calculado seria:
Error = 3587 - 3500
Error = 87
Error (posición relativa - set point)
Para controlar la dirección del robot se usa un par de motores, la diferencia de rpm de cada motor es lo que permite el giro, así que usando el error para calcular las rpm necesarias en cada motor con el objetivo de tener la linea en el medio, lo que seria el valor de set point.
De esta manera aplicando el promedio ponderado podemos controlar la posición de nuestro robot seguidor de líneas.
El uso del error para el calculo de rpm es mediante la aplicación de un control PID.
☼ Es importante también tener en cuenta otro dato que nos puede resulta utili del error calculado:
Si el valor es positivo ▬ la linea estaria mas a la derecha del centro.
Si el valor es negativo ▬ la linea estaría mas a la izquierda del centro.
Esto igual hay que comprobarlo realizando lecturas con nuestro robot y ver que signo le corresponda a derecha e izquierda, ya que esto depende de las conexiones que realizamos de los sensores con las entras analógicas del micro.