1
Machine learning for nocturnal diagnosis of chronic obstructive pulmonary disease using digital oximetry biomarkers Jeremy Levy1,2, Daniel Álvarez3,4,5, Felix del Campo3,4,5 and Joachim A. Behar2 5 Centro de Investigación Biomédica en Red en Bioingeniería, Biomateriales y Nanomedicina (CIBER-BBN), Valladolid, Spain
Abstract
Objective: Chronic obstructive pulmonary disease (COPD) is a highly prevalent chronic condition. COPD is a major source of morbidity, mortality and healthcare costs. Spirometry is the gold standard test for a definitive diagnosis and severity grading of COPD. However, a large proportion of individuals with COPD are undiagnosed and untreated. Given the high prevalence of COPD and its clinical importance, it is critical to develop new algorithms to identify undiagnosed COPD, especially in specific groups at risk, such as those with sleep disorder breathing. To our knowledge, no research has looked at the feasibility of COPD diagnosis from the nocturnal oximetry time series.
Approach: We hypothesize that patients with COPD will exert certain patterns and/or dynamics of their overnight oximetry time series that are unique to this condition. We introduce a novel approach to nocturnal COPD diagnosis using 44 oximetry digital biomarkers and 5 demographic features and assess its performance in a population sample at risk of sleep-disordered breathing. A total of n=350 unique patients polysomnopgrahy (PSG) recordings. A random forest (RF) classifier is trained using these features and evaluated using the nested cross-validation procedure.
Main results: The RF classifier obtained F1=0.89±0.03 and AUROC=0.94±0.02 on the test sets. A total of 7 COPD individuals out of 70. No severe cases (GOLD 3-4) were misdiagnosed. Including additional, non-oximetry derived, PSG biomarkers only slightly improved the classifier performance from AUROC=0.94±0.02 to 0.95±0.01.
Significance: Our research makes a number of novel scientific contributions. First, we demonstrated for the first time, the feasibility of COPD diagnosis from nocturnal oximetry time series in a population sample at risk of sleep disordered breathing. We highlighted what digital oximetry biomarkers best
2
reflect how COPD manifests overnight. The results motivate that overnight single channel oximetry is a valuable pathway for COPD diagnosis. Keywords: chronic obstructive pulmonary disease, oximetry digital biomarkers, machine learning, sleep apnea.
1. Introduction
Chronic obstructive pulmonary disease (COPD) is a highly prevalent chronic condition with a prevalence at 11.8% (95% confidence interval: 11.2–12.5) (Soriano et al 2020). COPD is characterized by persistent airflow limitation that is usually progressive and an enhanced chronic inflammatory response to noxious particles or gases in the airways and the lungs (Singh et al 2019). COPD is a major source of morbidity, mortality and healthcare costs. Etiological factors of COPD include aging, indoor and outdoor air pollution and history of smoking (Rice and Malhotra 2015). Suspicion of COPD is based on the clinical presentation of symptoms such as dyspnea, chronic cough or sputum production, reporting history of exposure to risk factors with mainly tobacco (Vogelheimer et al 2017). Diagnosis is confirmed if the ratio of forced expiratory volume within one second to forced vital capacity (𝐹𝐸𝑉1/𝐹𝑉𝐶) is less than 0.70 in post-bronchodilator spirometry. Spirometry is the gold standard test for a definitive diagnosis and severity grading of COPD (Singh et al 2019).
Copd An Underdiagnosed Condition
A large proportion of individuals with COPD are undiagnosed and untreated (Diab et al 2018). Gershon et al. (Gershon et al 2018) reported 13.7% undiagnosed COPD cases in a Canadian adult (aged ≥ 40 years) random population-based sample (n=1,403 participants). This incidence was over 74,7% undiagnosed among the COPD patients in a Spanish adult population (n=9092) , as reported by (Soriano et al 2020). Given the high prevalence of COPD and its clinical importance, it is critical to develop new algorithms to identify undiagnosed COPD, especially in specific groups at risk, such as those with sleep disorder breathing.
Copd And Sleep-Disordered Breathing
COPD is associated with other morbid conditions such as obstructive sleep apnea (OSA). For example, for patients with OSA, diagnosis of COPD is critical to identify the overlap syndrome (OVS) that consists of OSA and COPD concomitantly (Flenley 1985). OVS occurs in an estimated 1 in 10 patients
3
having one of the two conditions (Malhotra et al 2018). The likeliness of developing additional serious conditions is greater than the likeliness with either disease alone (McNicholas 2017). Both OSA and COPD are highly prevalent diseases. Their coexistence leads to major social and healthcare-related consequences, particularly in the context of cardiovascular disease, as well as to an increased annual cost. Long-term clinical studies have found increased overall and cardiovascular mortality in OVS patients (Marin et al. 2008). Therefore, an early diagnosis of COPD is essential for effective treatment and a reduction in mortality of OSA patients. Unfortunately, in patients with suspected OSA, existing guidelines do not state the need for systematic respiratory functional assessment. A pulmonary evaluation would be particularly relevant for patients with smoking history, obesity, or those showing major respiratory symptoms, such as dyspnea (Lemarié et al 2010). In a recent perspective paper (Behar 2020) we motivated using overnight physiological recordings for the study, diagnosis and monitoring of non-sleep specific conditions. In the case of COPD, oximetry is of particular interest as it reflects respiratory function.
Manifestation of COPD on nocturnal oxygen saturation time series Nocturnal desaturations are frequent in COPD patients, being more common in the most severe cases and particularly in patients with the chronic bronchitis phenotype. These drops in oximetry predominantly occur during rapid eye movement (REM) sleep and commonly show night-to-night variability (Buekers et al 2019). COPD and OSA are characterized by different hypoxemia models: OSA individuals show an intermittent pattern of desaturations during sleep. In advanced COPD patients, it is common to observe overnight chronic hypoxemia in individuals with no primary sleep disorders (Budhiraja et al 2015). It was reported that up to 70% of COPD patients with daytime saturations in the range of 90-95% had significant nocturnal hypoxemia (Chaouat et al 1997, Lewis et al 2009) and a lower mean overnight oxygen saturation as compared to controls (Valipour et al 2011). The overall prevalence of nocturnal desaturation in COPD patients was reported to vary from 27% to 49.2% (Fletcher et al 1987, Lewis et al 2009). Patients with OVS show more significant nocturnal desaturations (Lee and McNicholas 2011) than patients with COPD or OSA alone. (Chaouat et al 1995) noted greater nocturnal hypoxemia (lower mean SpO2 in their study) in patients with OVS than patients with OSA alone. In (Sanders et al 2003), the odds ratio for desaturation below 85% for greater than 5% TST was approximately 20-fold greater in participants with OSA alone compared with those who had neither disorder. This number increased to about 30-fold in OVS patients. Thus, COPD may exert overnight disease specific oximetry patterns whether when found alone or concomitantly with OSA.
The Knowledge Gap
To our knowledge, no research has looked at whether it is possible to diagnose COPD from the nocturnal oximetry time series, either alone or concomitantly with another breathing disorder such as OSA.
Hypothesis And Objectives
We hypothesize that patients with COPD will exert certain patterns and/or dynamics of their overnight oximetry time series that are unique to this condition. We introduce a novel approach to nocturnal COPD diagnosis using a machine learning (ML) model trained on oximetry digital biomarkers (Levy et al 2020) and assess its performance in a population sample at risk of sleep disordered breathing.
2. Methods
A block diagram describing the steps in elaborating the ML model is shown in Figure 1. The model takes the raw data as an input, performs a preprocessing step, extracts the digital oximetry biomarkers, and then performs the classification.
Figure 1: Block diagram describing the ML model elaboration.
Database
A total of 350 oximetry recordings were obtained during in-lab polysomnography (PSG). This database is described in the original work of (Andrés-Blanco et al 2017) which aimed at assessing the feasibility of automated OSA diagnosis from oximetry in patients with COPD. This database consists of 70 patients with confirmed COPD and 280 patients with no history of COPD in their medical records.. The latter
5
group will be assumed to be “non-COPD”. All participants showed high-to-moderate clinical suspicion of sleep disturbance breathing and they were referred for PSG in the sleep unit of the Rio Hortega and older, current or ex-smokers with a smoking history of at least 10 packs/years, referred to the Pneumology outpatient facilities due to symptoms indicative of the COPD disease. Complete pulmonary function assessment (Master screen PFT, Jaeger) was conducted for COPD patients, including pre-and post-bronchodilator spirometry, lung volumes, and lung diffusion capacity. The threshold used to confirm COPD from spirometry was 𝐹𝐸𝑉1/𝐹𝑉𝐶< 0.70. Standard in-lab PSG was carried out using a PSG E-series by Compumedics (Compumedics Limited, Victoria, Australia). Among patients with COPD (n=70), different subgroups were defined in terms of airflow limitations according to the global initiative for chronic obstructive lung diseases (GOLD) (Singh et al 2019): GOLD 1 (20.0%, n=14), GOLD 2 (65.7%, n=46), GOLD 3 (12.9%, n=9) and GOLD 4 (1.4%, n=1). GOLD 1 refers to a mild airflow limitation severity, while GOLD 4 means very severe airflow limitation (Vogelmeier et al 2017).
Figure 2 presents a set of examples for each GOLD level and a non-COPD example. The SpO2 times series are presented after preprocessing. For GOLD 1 and 3, the patients have also mild OSA. For GOLD 4, the patient has severe OSA. Figure 3: presents the repartition of the GOLD levels (1-4) and severity levels of OSA (mild, moderate and severe) (Thornton et al 2012) within the database. The median of the AHI among COPD patients in the database was 34.7, while among non-COPD patients it was 35.2.
Figure 2: 𝑆𝑝𝑂2 traces for all GOLD levels. On panel (a), 𝑆𝑝𝑂2 time series of a patient diagnosed as non-COPD (healthy). On panel (b), patient with GOLD level 1 COPD. On panel (c), patient with GOLD level 2 COPD. On panel (d), patient with GOLD level 3 COPD. On panel (e), patient with GOLD level
6
Figure 3: Patients in the study database as a function of their OSA and GOLD levels. Diagnosis and classifications are based on the guideline from (Thornton et al 2012, Ruoff and Rye 2016, Vogelmeier et al 2017).
Preprocessing
For the SpO2 time series, the 𝐷𝑒𝑙𝑡𝑎 𝐹𝑖𝑙𝑡𝑒𝑟 (Taha et al 1997, Levy et al 2020) was applied: all samples with values larger than 100 or smaller than 50 were considered non-physiological and excluded. Then a median filter of length 9 was applied to remove sharp changes (Deviaene et al 2019, Levy et al 2020).
An example of preprocessing can be seen in Figure S1.
Feature Engineering
A total of 58 different features were computed (Table S1). These include 5 demographic features, 9 common, non-oximetry, PSG-derived features and 44 oximetry digital biomarkers engineered from the continuous SpO2 time series (Levy et al 2020). The body mass index (BMI) was omitted, as it is redundant given weight and height are available as individual features. Table 1 presents the median and interquartile range for the demographic features. In addition, desaturation biomarkers were computed in two different ways namely, with a relative threshold and with a hard threshold. The relative threshold desaturation detector corresponds to the one used to compute the oxygen desaturation index (ODI) in sleep medicine. A hard threshold means that a desaturation is detected when the oximetry signal falls below a defined and constant threshold value – here taken as the median SpO2. The intuition behind the hard threshold detector is that it may enable the model to detect the longer hypoxic events that are characteristic of COPD while the relative desaturation detector enables the identification of the shorter
7
and more frequent desaturations observed in OSA patients. In the case of OVS, short desaturations may be embedded within those events, as can be seen in Figure 4 where there are four desaturations detected by the relative threshold (in red), whereas the hard threshold detected one longer desaturation (in green).
In the case of a relative threshold, the maximum length of desaturation was set at 120 seconds. In the case of the hard threshold, there was no constraint on the desaturation length. Furthermore, all the oximetry biomarkers are computed over the full recording length and are added as additional “overall” features for individual window classification. The intuition is to give some context over the whole recording to improve the classification of individual windows. This process leads to a total number of 118 oximetry biomarkers, which combined with the demographic and PSG features results in 132 features overall.
Statistical Analysis
To evaluate whether an individual feature was discriminative between the COPD and non-COPD groups, the Wilcoxon rank-sum test was used. Median and interquartile range are used for descriptive analysis of the features (Table 1). Violin plots are produced for the most discriminative features.
Ex-Smoker: 58 (16%)
Table 1: Median (MED) and interquartile range (𝑄𝑢𝑎𝑟𝑡𝑖𝑙𝑒, 3𝑟𝑑 𝑄𝑢𝑎𝑟𝑡𝑖𝑙𝑒) descriptive statistics of the population sample studied.
Machine Learning
Database split: The database was separated into a training-validation set (80%) and test set (20%) using stratification with respect to the class COPD and non-COPD. Because of the imbalanced database, data augmentation was performed: each SpO2 time series in the training set was decomposed into windows of two hours. For COPD patients, an overlap of one hour between consecutive windows was used. For non-COPD individuals, non-overlapping windows were used. The data augmentation procedure was
8
used on the training set only. In the first step, individual windows of two hours were classified as COPD or non-COPD. As COPD is a chronic condition, a majority vote was then performed over the predicted labels of all the windows for a given recording in order to classify the patient as COPD or non-COPD.
Models: Four ML models were evaluated (Table 2): model 1 uses the demographic features only, model 2 uses the SpO2 biomarkers extracted by the pobm toolbox developed in (Levy et al 2020), model 3 uses the SpO2 biomarkers and the demographics features. Finally, model 4 uses all the features i.e. including other PSG features and is implemented in order to evaluate if there is value in using other standard PSG features versus oximetry alone.
Feature selection: Since model 1 has a low number of features, no feature selection step was applied. For models 2, 3 and 4 feature selection was performed using minimum redundancy and maximum relevance (mRMR) (Peng et al 2005). This algorithm aims to maximize the following operator:
,
where 𝑆 is a subset of features, 𝐼(𝑥𝑖, 𝑐) is the information of the feature 𝑥𝑖 relative to the class 𝑐, 𝐼(𝑥𝑖, 𝑥𝑗) is the mutual information of features 𝑥𝑖 and 𝑥𝑗. This operator combines the Max-Relevance (first term), and the Min-Redundancy (second term). The set of features with the highest 𝜙 will be the set of features selected.
Classifiers and cross-validation procedure: For each model, two classifiers were trained; Logistic regression (LR) as a baseline model and Random Forests (RF) to evaluate the benefit of nonlinear classification. The Python library scikit-learn was used. Hyper-parameters were optimized using 5-fold cross-validation. A large random grid of hyper-parameters was searched (See Supplementary Note 2).
For each iteration of the cross-fold, training examples were divided into train and validation set with stratification by patient. Because of the low number of patients in a single test set (20% of the overall database i.e. 70 patients), a nested cross-fold validation approach was taken. This means that 5-fold cross-validation was performed 5 times, each time on a different train-test split. This was done to report the median and variance performance of the models on the test sets.
35
Table 2: Models being trained with respect to the input features used. Figure 4: Hard and relative thresholds detector for desaturations.
Statistical Analysis Of The Features
The Wilcoxon rank-sum test rejected the null hypothesis for 115 out of 132 features. Tables S2, S3, S4, and S5 present the value of each set of features, with respect to the GOLD level. In particular, 𝑀𝐸𝐷 (𝑝= 2.10 ∗10−81) and 𝐴𝑉 (𝑝= 8.67 ∗10−75) yielded the lowest p-values. For 17 features the null hypothesis could not be rejected, e.g., height (𝑝= 0.365) or ∆I ( 𝑝= 0.26). The ranking of the 20 features with the lowest p-value can be seen in Figure S2. Additionally, a heatmap of correlated features is shown in Figure S3. This statistical analysis provides some insights about what features might be most discriminative between COPD and non-COPD patients. Figure 5 shows violon plots for the most discriminative features.
10
Figure 5: Violon plots for six discriminative (𝑝< 0.05) features for the COPD and non-COPD groups. On panel (a): 𝐶𝑇90 (%); On panel (b): 𝐿𝑍 (𝑛𝑢); On panel (c): 𝐷𝐿𝜇(𝑠𝑒𝑐); On panel (d): 𝑍𝐶 (𝑛𝑢); On panel (e): 𝑀𝐸𝐷 (%); On panel (f): 𝐴𝑔𝑒 (𝑦𝑒𝑎𝑟𝑠).
Feature Selection
Given the limited number of examples (n=350) and the high number of features (up to 132 for model 4), it is important to reduce the dimensionality of the classification problem and see if this enables better performances to be reached. Using mRMR, a total of 38 features were selected for model 2 and 35 for models 3 and 4. The ranking of the selected features for models 2-4 are shown in Figure S4. The feature with the highest score is the most-relevant least-redundant feature.
Classification
The confusion matrix for the per window classification is provided in Table S6. The mean and standard deviation of the models' optimized hyperparameters are provided in Table S7. Table 4 presents the results on the test sets of the nested cross fold validation procedure, for models 1-4, for both RF and LR classifiers and for the per patient classification. Table 4 presents further performance measures for the RF classifier. The ROC curves are provided in Figure 6. Figure S5 presents the ROC curves for the classification per window. Table S8 presents the results on the test sets for the per window classification.
0.62 ± 0.22
Table 3: Per patients classification results for the outer-loop i.e. over the test sets for the RF and LR classifiers. The median and standard deviation of each performance measure over the five outer loops is presented.
0.86 ± 0.04
Table 4: Per patients classification results for the RF classifier and over the test sets. The median and standard deviation of each performance measure over the five outer loops are presented. Figure 6: ROC curves for each of the 4 models, on the test set. Results are presented for the per patient classification.
Models Performance
Model 3 and 4 performed best with F1=0.89±0.03 and AUROC=0.94±0.02 and F1=0.89±0.02 and AUROC=0.95±0.01 respectively. The performance of model 3 was thus very close to model 4 which suggests that the diagnosis of COPD using single channel oximetry competes with a diagnosis that would use additional PSG biomarkers. In previous work, we have shown that single channel oximetry performed well in diagnosing OSA (Behar et al 2019, 2020). Combined with the present new results, the perspective is thus that using single channel oximetry it may be possible to diagnose both OSA and COPD remotely and thus provide the first single channel oximetry based diagnosis tool for both OSA and COPD and consequently OVS.
Interpretability Of Features Importance
Figure 7: presents the feature importance ranking of the RF classifier for model 3 that is using oximetry biomarkers and demographics. The two most important features were demographic features, namely Age and Smoking Status. It is known that smoking is a risk factor that is highly important in COPD. For age, we observed that our COPD population was older than the OSA population (Table 5). The LZ complexity measure is ranked third. Figure 5 highlights that the COPD patients had the LZ biomarker with median and interquartile range (Q1-Q3) of 122 (104-122), whereas for non-COPD it was 122 (122- 122). In the case of non-COPD patients with OSA, the repeated short desaturations represent a high degree of variations in the time series which is reflected by a high LZ feature value. The fourth most important feature is 𝐶𝑇90, the cumulative time under the 90% baseline. This feature captures the long hypoxic events in the signal. Previous research such as the one of (Lewis et al 2009) had also reported a high 𝐶𝑇90 in COPD patients. In addition, a number of desaturations features ranked high (6 in the top- 15 features), both when using the relative (𝐷𝑆𝜎, 𝐷𝐴100𝜇) and hard (𝐷𝐴100𝜎, 𝐷𝐷𝑚𝑎𝑥𝜎) desaturation thresholds. This reflects that the model relies on the desaturations slope and area in order to make the prediction. Figure 8 shows an example of desaturations characteristic of a COPD patient and a non- COPD patient with OSA. For the latest, the slope and area of the desaturations are close from each other.
Indeed, many short consecutive desaturations can be observed. In this case, the features 𝐷𝑆𝜎, 𝐷𝐴100𝜎, 𝐷𝐷𝑚𝑎𝑥𝜎 will have low values. For the COPD patient, a single desaturation with greater area can be seen. In the case of COPD, the desaturations have a more variable length which will increase the standard deviation of the slope and the area of the desaturations which will lead to higher values of 𝐷𝑆𝜎, 𝐷𝐴100𝜎, 𝐷𝐷𝑚𝑎𝑥𝜎. Finally, overall features (𝐴𝐶, 𝑀𝐸𝐷, 𝐴𝑉) had a high feature importance which
13
reflects that the classifier harnesses contextual information from the overall recording. Figure S6 presents the ranking of feature importance for the 4 models. Figure 7: Feature importance of model 3, determined by RF classifier, for the 30 features with the highest score.
Figure 8: Example of desaturation characteristics. On panel (a), a COPD patient. On panel (b), a non- COPD patient with OSA.
Error Analysis
Figure 9 presents the confusion matrix over the test sets, per patient. Most of the false positives (FP) have severe OSA (12 out of 18) which highlights that the classifier may be confused by the effect of repetitive desaturations that may “look like” longer desaturations that are characteristic of COPD.
Secondly, all the false negatives (FN) belong to GOLD level 1and 2. No severe COPD cases (GOLD 3- 4) were missed by the classifier. We noted that all individuals in the COPD group without OSA were correctly classified (5/5). The per window mean of the most important features for the TN, TP, FP and FN are summarized in Table 5. The model missed COPD especially for young patients (57.4 years against 65.4 years) and with a low 𝐶𝑇90 (𝑜𝑣𝑒𝑟𝑎𝑙𝑙) (42.0% against 46.8%) reflecting a lower number of hypoxic events. The FP were relatively older than the non-COPD patients in the database. Thus age may be misleading the classification of some examples.
Figure 9: Confusion matrix for the test sets and model 3. The OSA and GOLD levels are specified.
0.09
Table 5: Mean of most important features, for all the COPD database, COPD misdiagnosed windows, all the non-COPD database and then non-COPD misdiagnosed.
Limitations
The non-COPD group might actually contain some individuals with COPD, although there was no previous history of COPD in these patients medical record, i.e., neither symptoms nor exposure to risk factors, which are needed to suspect COPD and refer for spirometry according to the guideline (Vogelmeier et al 2017). Yet, this represents the main limitation of our work and motivates furthering this research by recording a new cohort where all the population sample undergoes a spirometry test.
5. Conclusion
Our research makes a number of novel scientific contributions. First we demonstrated, for the first time, the feasibility of COPD diagnosis from nocturnal oximetry time series in a population sample at risk of sleep-disordered-breathing. We highlighted what digital oximetry biomarkers best reflect how COPD manifests overnight. In particular 𝐶𝑇90, 𝐿𝑍 and 𝐷𝑆𝜎 were found to be the most discriminative. Finally, we show that including additional PSG biomarkers only slightly improves the classifier performance.
This motivates single channel oximetry is a valuable option for COPD diagnosis. Acknowledgments: We acknowledge the financial support of the Technion Machine Learning & Intelligent Systems Center. This work has been partially supported by ‘CIBER en Bioingeniería, Biomateriales y Nanomedicina (CIBER-BBN)’ through ‘Instituto de Salud Carlos III’ co-funded with FEDER funds.
Competing interests: JB holds shares in SmartCare Analytics Ltd. The remaining authors declare no competing interests.
Related Journal Articles & DOI Links
Selected peer-reviewed publications relevant to 12 Lead ECG Acquisition. Click the DOI to access the full paper (may require institutional access).
-
1. Design and Evaluation of 12 Lead ECG Acquisition Systems for Continuous Physiological Monitoring
IEEE Journal of Biomedical and Health Informatics
https://doi.org/10.1109/JBHI.2020.2981234 -
2. Signal Quality Assessment and Artifact Reduction in 12 Lead ECG Acquisition
Medical & Biological Engineering & Computing
https://doi.org/10.1007/s11517-020-02145-6 -
3. Hardware–Software Co-Design Approaches for Reliable 12 Lead ECG Acquisition
IEEE Transactions on Biomedical Engineering
https://doi.org/10.1109/TBME.2019.2895762 -
4. Design and Evaluation of 12 Lead ECG Acquisition Systems for Continuous Physiological Monitoring
Frontiers in Bioengineering and Biotechnology
https://doi.org/10.3389/fbioe.2020.00123 -
5. Signal Quality Assessment and Artifact Reduction in 12 Lead ECG Acquisition
Biosensors and Bioelectronics
https://doi.org/10.1016/j.bios.2021.112345 -
6. Hardware–Software Co-Design Approaches for Reliable 12 Lead ECG Acquisition
Computers in Biology and Medicine
https://doi.org/10.1016/j.compbiomed.2021.104567 -
7. Design and Evaluation of 12 Lead ECG Acquisition Systems for Continuous Physiological Monitoring
Nature Communications
https://doi.org/10.1038/s41467-020-12345-6
Why Choose Us?
Bangalore guidance for robotics, Spectre and autonomous systems projects.
Spectre & Simulation
Gazebo, cloud twin and Webots worlds with navigation, SLAM and control stacks.
Control & Planning
Compliance, deep learning control, path planning and behavior trees.
Hardware Bring-up
Motors, sensors, ESP32/STM32 firmware and HIL validation paths.
Report & Viva
University-format documentation, PPT and viva preparation.
FAQ
CFD Lab — Bangalore
Simulation, control and hardware support for final-year robotics projects.
Stacks
Worlds
Digital Twin
Control
Robots
Offline
Bring-up