Salut,
Je compte faire des tests de réception de mes lunettes en changeant les antennes (avec celles de mon setup analogique, patch, pagoda). Je m'intéresse à la latence et on y a accès dans les fichiers "srt" qui sont créés avec les fichiers vidéo dji (avec d'autres paramètres comme le voltage). Jusque là ça va sauf qu'ils sont bizarrement formaté et que c'est pas évident ni à lire comme ça ni à extraire dans excel. D'autant plus que chaque mesure n'est pas faite à intervalle régulier donc impossible tel quel de comparer avec le timing d'une vidéo. Je voulais changer les antennes et m'éloigner pour voir l'effet sur la latence.
J'ai programmé un petit script en python qui le fait à ma place sur tous les fichiers d'un répertoire. Cela produit directement des diagrammes synchronisés avec le flightTime des vidéos.
D'abord une série de graphite de la latence au cours du temps pour chaque lipo
Puis un résumé de la cession complète avec une couleur par lipo
On voit bien les gros pic liés aux crashs (sur le dos dans la gadou toussa🙂)
J'étais en mode Focus OFF, demain je passe à Focus ON puis avec d'autres antennes pour tester.
Si quelqu'un est intéressé par le programme, pas besoin de savoir coder, il suffit de le mettre dans le répertoire des vidéos et de l’exécuter tel quel. (il est pas optimisé du tout car je débute et surtout je suis feignant)
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 22 23:30:29 2021
@author: barzouga
"""
print(__doc__)
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import glob
print("extraction des données")
plt.style.use('dark_background')
Latencetout=[]
flightTimetout=[]
moyennetout=[]
n=0
moyenne=0
mini=0
maxi=0
moyennefinale=0
for filename in glob.glob('*.srt'):
with open(filename,"r") as fi:
tout2 = []
n=n+1
for ln in fi:
if ln.startswith("signal"):
tout2.append(ln[1:])
data = pd.Series(data=tout2)
data = pd.DataFrame(data.str.split(' ',20).tolist())
Latence1 = pd.DataFrame(data[7].str.split(':',1).tolist())
LatenceFin = pd.DataFrame(Latence1[1].str.split('m',1).tolist())
flightTime = pd.DataFrame(data[2].str.split(':',1).tolist())
flightTime[1] = flightTime[1].astype(float)
LatenceFin[0] = LatenceFin[0].astype(float)
tps = np.linspace(0, len(LatenceFin), len(LatenceFin))
moyenne=np.round(LatenceFin[0].mean(), 1)
mini=min(LatenceFin[0])
maxi=max(LatenceFin[0])
Latencetout.append(LatenceFin[0])
flightTimetout.append(flightTime[1])
moyennetout.append(moyenne)
plt.bar(flightTime[1],LatenceFin[0], width=1)
plt.title(f"Lipo n°{n} moyenne = {moyenne} ms, min = {mini} ms, max = {maxi} ms")
plt.xlabel('flightTime (s)')
plt.ylabel('Latence (ms)')
plt.show()
for i in range (1, n, 1):
plt.bar(flightTimetout[i], Latencetout[i], width=1)
plt.xlabel('flightTime (s)')
plt.ylabel('Latence (ms)')
moyennefinale=np.round(moyennetout[0].mean(),1)
plt.title(f"Toute la session, latence moyenne à {moyennefinale} ms")
plt.show()
for i in range (1, n, 1):
plt.bar(flightTimetout[i], Latencetout[i], width=1)
plt.xlabel('flightTime (s)')
plt.ylabel('Latence (ms)')
moyennefinale=np.round(moyennetout[0].mean(),1)
plt.title(f"Toute la session, latence moyenne à {moyennefinale} ms")
plt.ylim(0,50)
plt.show()
print("fin de l'extraction des données")