-
Notifications
You must be signed in to change notification settings - Fork 0
Pro Analysis Workspace
David Mendez edited this page Jul 18, 2026
·
1 revision
Archivo:
ui/workspace.py· Clase:ProfessionalWorkspace· 880 líneas
El Pro Analysis Workspace es la vista de análisis más avanzada de GT7 Telemetry Pro. Emula la interfaz de herramientas profesionales como MoTeC i2 Pro, con paneles flotantes/acoplables (QDockWidget) y análisis multicapa.

┌──────────────────────────────────────────────────────────────────────┐
│ Toolbar: [Channel ▼] [Add Trace] [Clear Custom] [Restore Panels] │
├──────────────┬───────────────────────────────────┬───────────────────┤
│ │ │ │
│ DOCKS IZQ. │ CENTRO (Trace Principal) │ DOCKS DER. │
│ (Tabs) │ │ │
│ │ Speed (km/h) ─── lap overlay ── │ X-Y Scatter │
│ 🗺️ Track │ ═══════════════════════════════ │ │
│ Map │ │ Suspension │
│ │ Inputs (%) ─── THR/BRK ──── │ Histograms │
│ 🎯 G-Force │ ═══════════════════════════════ │ │
│ │ │ Tyre Temps │
│ 📋 Data │ Math Channel ─── custom ──── │ │
│ Manager │ ═══════════════════════════════ │ Tyre Slip │
│ │ ┃ crosshair cursor │ Ratios │
│ │ │ │
└──────────────┴───────────────────────────────────┴───────────────────┘
| # | Canal | Colores por Vuelta |
|---|---|---|
| 1 | Speed (km/h) | Cyan, Magenta, Yellow, Green, Orange, White, Red, Blue |
| 2 | Inputs (%) | Acelerador = sólido, Freno = discontinuo (por vuelta) |
| 3 | Math Channel | Canal matemático seleccionado del ComboBox |
Cada gráfica tiene un botón "X" embebido para cerrarla individualmente.
- Línea vertical amarilla discontinua (
InfiniteLine) draggable - Al mover el crosshair: se busca el índice más cercano en el array de distancia
- El punto correspondiente se marca en el Track Map como un dot rojo
| Botón | Acción |
|---|---|
| Channel ComboBox | Selecciona canal para nueva gráfica (Speed, Throttle, Brake, RPM, Boost, Steer, + math channels) |
| Add Trace | Agrega una nueva fila de gráfica X-linked al trace principal |
| Clear Custom Traces | Elimina todas las gráficas agregadas por el usuario |
| Restore Panels | Resetea todos los docks a su posición default |
- Scatter plot con aspecto bloqueado
- Colorización por velocidad usando colormap
turbo/infernode pyqtgraph - Punto cursor (rojo) sincronizado con el crosshair central
- Dibuja todos los laps seleccionados superpuestos
- Scatter de aceleración lateral (sway) vs longitudinal (surge)
- Crosshair de referencia en el origen
- Aspecto bloqueado 1:1
| Elemento | Función |
|---|---|
| Session ComboBox | Selecciona sesión a analizar (muestra fecha + auto + vueltas) |
| Tabla de Vueltas | Lista checkable de vueltas con tiempo (★ = mejor) |
| Load Selected Laps | Carga las vueltas seleccionadas vía DataLoaderThread
|
| Formula Manager | Abre Gestor de Fórmulas |
| Export to MoTeC | Exporta sesión a .ld/.ldx vía MotecExportThread
|
| Save Layout | Guarda posición de los docks en QSettings
|
- Dos ComboBox para seleccionar canales X e Y
- Scatter plot de la correlación entre dos canales cualesquiera
- Útil para análisis como: Speed vs Throttle, RPM vs Boost, etc.
- Grid 2×2: FL, FR, RL, RR
- Histograma de barras (40 bins, rango ±0.05)
- Muestra la distribución de velocidad de suspensión
- Útil para diagnosticar: suspensión demasiado dura/blanda, bottoming out
- Grid 2×2: FL, FR, RL, RR
- Línea de temperatura sobre el tiempo/distancia
- Muestra evolución térmica durante la vuelta
- Grid 2×2: FL, FR, RL, RR
- Slip =
(wheelRPS × radius) - chassis_speed - X-linked con la gráfica de velocidad central
- Muestra deslizamiento de cada rueda (positivo = spinning, negativo = locking)
ProfessionalWorkspace abierto
│
▼ Usuario selecciona sesión y vueltas
│
▼ Click "Load Selected Laps"
│
▼ DataLoaderThread (QThread)
│ │
│ └── get_lap_data_vectorized(session_id, lap_numbers)
│ │
│ └── SQLite → numpy arrays por vuelta
│
▼ data_ready signal → on_data_loaded()
│
├── Detectar pista (heurísticas vs tracks.json)
├── Refrescar combos de canales
└── update_plots()
│
├── Calcular distancia con dt REAL: np.diff(timestamps)
├── Speed overlay (por vuelta, por color)
├── Inputs overlay (throttle sólido, brake discontinuo)
├── Math channel evaluation (DynamicMathEngine)
├── Track map (colormap de velocidad)
├── G-Force scatter
├── Suspension histograms
├── Tyre temperatures
└── Tyre slip ratios
A diferencia del análisis básico, el workspace profesional NUNCA asume 60Hz fijo:
dt = np.diff(lap_time) # Intervalos reales entre paquetes
dt = np.clip(dt, 0, 0.5) # Clip para evitar gaps de red > 500ms
dt = np.insert(dt, 0, 0.016) # Primer punto
distance = np.cumsum(speed_ms * dt) # Integración trapezoidal| Propiedad | Valor |
|---|---|
| Formato |
.ld (datos binarios) + .ldx (metadatos XML) |
| Empaquetado | ZIP con ambos archivos |
| Tasa de muestreo | 60 Hz fija |
| Hilo |
MotecExportThread (QThread) |
| Canales exportados | Speed, RPM, Throttle, Brake, Gear, Boost, Steer, G-Lat, G-Long, 4× Tyre Temps, 4× Susp Velocity |
Los archivos generados son compatibles con MoTeC i2 Pro y pueden abrirse directamente para análisis avanzado con las herramientas profesionales de MoTeC.
Los paneles dock pueden:
- Flotarse (arrastrar fuera de la ventana)
- Tabularse (apilar en tabs)
- Reposicionarse (arrastrar a cualquier borde)
-
Guardarse (
QSettings→"RGDev/GT7TelemetryPro_Workspace") - Restaurarse (botón "Restore Panels")