Paso 1: La dirección de la parte
Construir la escritura de 3 piezas principales tienen que ser considerados: la parte de la 'Dirección', que puede derivarse de las características de hardware, la parte 'Controladas', los algoritmos que tratan de las diferencias (errores) entre la realidad y las estimaciones y la parte 'Real', que consiste en los datos de los sensores (actuadores) utilizados, proporcionando información sobre la situación más probable (!).
La eficacia de la escritura mucho depende de la exactitud de los actuadores utilizados. Por ejemplo: si los marineros antiguos habrían tenido un sistema de GPS, ellos habrían tenido datos más precisos en su posición real.
Utilización de actuadores más, diferentes, como codificadores, una brújula digital, un retriever GPS (para uso exterior) o incluso un giroscopio, produciría más precisión sobre la situación real. Lamentablemente hace la parte controlada un poco más compleja, porque debe ocuparse de la influencia ponderada de los distintos sensores para determinar los datos más precisos sobre la posición actual ('fusión').
Cada actuador utilizado, al menos traerá particular 'ruido' en las ecuaciones. Si un receptor GPS se recuperar datos en una posición constante, vamos a decir, 24 horas, el ploteo de los datos se dispersa alrededor de la posición real. Por lo tanto la precisión de un GPS se expresa en un 95% de las lecturas que caen dentro de cierto rango (por ejemplo de < 5 metros). Para tratar de filtrar ruido sensor y equilibrar el peso entre los actuadores separados uno debe utilizar un lazo de control más sofisticado. El filtro de Kalman se utiliza a menudo para.
Para mantenerlo simple en mis primeras exploraciones, me pegó un solo actuador y había utilizado codificadores. Generan 'garrapatas' por rotación de los ejes de rueda, proporcionando datos sobre el rodaje real de las ruedas (que realmente ofrece información sobre velocidad y distancia).
Hay muchos diferentes codificadores. Codificadores ópticos utilizan un disco segmentado para medir los cambios (de sólidos y no sólidos atrás) con un sensor de infrarrojos. La resolución (es decir, la cantidad de garrapatas por revolución del eje de la rueda) de codificadores ópticos es más bien baja y por lo tanto limita la precisión que puede lograrse. Otros codificadores hacen uso de discos magnéticos y hacer tener una resolución mucho mejor. Codificadores ópticos son mucho más barato y fácil de sintonizar o uso. Finalmente codificadores pueden ser simple o cuadratura. Este último también proporciona datos sobre la dirección de las rotaciones de la rueda.
RB2 tiene solo Codificadores ópticos. Se oponen a limitaciones; especialmente en la precisión (> = centímetros) y la frecuencia de medición (necesitamos al menos 1 garrapata para entrar en la parte controlada).
Ahora entremos en la parte de 'Dirección'. Es la parte más objetiva y todas las variables necesitan puede ser calculadas por adelantado y utilizadas como constantes en la escritura. Si el script está diseñado para ser usado en varios robots diferentes, la parte de 'Dirección' tiene que abordarse en la rutina de inicialización de la secuencia de comandos.
Algunos hechos acerca de RB2:
- El chasis es un barón de Robot DF (motores de 4, conectados como 2 motores diferencial) + piso de montaje adicionales
- Encoders ópticos en las 2 ruedas delanteras, generando 20 garrapatas por la revolución.
- La distancia entre el centro de las ruedas = 0,147 m.
- El diámetro de la rueda = 0,065 m.
Estos hechos pueden utilizarse para calcular algunos datos importantes:
- El perímetro de la rueda = 0,20 m (es decir, Pi * diámetro de la rueda)
- La cantidad de garrapatas por metro = 97,9 t/m (es decir, ticks_per_revolution / _perimeter de la rueda)
- El full_turn_perimeter = 0,46 m (es decir, wheel_center_distance * Pi) al usar ambos lados en revolución contador!!!! Voy a venir para después cuando se bucea en giro por una cierta cantidad de grados
- La cantidad de ticks_per_full_turn = 45.2 t (es decir, full_turn_perimeter * ticks_per_meter)
- La cantidad de ticks_per_degree = 0,13 t (ticks_per_full_turn / 360)
Así que ya tenemos un montón de datos útiles, pero también necesitamos algunas figuras dependiendo de la velocidad. Necesitamos saber la velocidad máxima que podría alcanzar el robot. A veces el proveedor proporciona los datos en el kit o motores, pero que resultó para ser muy lejos. Hice algunos cálculos en la rotación máxima en los motores, tomando la relación de deducción del engranaje en cuenta, pero que también demostró para ser de lejos.
Por muchas razones obvias (y menos obvias): fabricación leves diferencias (incluso cuando adquirió de la misma serie), engranajes de la resistencia (lubricación), pequeñas diferencias de la rueda (centro de posición, diámetro), el agarre de los neumáticos, el peso del coche y cómo está distribuida y un montón de influencias ambientales como: la superficie (resistencia, desnivel, llanura) y la resistencia del aire incluso. Todos los factores que no pueden ser tratadas en el modelo de control y por qué algunos datos probables tienen que adquirir por adelantado la prueba (manteniendo tanto factores tan constante como sea posible).
La máxima velocidad del robot se puede encontrar mejor ejecutando en el mismo entorno en PWM máxima durante cierto tiempo y mida la distancia que se hizo en medio de esta carrera. Creo que esto se podía medir mejor contando las señales de encoder y calcular en metros (hacerlo por lo menos teniendo en cuenta el ruido del codificador).
RB2 salió con 0,31 m/s (el proveedor incluido 0,68 m/s). Con este dato podemos calcular una otra variable necesitada: la max_ticks_per_second = 30,4 t/s (es decir, ticks_per_meter * max_speed)
Por fin tenemos la velocidad de pérdida. Esto también se puede encontrar por la prueba: iniciar con PWM 0.0 y aumentar el PWM hasta que el robot comienza a moverse. Es común que 5 – 30% de su total alcance PWM. Para RB2, salí con: 0.124 m/s.
Ahora tenemos todos los datos para estimar la velocidad y la distancia hecha por el robot a una cierta distancia a cierta velocidad. La siguiente figura muestra el esquema típico para tal gestión.