1 minute read

Índice



Frecuencia

Para un análisis más profundo de las frecuencias, añadimos timestamps en el bucle principal de la siguiente manera:

while rclpy.ok():
  drone.follow_line()

  if time.time() - initTime >= SAVE_FREQ: 
    drone.save_data()
    initTime = time.time()

  drone.generalTimestamps.append(time.time())

  # Process a single iteration of the ROS event loop
  rclpy.spin_once(drone, timeout_sec=VEL_PUBLISH_FREQ)

Dando los siguientes resultados:

Piloto experto. Media = 91.38 Hz
Piloto neuronal. Media = 233.17 Hz

Velocidades

Se modificó el script de plotPath para que además mostrara un gráfico de las velocidades, dejando en este caso el script abierto para poder hacer zoom cómodamente.

Nuevo gráfico

Velocidad angular

En el caso de la velocidad angular, podemos ver que aunque oscile, sus cambios son mínimos y, para no perder reactividad, si nos interesa mantener la salida sin ningún filtro, aunque bien ajustado podría mejorar su estabilidad.

Gráfico angular

Velocidad lineal

Para la velocidad lineal se empleó un filtro de paso bajo para suavizar la reactividad en la velocidad lineal, ya que si esta tenía cambios bruscos, la cámara del dron se elevaría y desestabilizaría bastante al mismo. A la función que grafica el circuito se le añadió una opción para graficar también velocidades. El resultado de las velocidades lineales sin filtro vs con filtro fue el siguiente:

Comparación de velocidades lineales

Como podemos apreciar, la media añade un pequeño offset y reduce el tiempo de reacción, pero en ejecución, sus resultados son bastante notables y merece la pena. No obstante, se realizaron cálculos de cuánto tiempo medio podemos tratar de hacer un cambio brusco de una velocidad a otra.w

Sabiendo que tenemos una frecuencia de 233.17 Hz, esto implica que ejecutamos una iteración cada 4 ms. Suponiendo que nuestro buffer de medidas sea de 150 medidas, un cambio total de velocidad se producirá en 643 milisegundos. Lo que es un tiempo bastante aceptable para que el dron no frene en seco y la cámara ascienda hacia arriba.

Pruebas en otros circuitos

Además, se realizaron pruebas en otros circuitos dando los siguientes resultados:

En los resultados encontramos que en uno increíblemente daba mejores resultados incluso que el piloto experto y en otro podemos encontrar un pequeño error respecto al mismo.

Circuito simple
Circuito de Montmeló

Enlace al video en ejecución

Este es el resultado en simulación del piloto neuronal: