-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinternal_data.h
More file actions
101 lines (92 loc) · 3.71 KB
/
Copy pathinternal_data.h
File metadata and controls
101 lines (92 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/**
* @file internal_data.h
* @brief Ventana de diálogo para inspección y depuración de variables internas del algoritmo seguidor de línea.
* @author Gonzalo Gomez
* @date 2026
*
* @details Este archivo define la clase `internal_data`, un diálogo secundario (`QDialog`) diseñado para
* la telemetría granular del algoritmo seguidor de línea ejecutado en el microcontrolador.
* Permite visualizar métricas computadas en tiempo real tales como la suma ponderada de sensores, el error
* proporcional instantáneo, valor absoluto del error, componentes lineal y cuadrática del lazo, desfases
* y ganancias $K_p$ y $K_q$.
*
* @see MainWindow
* @see internal_data.cpp
*/
#ifndef INTERNAL_DATA_H
#define INTERNAL_DATA_H
#include <QDialog>
#include <cstdint>
namespace Ui {
class internal_data;
}
/**
* @ingroup group_widgets
* @class internal_data
* @brief Diálogo de telemetría interna y calibración del seguidor de línea.
* @details Proporciona una interfaz visual complementaria para monitorear el comportamiento
* algebraico interno del estimador de línea y los parámetros de control aplicados por el firmware.
*
* \startuml
* class internal_data {
* - ui : Ui::internal_data*
* + internal_data(parent : QWidget*)
* + ~internal_data()
* + actualizarDatosLinea(sum, err, abs_err, lin, quad, offset, kp, kq) : void
* }
* internal_data --|> QDialog
* \enduml
*
* @see MainWindow
*/
class internal_data : public QDialog
{
Q_OBJECT
public:
/**
* @brief Constructor explícito del diálogo de datos internos.
* @param parent Puntero al widget padre en la jerarquía de Qt (por defecto nullptr).
*/
explicit internal_data(QWidget *parent = nullptr);
/**
* @brief Destructor de la clase, libera los recursos gráficos de la interfaz.
*/
~internal_data();
/**
* @brief Actualiza los campos numéricos de la interfaz con la última muestra recibida.
* @details Desempaqueta y proyecta en los visores del diálogo los cálculos matemáticos
* realizados por el algoritmo del robot seguidor de línea en cada ciclo de muestreo.
*
* \startuml
* title Pipeline de Procesamiento de Telemetría de Línea (actualizarDatosLinea)
* start
* :Recepción de paquete GETINTERNALDATA (ID: 0xF0);
* :Extracción de sumatoria (sum) y error (err);
* :Cálculo de magnitud de desvío absoluto (abs_err);
* :Extracción de componentes de corrección lineal (lin) y cuadrática (quad);
* :Lectura de compensación lateral (offset) y coeficientes Kp / Kq;
* :Formateo y actualización de widgets numéricos en la interfaz;
* stop
* \enduml
*
* @param sum Suma algebraica total de las lecturas de los reflectores IR.
* @param err Error de posición respecto al centroide de la línea en píxeles/unidades discretas.
* @param abs_err Valor absoluto del error de seguimiento.
* @param lin Componente de control de respuesta lineal.
* @param quad Componente de control de respuesta no lineal (cuadrática).
* @param offset Desplazamiento dinámico o sesgo de centro calibrado.
* @param kp Ganancia proporcional activa en el robot.
* @param kq Ganancia cuadrática activa en el robot.
*
* @pre El puntero `ui` debe haber sido inicializado válidamente en el constructor.
* @post Los indicadores numéricos del diálogo reflejan los nuevos valores.
*/
void actualizarDatosLinea(int32_t sum, int32_t err, int32_t abs_err, int32_t lin, int32_t quad, int32_t offset, int16_t kp, int16_t kq);
private:
/**
* @brief Puntero a la estructura de interfaz generada automáticamente por uic.
* @see Ui::internal_data
*/
Ui::internal_data *ui;
};
#endif // INTERNAL_DATA_H