After applying the HRV-to-CC conversion script, five MIDI files were generated—one for each recording day. A deliberate decision was made to normalize MIDI CC values (0–127) separately for each day rather than across the entire dataset. This approach emphasizes intra-day dynamics and allows relative physiological changes within a single session to be expressed more clearly through sound, rather than flattening them through global normalization.
MIDI CC automation derived from HR (CC1) and LF/HF (CC11).
In the conversion stage, specific MIDI CC numbers were preassigned to selected physiological parameters. Heart rate (HR) was mapped to MIDI CC 1 (Mod Wheel), and the LF/HF ratio was mapped to MIDI CC 11 (Expression). This choice was primarily practical: in Ableton Live, both CC 1 and CC 11 can be freely accessed and remapped using the Expression Control device, allowing flexible routing to multiple sound parameters without additional MIDI processing.
The core sound texture was constructed using a combination of Granulator II, Auto Pan (used in tremolo mode), Auto Filter, and Utility. Expression Control devices were used to distribute incoming MIDI CC data to multiple plugin parameters simultaneously.
The LF/HF ratio was used as a proxy for autonomic balance and stress level and was mapped to parameters that strongly affect spectral content and internal motion of the sound: Granulator II → Position, Grain Size, Variation Auto Filter → Frequency, Resonance
Heart rate (HR) was mapped to parameters associated with rhythmic modulation, spatial perception, and perceived intensity:
Auto Pan → Amount, Frequency
Granulator II → Shape
Utility → Stereo Width
Together, these mappings translate physiological arousal into changes in movement, brightness, density, and spatial spread of the sound texture.
In parallel, a second, identical processing chain was created using the same plugin structure but a different sound source and an inverted mapping strategy. The two granular layers were combined inside an Instrument Rack, preceded by an additional Expression Control device.
Overview of the mapping between HRV parameters, MIDI CC signals, and audio processing parameters.
The two sound sources used were:
Layer 1: an airy pad sample with subtle vinyl noise and bird sounds
Layer 2: a field recording of an air-raid siren from Kyiv
The LF/HF ratio was additionally mapped to the Chain Selector of the Instrument Rack, enabling a continuous crossfade between the two layers:
Low LF/HF values → dominance of the pad and bird sounds
High LF/HF values → dominance of the siren texture
As a result, the overall sound gradually shifts toward a siren-like timbre during periods of elevated physiological stress, and toward a softer, atmospheric texture during calmer states. Rather than triggering discrete sound events, this approach produces a continuously evolving audio texture that reflects internal physiological dynamics over time.
During HRV computation, all extracted parameters are stored in a new CSV file, with one row per time step. Building on the experiments conducted in the previous semester, a dedicated conversion script was developed to translate these HRV parameters into MIDI continuous controller (CC) signals for use in sound synthesis and composition.
The conversion process is based on three core principles. First, all physiological parameters are represented as independent CC lanes, allowing each metric to modulate a different sound parameter in a digital audio workstation. Heart rate is exported both as a raw value (clamped to the MIDI range 0–127) and as a normalized value scaled across the full CC range using global minimum and maximum values. This dual representation enables flexible artistic use of absolute and relative changes in heart rate.
Second, the script applies time compression to the physiological data. Because HRV parameters evolve slowly, real recording time is compressed so that long physiological processes can be perceived within a shorter musical timeframe. For example, several minutes of HRV data can be mapped onto a few seconds of MIDI time, while maintaining the temporal relationships between parameters. The compression factor can be adjusted depending on the desired level of temporal abstraction.
Third, normalization is performed using global minimum and maximum values computed across all available HRV CSV files. This ensures consistent scaling between different recording sessions and prevents abrupt changes in mapping behavior when multiple datasets are combined within the same composition.
For each time step in the HRV CSV file, the script generates a group of MIDI CC messages that occur simultaneously. Each HRV parameter is linearly mapped to the MIDI range of 0–127 and written as a CC event at a fixed musical tempo. The resulting MIDI files therefore encode physiological dynamics as continuous control data, independent of note events.
This approach produces MIDI files that are immediately usable in digital audio workstations such as Ableton Live. HRV-derived CC lanes can be assigned to synthesis, filtering, spatialization, or effect parameters, forming a direct bridge between physiological analysis and sound-based artistic exploration.
Following the initial experiments, ECG and GSR recordings were conducted consistently over a period of five weeks during the weekly civil defense siren tests on Saturdays. Each recording session typically began between 11:30 and 11:40, allowing sufficient time to later remove several minutes of motion-related noise caused by movement, setup, and settling into a stable posture for recording.
It is important to note that I generally follow a late chronotype (“night owl”) sleep pattern and tend to wake up relatively late, especially on weekends. As a result, during most Saturday siren tests I was still in bed. Rather than attempting to alter this routine, I deliberately chose to maintain it in order to preserve ecological validity. All recordings were therefore conducted in bed, under a blanket, in a resting position consistent with a typical weekend morning. Although these Saturdays were dedicated to working on the project, the physical and contextual conditions were intentionally kept as close as possible to a habitual state.
I usually woke up around 11:00, completed the necessary preparations, and often attempted to set up the recording equipment on Friday evening to reduce time pressure. After attaching the ECG electrodes, I returned to bed and waited for the siren, keeping the window slightly open to ensure that the sound was clearly audible. For analysis, each recording was trimmed to retain approximately 15 minutes before and 15 minutes after the siren onset. The resulting segments were then processed using the established analysis pipeline.
Contrary to the initial hypothesis, the results of these repeated recordings did not show a consistent or clearly separable heart rate response before and after the siren. In particular, heart rate values were often already elevated at the beginning of the recording, prior to the siren onset. A plausible explanation for this pattern is the experimental context itself. On the nights preceding the recordings, I frequently went to bed late and woke up insufficiently rested. In addition, there was often time pressure in the morning to complete setup before the siren at 11:45. As a result, a heightened physiological arousal state was likely present already at the start of the experiment.
In several sessions (notably days 3 and 5), heart rate began to rise even before the siren, suggesting an anticipatory stress response associated with waiting for the event rather than reacting to the sound itself.
The LF/HF ratio provided slightly clearer indications of stress-related changes, although with considerable variability. On the first recording day, LF/HF showed a pronounced increase after the siren. On the second day, however, the behavior of this metric differed substantially. During days 3, 4, and 5, a tendency toward increased LF/HF after the siren was often observable, but in several cases the increase began before the siren, again suggesting a pre-existing stress state of the autonomic nervous system.
LF/HF from five weekly siren test sessions.
The only parameter that behaved consistently across sessions was the GSR signal. Each time the siren sounded, a sharp drop in GSR values was observed. However, for reasons that remain unclear, the sensor did not function correctly during the final two recording sessions. The recorded GSR data from these sessions did not reflect plausible physiological responses and were therefore considered unreliable. As a result, GSR could not be used further as a parameter for sound mapping.
GSR from five weekly siren test sessions.
Rather than discarding these recordings as unreliable, I chose to accept the limitations and realities of the experimental conditions. The longitudinal dataset is therefore approached not as a controlled physiological study, but as a form of embodied, self-reflexive investigation. The recordings capture a body shaped by multiple interacting factors—sleep, anticipation, routine, and personal history—and reflect the complexity of measuring stress responses in real-life contexts rather than laboratory environments.
In addition to the siren test recording, a further exploratory experiment was conducted later the same day under controlled indoor conditions. The aim of this session was to observe physiological responses to a pre-designed auditory scenario resembling elements of an air-raid situation, while maintaining full control over timing and sound structure.
Prior to the experiment, a long-form audio file was prepared. The recording began with ten minutes of continuous rain sounds. At the ten-minute mark, a civil defense siren was introduced, followed approximately one and a half minutes later by an explosion sound. The siren–explosion sequence lasted for three minutes and gradually faded out. Throughout this phase, the rain sound remained present and continued for an additional twelve minutes after the end of the siren and explosion. The experiment started at 19:25 and ended at approximately 19:50. All sound materials were sourced from soundfree.org and consisted of field recordings made in Kyiv.
Ableton Live session showing the audio structure used in the experiment (rain, siren, and explosion sounds).
The heart rate response during this experiment revealed several notable features. The first pronounced increase in heart rate occurred shortly before 19:30. At this moment, no siren or explosion had yet been played. Instead, this increase coincided with anticipatory thoughts related to the upcoming sounds, specifically concerns about playback volume and the potential intensity of the explosion sound. After briefly adjusting the volume and returning to a resting position, heart rate gradually decreased. However, with the onset of the siren and subsequent explosion sounds, heart rate increased again. This pattern suggests that not only the auditory stimulus itself, but also the anticipation of an expected threat-related sound, can activate a physiological fight-or-flight response.
Heart rate during the audio-based experiment.
Consistent with the previous recording, the GSR signal showed rapid and pronounced changes. Sharp drops in GSR values were observed at the onset of the siren and again approximately one and a half minutes later, coinciding with the explosion sound. These abrupt responses indicate that skin conductance reacts very quickly to sudden or salient auditory events, often preceding slower cardiovascular changes.
GSR signal during the audio-based experiment.
The LF/HF ratio behaved in a less predictable manner during this experiment. Changes in LF/HF occurred more gradually and, notably, the ratio decreased following the end of the siren–explosion sequence. After this decrease, LF/HF values began to rise strongly during the later phase of the recording. Due to the complexity of this pattern and the limited number of repetitions, no clear interpretation could be drawn at this stage.
LF/HF during the audio-based experiment.
This experiment was conducted only once, and the subjective experience was described as unpleasant. In retrospect, the use of rain sounds both before and after the siren and explosion may have introduced a confounding factor, as rain is generally associated with calming effects. For this reason, the results of this experiment should not be used as a primary basis for quantitative analysis. Nevertheless, the recording remains qualitatively informative, particularly in demonstrating the role of anticipation and the differing temporal dynamics of cardiovascular and skin conductance responses.
The first test recording during a civil defense siren was conducted on November 22. Data acquisition started at approximately 11:52. In retrospect, the recording was initiated too late, which significantly limited its analytical value. As a result, this dataset could not be used for systematic comparison between pre-siren and post-siren phases. Nevertheless, it served as a functional test of the recording and analysis pipeline. Additionally, the raw recording contained substantial motion-related noise at both the beginning and the end of the session. Approximately the first three minutes of the recording were removed during preprocessing, as the signal quality in this segment was insufficient for reliable analysis. Despite these limitations, the remaining portion of the recording provided useful preliminary insights.
Even in this shortened test recording, several initial assumptions were supported by the data. The most immediately noticeable change was a rapid increase in heart rate following the onset of the siren at 12:00. This abrupt rise suggests an acute physiological response triggered by the siren signal.
Heart rate response during the initial test recording.
LF/HF ratio during the initial test recording.
A similar pattern was observed in the LF/HF ratio. The increase in this metric following the siren onset is commonly interpreted as a shift toward sympathetic nervous system dominance, which is associated with stress and heightened arousal. Although this observation aligns with the working hypothesis that the siren acts as a stressor for a person with lived experience of war, the short duration of the recording and the absence of a clear baseline phase prevent any strong conclusions at this stage.
The behavior of the GSR signal was particularly striking. At the moment the siren began, the GSR signal showed a sharp drop in values, indicating a rapid change in skin conductance. This response occurred faster than the corresponding changes observed in heart rate–related measures. Such behavior is consistent with the role of skin conductance as a fast-reacting indicator of autonomic arousal and attentional activation. Civil defense sirens are explicitly designed to capture attention, and the immediacy of the GSR response may reflect this design principle. Similar abrupt drops were visible later in the recording; however, due to the limited contextual information and short recording window, their exact causes could not be clearly identified.
GSR signal over time during the initial test recording.
Other computed HRV metrics did not show clear or interpretable changes in relation to the siren onset within this test recording. For this reason, these parameters were not analyzed in depth at this stage and were deprioritized in subsequent analyses.
Overall, this first test recording confirmed the technical viability of the system and provided early qualitative support for the project’s core hypothesis. At the same time, it highlighted the need for longer recordings with clearly defined baseline periods and reduced motion artifacts, which informed the design of subsequent data acquisition sessions.
For signal inspection and analysis, I extended the Plotly-based ECG and HRV visualization tool developed during the previous semester. While the earlier version functioned well for simulated or pre-structured datasets, several adjustments were required to accommodate the properties of the new Arduino-based recordings.
The first challenge concerned the sampling rate. Unlike laboratory datasets with a fixed sampling frequency, the Arduino-based ECG stream does not produce perfectly uniform time intervals between samples. To address this, the analysis pipeline was adapted to work with a variable sampling rate derived from recorded timestamps rather than assuming a constant value. The effective sampling frequency is estimated from the median difference between successive time samples, which provides a robust approximation suitable for filtering and peak detection.
The second major modification involved time representation on the x-axis. In the previous implementation, signals were plotted against sample indices. In the current version, the visualization uses real recording time, allowing ECG, GSR, and derived HRV metrics to be aligned with the actual temporal structure of the experiment.
A third extension was the integration of the GSR signal into the plotting and analysis pipeline. Due to the high noise level observed in the raw GSR signal, basic low-pass filtering was introduced to suppress high-frequency fluctuations and improve interpretability.
Later, beyond raw signal visualization, several additional heart rate variability metrics were implemented. In addition to standard time-domain measures such as SDNN and RMSSD, the analysis includes inter-beat intervals (IBI), which represent the temporal distance between successive R-peaks. IBI is closely related to respiratory modulation of heart rate and served as an important conceptual reference, inspired by the RESonance biofeedback experiment.
Following this inspiration, SDNN16 was added as a short-term variability metric that updates continuously with each detected heartbeat. Unlike conventional SDNN, which requires longer time windows, SDNN16 provides a fast-responding measure of variability that is well suited for dynamic visualization and potential sound mapping.
Furthermore, the metrics pNN20 and pNN50 were implemented. These parameters quantify the percentage of successive beat-to-beat interval differences exceeding 20 ms and 50 ms, respectively. Both metrics offer additional insight into short-term fluctuations in heart rhythm and were included as potential control parameters for later stages of sonification.
Together, these modifications resulted in a visualization and analysis tool capable of handling irregularly sampled data, aligning physiological signals with real recording time, and providing an expanded set of HRV descriptors.
A custom Python script was developed to record ECG and GSR data streamed from the Arduino via the serial interface. The Arduino transmits raw sensor values as comma-separated integers (ECG, GSR) at a fixed baud rate. On the computer side, the Python script establishes a serial connection, continuously reads incoming data, and stores it in a structured CSV file together with precise timing information.
Serial connection and configuration
PORT = “/dev/tty.usbmodem1101”
BAUD = 115200
ser = serial.Serial(PORT, BAUD)
This section defines the serial port and baud rate used by the Arduino. The baud rate must match the value specified in the Arduino sketch to ensure correct data transmission.
Each recording session generates a new CSV file whose name includes a timestamp. This prevents accidental overwriting and allows recordings to be clearly associated with specific experimental sessions.
The CSV file contains both an absolute timestamp and a relative time counter in milliseconds. This dual timing system supports synchronization with experimental events while also enabling precise signal processing.
Parsing and writing incoming data
line = ser.readline().decode(errors=”ignore”).strip()
ecg_str, gsr_str = line.split(“,”)
ecg = int(ecg_str)
gsr = int(gsr_str)
Each line received from the serial port is expected to contain two comma-separated values. Basic validation ensures that malformed or incomplete lines are ignored.
For each valid sample, the script writes one row containing the current timestamp, elapsed time since the start of recording, and raw ECG and GSR values. Data is flushed to disk continuously to prevent loss during longer sessions.
After completing the hardware setup, the next step was to verify whether the system was capable of producing usable physiological signals. For this purpose, a minimal Arduino sketch was written to read raw analog values from the ECG and GSR sensors and stream them via the serial interface. The goal at this stage was not data recording or analysis, but a basic functional test of the signal paths. The code continuously reads the ECG signal from analog input A1 and the GSR signal from analog input A2, printing both values as comma-separated numbers to the Serial Monitor. A short delay was introduced to limit the sampling rate and ensure stable serial transmission.
const int ecgPin = A1;
const int gsrPin = A2;
void setup() {
Serial.begin(115200);
}
void loop() {
int ecgValue = analogRead(ecgPin);
int gsrValue = analogRead(gsrPin);
// print CSV row: ecg,gsr
Serial.print(ecgValue);
Serial.print(“,”);
Serial.println(gsrValue);
delay(5);
}
Once the code was running, the next critical step was the physical placement of the ECG electrodes. This proved to be one of the most challenging parts of the initial testing phase. Online sources provide a wide range of DIY electrode placement schemes, many of which are inconsistent or oversimplified. In particular, a previously referenced HRV-related Arduino project suggested placing electrodes on the arms. This configuration was tested first, but the resulting signal made it difficult to identify clear R-peaks in the serial plotter, which are essential for ECG interpretation and HRV analysis.
Example of ECG electrode placement as proposed in the “Arduino and HRV Analysis” project and author’s implementation. https://emersonkeenan.net/arduino-hrv/
The official documentation of the ECG sensor instead recommended chest-based electrode placement. However, this approach also required careful positioning to achieve a clean signal.
ECG electrode placement on the chest as recommended in the official sensor documentation.
The most reliable guidance was found in a tutorial video presented by a medical professional, which explained proper ECG electrode placement in practical terms. The key insight was that electrodes should not be placed directly on bone. Instead, they must be positioned on soft tissue—below the shoulder and above the rib cage.
The ECG cables were clearly labeled by the manufacturer:
L (left) electrode placed on the left side of the chest
R (right) electrode placed symmetrically on the right side
F (foot/reference) electrode placed on the lower left abdomen, below the rib cage
Additionally, skin preparation proved to be essential. Degreasing the skin before attaching the electrodes significantly improved signal quality. After applying these corrections and restarting the Arduino sketch, distinct ECG peaks became clearly visible in the serial output.
Raw ECG signal displayed in the Serial Plotter, showing clearly identifiable R-peaks during initial signal testing.
In contrast, the GSR sensor required far less preparation. It was simply attached to the fingers, and a signal was immediately observable. However, even during these initial tests it became evident that the GSR signal was highly noisy and would require filtering and post-processing in later stages of the project.
GSR sensor placement on the fingers during data acquisition.
Several practical limitations of the Arduino IDE became apparent during this testing phase. One major drawback was the inability to adjust the grid or scaling in the Serial Plotter, which made live signal inspection inconvenient. Furthermore, the current version of the Arduino IDE no longer allows direct export of serial data to CSV format from the monitor. This limitation necessitated additional tooling and custom scripts in later stages to enable proper data logging and analysis.
RECAP: Embodied Resonance investigates how the body of a person with lived experience of war responds to auditory triggers that recall traumatic events, and how these responses can be expressed through sound. The heart is central to this project, as cardiac activity – particularly heart rate variability (HRV)—provides detailed insight into stress regulation and autonomic nervous system dynamics associated with post-traumatic stress disorder (PTSD).
The conceptual direction of the work is shaped by my personal experience of the war in Ukraine and an interest in trauma physiology. I was drawn to the idea that trauma leaves measurable traces in the body—signals that often remain inaccessible through language but can be explored scientifically and translated into sonic form. This approach was influenced by The Body Keeps the Score by Bessel van der Kolk, which emphasizes embodied memory and non-verbal manifestations of trauma.
In the previous semester, the project focused on exploratory work with existing physiological datasets. A large open-access dataset on stress-induced myocardial ischemia was used to study cardiac behavior under rest, stress, and recovery conditions. Although not designed specifically for PTSD research, the dataset includes participants with PTSD, anxiety-related disorders, and cardiovascular conditions, offering a diverse basis for analysis.
During this phase, Python tools based on the NeuroKit2 library were developed to compute time- and frequency-domain HRV metrics from ECG recordings. Additional scripts transformed these parameters into MIDI patterns and continuous controller (CC) data for sound synthesis and composition. Initial experiments with real-time HRV streaming were also conducted, but they revealed significant limitations: many HRV metrics require long analysis windows and are computationally demanding, making them unsuitable for stable real-time sonification.
In the current semester, corresponding to the Product phase, the project transitions from simulation-based exploration to work with my own body. During earlier presentations, concerns were raised regarding the ethical implications of experiments that could potentially lead to re-traumatization, particularly when involving other participants with war-related trauma. In response, I decided not to extrapolate the experiment to other Ukrainians at this stage and to limit the investigation to my own physiological responses.
Furthermore, instead of exposing myself to recorded sirens at arbitrary times, I chose to record my ECG during the weekly civil defense siren tests that take place every Saturday in Graz. This context offers a meaningful contrast: for most residents of Austria, the siren test is a routine element of everyday life, largely stripped of emotional urgency. For someone with lived experience of war, however, the same sound carries associations of immediate danger. By situating the recordings within this real, socially normalized setting, the project examines how a familiar public signal can produce profoundly different embodied responses depending on personal history.
Before starting the experimental recordings, it was necessary to select and acquire appropriate sensors and a microcontroller. Prior to purchase, a short survey of available biosensing hardware was conducted, with particular attention paid to signal quality, availability of documentation, and the existence of example projects demonstrating practical use. An additional criterion was whether the sensors had been previously employed in projects related to heart rate variability (HRV) analysis.
For ECG acquisition, the DFRobot Gravity Heart Rate Monitor Sensor was selected. This sensor offered a favorable balance between cost and functionality, providing all required cables as well as disposable electrodes. Importantly, it had been used in a well-documented HRV-focused project, which served as a valuable technical reference during development and troubleshooting. In addition to ECG, a galvanic skin response (GSR) sensor from Seeed Studio was included to explore changes in skin conductance as an additional physiological marker of stress. While GSR was not part of the previous semester’s research, it was included experimentally to assess whether this modality could provide complementary information. At this stage, the structure and usefulness of GSR data were not yet fully predictable and were treated as exploratory. As a microcontroller, the Arduino MKR WiFi 1010 was chosen.
The full list of acquired components is as follows:
Arduino MKR WiFi 1010
DFRobot Gravity Heart Rate Monitor Sensor (ECG)
DFRobot Disposable ECG Electrodes
Seeed Studio GSR Sensor
Seeed Studio 4-pin Male Jumper to Grove Conversion Cable
Breadboard (400 holes)
Male-to-male jumper wires
Male-to-female jumper wires
Potentiometers (100 kΩ)
LiPo Battery 1S 3.7 V 500 mAh (not used in final setup)
The total cost of the hardware provides amounted to approximately 80 EUR. The initial motivation for this choice was the possibility of wireless data transmission via WiFi or Bluetooth. In practice, however, wireless communication was not required. Due to the high motion sensitivity of both ECG and GSR sensors, recordings had to be performed in a largely static position, making a wired USB connection to the computer sufficient. For this reason, a battery intended for mobile operation was ultimately not used.
For software configuration, the Arduino IDE was installed. Although I had prior experience working with Arduino hardware several years ago, the interface had changed significantly. To support the Arduino MKR WiFi 1010, the SAMD Boards package was additionally installed via the Boards Manager. After software setup, all components were connected according to a simple wiring scheme that required no additional electronic elements.
Figure 1. Wiring diagram of the experimental setup with Arduino MKR WiFi 1010, ECG sensor, and GSR sensor.
The Arduino ground (GND) was connected to the ground rail of the breadboard, and the 5 V output was connected to the power rail.
The ECG sensor was connected as follows:
GND (black wire) → ground rail on the breadboard
VCC (red wire) → 5 V power rail
Signal output (blue wire) → analog input A1 on the Arduino
The GSR sensor was connected as follows:
GND (black wire) → ground rail on the breadboard
VCC (red wire) → 3.3 V output on the Arduino
Signal output (yellow wire) → analog input A2 on the Arduino
Figure 2 illustrates the complete wiring configuration of the system, including the Arduino MKR WiFi 1010, ECG sensor, GSR sensor, and breadboard power distribution.
Figure 2. Physical hardware configuration used for ECG and GSR data recording.
The book Practical Augmented Reality: A Guide to the Technologies, Applications, and Human Factors for AR and VR, I expected to be a technical overview. Instead, it turned into a kind of design manual for my master’s thesis on leveraging AR and IoT to improve the shopping experience with context aware AR glasses. The book helped me connect big technological concepts to very concrete design decisions for my own project.
Seeing AR as “aligned, contextual and intelligent”
Early in the book, Aukstakalnis defines augmented reality as not just overlaying random graphics on the real world, but aligning information with the environment in a spatially contextual and intelligent way. This sounds simple, but it actually shifted how I thought about my shopping glasses. It is not enough to place floating labels next to products. The system needs to understand where I am, what shelf I am looking at, and which task I am trying to complete, then lock information to those objects. This definition pushed me to think more seriously about IoT integration and precise tracking so that a price, rating, or nutrition label is always attached to the right item in space.
Designing from the human senses outward
The structure of the book also influenced how I plan my thesis. Aukstakalnis starts with the mechanics of sight, hearing and touch, and only then moves on to displays, audio systems, haptics and sensors. That “inside out” perspective reminded me that my AR glasses concept should begin from human perception, not from whatever hardware is trendy. Reading about depth cues, eye convergence and accommodation, and how easily they can be disturbed by poorly designed displays, made me much more careful about how much information I want to show and at what distances.
For my thesis this means keeping overlays light, avoiding clutter in the central field of view, and respecting comfortable reading distances. It also supports my idea of using short, glanceable cards in the periphery instead of stacking lots of text in front of the user’s eyes.
Translating cross domain case studies into retail
The applications section of the book covers fields like architecture, education, medicine, aerospace and telerobotics. None of them are about grocery shopping, but a common pattern appears: AR and VR are most powerful when they help people understand complex spatial information, rehearse tasks safely, or make better decisions with contextual data. I realised that retail has the same ingredients. Shelves, wayfinding and product comparisons are all spatial problems with hidden data behind them.
This insight strengthened the core vision of my thesis. My AR and IoT concept is not just about showing coupons in the air. It is about turning the store into an understandable information space, where digital layers explain what is currently invisible: where a product is, how fresh it is, how it fits personal constraints like allergies or budget, and how it compares to alternatives.
Impact on my thesis work
Overall, Practical Augmented Reality gave me three concrete things for my master’s project. First, a precise vocabulary and mental model for AR systems, which helped me write a clearer research question and background section. Second, a checklist of human factor issues that I now plan to address through prototype constraints and user testing. Third, a library of real world examples that prove similar technologies already deliver value in other domains, which I can reference when I argue why AR glasses for shopping are realistic in the near future.
Reading the book was less about copying solutions and more about understanding the hidden structure behind successful AR systems. That structure now guides how I want to combine AR, AI and IoT in an everyday retail scenario without forgetting the humans wearing the glasses.
AI Disclaimer This blog post was polished with the assistance of AI.