Light Tunnel Mk2

Exhaustive documentation including variables, configurations and physical effects.

The Light Tunnel produces i.i.d. data and images from a controlled optical experiment.

It contains a controllable light source, linear polarizers mounted on rotating frames, and sensors to measure light intensity at different frequencies and locations. A camera captures images from inside the tunnel.

The chamber produces images and i.i.d. data from up to 99 variables, including sensor measurements, control inputs, and sensor parameters.

Top right: infrared-intensity measurements produced by the first sensor (ir_1) for different intensities of the light-source channels (red/green/blue). Top left: examples of images produced by the tunnel in the linked_leds (left) and the camera_fast (right) hardware configurations. Bottom: observing Malus' law in the effect of the polarizer positions (pol_1, pol_2) on the infrared intensity at the third sensor (ir_3).
Chamber diagram & variables

You can find a description of each variable in the documentation for each hardware configuration below.

Right click to download the image (available under a CC BY-NC 4.0 non-commercial license).
Simulators

See the Simulator Index for a list of the simulators we offer for this chamber, including documentation and example code.

Hardware configurations

Like all chambers, the wind tunnel can automatically load different hardware configurations. See the corresponding PDF for a chamber diagram, a complete description of all variables, and the causal ground-truth graph.

Name
Img. data
Description
Documentation
Causal ground-truth

standard

Standard configuration with all variables (no camera) and exogenous inputs.

linked_leds

Additional tunable causal effects.

linked_leds_sigmoid

Same as linked_leds but with tunable non-linear effects.

camera_fast

Provides images and camera variables.

led_matrix

Same as camera_fast but with individual control of the light-source LEDs.

Map of effects

Here you can find a detailed description of all effects between chamber variables, together with additional experiments and figures. Throughout, we use an edge A \longrightarrow B to denote that a variable A has an effect on variable B.

Short-hand notation

  • A1/2 \longrightarrow B, C is equivalent to the edges A1 \longrightarrow B, A1 \longrightarrow C, A2 \longrightarrow B and A2 \longrightarrow C

  • We can also express this as A* \longrightarrow B,C

Some text and figures in this section are adapted from the original paper (Gamella et al. 2025, Appendix III).

Some hardware configurations introduce additional effects between variables. See their documentation for the complete map of physical effects.

Right click to download the image (available under a CC BY-NC 4.0 non-commercial license).
Causal ground-truth

The graph above can be interpreted as a causal ground truth, as formalized in Gamella et al. (2025, Appendix V), i.e., an edge X \longrightarrow Y signifies that—for some value of the other chamber inputs—an intervention on X will change the distribution of subsequent measurements of Y. The graph should not be taken as a graphical model of statistical dependencies, as external influences on the system may create additional correlations between variables. See the research guide for more details.

In what follows, we provide a detailed description and visualization of each edge (physical effect) in the above graph.

See the variables table for a description of all variables in this section.


red, green, blue \longrightarrow ir_1/2/3, vis_1/2/3

The brightness settings of the light-source colors (red, green, blue) affect the readings of the three light-intensity sensors. Each sensor produces two measurements: one for the infrared part of the spectrum (ir_j), and another for the visible part (vis_j). The effect of each color is approximately linear with heteroscedastic noise, and the slope is determined by its typical wavelength and the sensor's spectral sensitivity.

Effect of each light-source color—controlled by the variables red, green, blue—on the measurements produced by the three light-intensity sensors ir_1/2/3 and vis_1/2/3. The sensors are placed at increasing distances from the light source (with the first sensor closest to it), resulting in a decrease in the maximum measurement value. The infrared channel (ir_j, top row) of the sensors is most sensitive to red light, whereas the effect is reversed for the visible channel (vis_j, bottom row).

red, green, blue \longrightarrow current_ls, current_ls_raw

The chamber produces calibrated measurements (current_ls, in Amperes) of the electrical current drawn by the light source. For each measurement, the chamber also returns the underlying raw, uncalibrated measurement (current_ls_raw), which takes values in the range [-2¹⁵, 2¹⁵] (the output of the sensor's ADC).

The effect of the brightness settings red/green/blue is approximately linear with the same slope for each color (Figure 2).

Measurements of the current drawn by the light source (current_ls) and the corresponding raw uncalibrated measurement (current_ls_raw), for different values of each color channel.

offset/sps/res_current_ls \longrightarrowcurrent_ls, current_ls_raw

We can independently control three parameters of the analog sensor that produces the measurements current_ls and current_ls_raw:

  • offset_current_ls : the reference voltage. Changing it creates an additive shift in the uncalibrated measurements (current_ls_raw) but is largely compensated for in the calibrated measurements (Figure 3, left).

  • sps_current_ls : the oversampling rate, i.e., how many readings are averaged to produce a single measurement. Lower values correspond to higher oversampling rates, increasing the noise-to-signal ratio of the resulting measurements. Both the calibrated and uncalibrated measurements are affected (Figure 3, center).

  • res_current_ls : the measurement range—and thus the resolution—of the sensor. Higher values correspond to smaller measurement ranges, increasing the resolution but saturating the sensor if the actual values fall outside this range (Figure 3, right). Changes to res_current_ls result in a shift and scaling of the uncalibrated measurements (current_ls_raw).

Effect of the sensor parameters offset/sps/res_current_ls (resp. left, center, right) on the calibrated (current_ls, top) and uncalibrated (current_ls_raw, bottom) measurements of the current drawn by the light source. The left and center plot show measurements for red=green=blue=0, and the right plot shows measurements for red=green=blue sampled from random values in [0,255]. The calibrated measurements (in Amps) largely compensate for changes in the reference voltage (offset_current_ls, left top) and sensor resolution (res_current_ls, right top), unless sensor saturation occurs. For example, in the right plot, at resolution res_current_ls = 2, the measurements fall outside of the sensor range, resulting in a saturation of the sensor output. Both calibrated and uncalibrated measurements are affected by changes in the oversampling rate (sps_current_ls, center) which affects their signal-to-noise ratio (i.e., variance, precision).

diode_ir_j \longrightarrow ir_j, diode_vis_j \longrightarrow vis_j (j = 1, 2, 3)

We can control the size of the photodiode used by each sensor to produce the light-intensity measurements ir_j and vis_j. There are three photodiodes (diode_ir_j=0,1,2) for the infrared channel (ir_j) and two photodiodes (diode_vis_j=0,1) for the visible channel (vis_j). Larger values correspond to larger photodiodes, which collect light over a greater area, increasing the sensor's sensitivity.

Measurements from the three light sensors (left / center / right) and their two channels (infrared, top; visible, bottom), for different photodiode settings, under random brightness settings of the light source's green channel. Increasing the diode size—i.e., larger values of diode_ir/vis_j—increases the sensitivity of the sensor.

t_ir_j \longrightarrow ir_j, t_vis_j \longrightarrow vis_j (j = 1, 2, 3)

We can also control the exposure time of each light sensor, affecting its sensitivity. Changes to the exposure time (i.e., integration time) also affect the properties of the sensor noise, changing the conditional distribution of the measurements given the light source brightness (see XY in Figure Y below). A timing mechanism ensures that changes in the exposure time do not affect the overall measurement time.

Measurements from the three light sensors (left / center / right) and their two channels (infrared, top; visible, bottom), for different exposure settings, under random brightness settings of the light source's green channel. Increasing the exposure time—i.e., integration time—increases the sensitivity of the sensor and affects the noise distribution; see, e.g., the difference between t_ir/vis_j=3 and t_ir/vis_j=2 above.

pol_j \longrightarrow angle_j, angle_j_raw, angle_j_digital (j = 1, 2)

The position settings pol_1/2 determine the position (in degrees) of the two polarizer frames. The actual position is measured by two sensors: an encoder producing the measurements angle_1/2_digital , and an analog sensor producing angle_1/2, both in degrees. For the latter, the chamber also returns the underlying raw, uncalibrated measurements (angle_1/2_raw), which take values in the range [-2¹⁵, 2¹⁵] (the output of the sensor's ADC). The relationship between the position setting and the angle measurements is modulated by the motor parameters (see below) and the parameters of the analog sensor.

Angle measurements angle_1_digital (left, in degrees), angle_1 (center, in degrees) and angle_1_raw (right) for 1000 polarizer positions pol_1 sampled uniformly at random from the range [-90,90] . The behaviour for the second polarizer (i.e., pol_2, angle_2_*) is the same and not shown.

Motor parameters

The relationship between the position settings pol_1/2 and the actual polarizer positions—as measured by angle_1/2, angle_1/2_raw, and angle_1/2_digital—is further modulated by the motor parameters.

For example, lowering the resolution of the motor (mot_1/2_steps) results in a coarser polarizer placement. If we lower the current delivered to the motors (mot_1/2_max) or power them off completely (mot_1/2_enabled = 0), they will cease to function properly, missing steps and creating a mismatch between pol_1/2 and the actual positions measured by angle_* (Figure 7).

Position of the first polarizer (angle_1) along a trajectory (dotted black line) defined by the input pol_1 that sets the desired polarizer position. We show trajectories for the default motor parameters (left) and different values of the motor parameters mot_1_max/enabled. Lowering the current delivered to the motor (mot_1_max), or powering it off completely (mot_1_enabled = 0) cause the motor to miss steps, creating a mismatch between the set position (pol_1) and the actual position of the hatch (angle_1). The behavior for the second polarizer (pol_2, angle_2) and the digital angle measurements (angle_1/2_digital) is the same and not shown.

mot_j_max/enabled \longrightarrow current_mot_j, current_mot_j_raw (j = 1, 2)

The variables mot_1/2_max control the amount of electrical current delivered to the each polarizer motor, and mot_1/2_enabled switch the motors on or off. Thus, they affect the calibrated (current_mot_1/2) and uncalibrated (current_mot_1/2_raw) measurements of the electrical current drawn by the polarizer motors. The effect of mot_1/2_max and mot_1/2_enabled on the current measurements is instantaneous, i.e., faster than the measurement rate (Figure 8, left). The relationship between mot_1/2_max and current_1/2_mot, current_mot_1/2_raw is non-linear (Figure 8, right).

Left: calibrated motor current (current_mot_1) under an impulse on the input mot_1_max , when the motor is enabled (mot_1_enabled=1, blue) and when it is disabled (mot_1_enabled=0, yellow). Right: measurements of the calibrated motor current (current_mot_1) for different values of mot_1_max, when the motor is enabled (mot_1_enabled=1, blue) and when it is disabled (mot_1_enabled=0, yellow). The behavior of the second motor and the uncalibrated measurements current_mot_1/2_raw is the same and not shown.

offset/res/sps_angle_j \longrightarrow angle_j, angle_j_raw (j = 1, 2)

We can independently control three parameters of the analog sensors that produce the measurements angle_1/2 and angle_1/2_raw:

  • offset_angle_1/2 : the reference voltage. Changing it creates an additive shift in the uncalibrated measurements (angle_1/2_raw) but is largely compensated for in the calibrated measurements (Figure 9, left).

  • sps_angle_1/2 : the oversampling rate, i.e., how many readings are averaged to produce a single measurement. Lower values correspond to higher oversampling rates, increasing the noise-to-signal ratio of the resulting measurements. Both the calibrated and uncalibrated measurements are affected (Figure 9, center).

  • res_angle_1/2 : the measurement range—and thus the resolution—of the sensor. Higher values correspond to smaller measurement ranges, increasing the resolution but saturating the sensor if the actual values fall outside this range (Figure 9, right). Changes to res_angle_1/2 result in a shift and scaling of the uncalibrated measurements (angle_1/2_raw).

Effect of the sensor parameters offset/sps/res_angle_1 (resp. left, center, right) on the calibrated (angle_1, top) and uncalibrated (angle_1_raw, bottom) measurements of the polarizer position. The behavior for the second polarizer is the same and not shown. The left and center plot show measurements for pol_1=0, and the right plot shows measurements for pol_1 sampled from random values in [-180,0]. The calibrated measurements (in degrees) largely compensate for changes in the reference voltage (offset_angle_1, left top) and sensor resolution (res_angle_1, right top), unless sensor saturation occurs. For example, in the right plot, at resolution res_angle_1 = 2, the measurements fall outside of the sensor range, resulting in a saturation of the sensor output. Both calibrated and uncalibrated measurements are affected by changes in the oversampling rate (sps_angle_1, center), which affects their signal-to-noise ratio (i.e., variance, precision).

pol_1/2 \longrightarrow ir_3, vis_3

The position of the polarizers affects the intensity of the light passing through them, affecting the readings (ir_3, vis_3) of the third light sensor. The effect is described by Malus' law, i.e., the intensity II after the polarizer pair is given by

I=I0cos2(θ1θ2),I = I_0 \cos^2(\theta_1 - \theta_2),

where I0I_0 is the intensity before the polarizers, and θ1,θ2\theta_1, \theta_2 are the polarizer positions. The above law holds for ideal polarizers; in practice, the polarizers do not block all light, and the resulting intensity is better approximated by

I=I0[TpTc)cos2(θ1θ2)+Tc],I = I_0\left[T_p - T_c) \cos^2(\theta_1 - \theta_2) + T_c\right],

where Tp,TcT_p, T_c are the polarizer's parallel and crossed transmission rates; see Gamella et al. (2025a, Appendix IV.2.1) for more details. Note that transmission rates vary with wavelength; i.e., the polarizer blocks red light more than green or blue light, thereby changing the color of the captured images (see, e.g., Gamella et al. 2025b, Figure 2CD).

Effect of the polarizer positions pol_1 and pol_2 on the infrared (ir_3) and visible (vis_3) light-intensity measurements produced by the third sensor, which is placed behind both polarizers relative to the light source (see diagram). In the experiment above, the polarizer positions are sampled uniformly at random while the light source is kept at a fixed brightness (for each of the red, green and blue channels).

led_j_ir, led_j_uv \longrightarrow ir_j, vis_j (j = 1, 2, 3)

Besides the light source, two additional LEDs placed by each light sensor have an effect on its readings. To avoid affecting the measurements of the other light sensors, the LEDs only turn on when their corresponding sensor is taking a measurement. There is an IR LED and a UV LED, with the settings led_j_ir, led_j_uv controlling the current flowing through them, and thus, their brightness. The IR LED can saturate the infrared measurements (ir_1/2/3) produced by the sensors (Figure 11, top). TODO: experiment code

Effect of the by-sensor LEDs on the measurements of the three light sensors (left/center/right) and their infrared (ir_1/2/3, top) and visible (vis_1/2/3, bottom) channels. The LEDs turn on only when their corresponding sensor is taking a measurement and do not affect the measurements of the other sensors. The IR LED (led_1/2/3_ir) can cause the infrared measurements (ir_1/2/3) to saturate.

led_j_ir \longrightarrow current_led_j_ir/_raw, led_j_vis \longrightarrow current_led_j_vis/_raw (j = 1, 2, 3)

Analog sensors measure the current drawn by each LED, producing a calibrated measurement (current_led_j_ir/vis, in Amperes) and the raw, uncalibrated measurements (current_led_j_raw) taking values in the range [-2¹⁵, 2¹⁵] (the output of the sensor's ADC). The effect of the brightness setting led_j_ir/vis on the current measurements is linear (Figure 12). The measurements are also affected by the sensor parameters.

Calibrated current measurements current_led_j_ir/uv for random brightness settings led_j_ir/uv of the corresponding LED. The small offsets in each sensor's output result in small shifts in the measurements. The effect on the uncalibrated measurements current_led_j_ir/uv_raw is the same and not shown.

offset/sps/res_current_led_* \longrightarrow current_led_*, current_led_*_raw

We can independently control three parameters of the analog sensors that produce the measurements current_led_* and current_led_*_raw:

  • offset_current_led_* : the reference voltage. Changing it creates an additive shift in the uncalibrated measurements (current_led_*_raw) but is largely compensated for in the calibrated measurements (Figure 13, left).

  • sps_current_led_* : the oversampling rate, i.e., how many readings are averaged to produce a single measurement. Lower values correspond to higher oversampling rates, increasing the noise-to-signal ratio of the resulting measurements. Both the calibrated and uncalibrated measurements are affected (Figure 13, center).

  • res_current_led_* : the measurement range—and thus the resolution—of the sensor. Higher values correspond to smaller measurement ranges, increasing the resolution but saturating the sensor if the actual values fall outside this range (Figure 13, right). Changes to res_current_led_* result in a shift and scaling of the uncalibrated measurements (current_led_*_raw).

Effect of the sensor parameters offset/sps/res_current_led_1_ir (resp. left, center, right) on the calibrated (current_led_1_ir, top) and uncalibrated (current_led_1_ir_raw, bottom) measurements of the current drawn by the light source. The behaviour for the other LEDs is the same and not shown. The left and center plots show measurements for led_1_ir=0, and the right plot shows measurements for led_1_ir sampled from random values in [0,4095]. The calibrated measurements (in Amps) largely compensate for changes in the reference voltage (offset_current_led_1_ir, left top) and sensor resolution (res_current_led_1_ir, right top), unless sensor saturation occurs. For example, in the right plot, at resolution res_current_led_1_ir = 2, the measurements fall outside of the sensor range, resulting in a saturation of the sensor output. Both calibrated and uncalibrated measurements are affected by changes in the oversampling rate (sps_current_led_1_ir, center), which affects their signal-to-noise ratio (i.e., variance, precision).

offset/sps/res_current_mot_* \longrightarrow current_led_mot_*

We can independently control three parameters of the analog sensors that produce the measurements current_mot_1/2 and current_mot_1/2_raw of the drawn motor current:

  • offset_current_mot_1/2 : the reference voltage. Changing it creates an additive shift in the uncalibrated measurements (current_mot_1/2_raw) but is largely compensated for in the calibrated measurements (Figure 14, left).

  • sps_current_led_mot_1/2 : the oversampling rate, i.e., how many readings are averaged to produce a single measurement. Lower values correspond to higher oversampling rates, increasing the noise-to-signal ratio of the resulting measurements. Both the calibrated and uncalibrated measurements are affected (Figure 14, center).

  • res_current_led_mot_1/2 : the measurement range—and thus the resolution—of the sensor. Higher values correspond to smaller measurement ranges, increasing the resolution but saturating the sensor if the actual values fall outside this range (Figure 14, right). Changes to res_current_led_mot_1/2 result in a shift and scaling of the uncalibrated measurements (current_led_mot_1/2_raw).

Effect of the sensor parameters offset/sps/res_current_mot_1 (resp. left, center, right) on the calibrated (current_mot_1, top) and uncalibrated (current_mot_1_raw, bottom) measurements of the current drawn by the first polarizer motor. The behaviour for the other motor is the same and not shown. The left and center plots show measurements for mot_1_max=3000, and the right plot shows measurements for mot_1_max sampled from random values in [0,4095]. The calibrated measurements (in Amps) largely compensate for changes in the reference voltage (offset_current_mot_1, left top) and sensor resolution (res_current_mot_1, right top), unless sensor saturation occurs. For example, in the right plot, at resolution res_current_mot_1 = 2, the measurements fall outside of the sensor range, resulting in a saturation of the sensor output. Both calibrated and uncalibrated measurements are affected by changes in the oversampling rate (sps_current_mot_1, center), which affects their signal-to-noise ratio (i.e., variance, precision).

External influences

The shared circuitry across Chamber components—and changes in ambient conditions—constitute additional sources of statistical correlation among the sensor measurements produced by the Chamber.

Analog sensors

All analog sensors (i.e., current and polarizer angles) share the same power supply; thus, noise in the supply voltage (e.g., due to EMI) may create an additional—albeit small—correlation between their measurements.

Light sensors

The infrared and visible measurements from each sensor are encoded by the same electronic circuit and ADC. This produces an additional correlation between the measurements produced by the same sensor, i.e., ir_j and vis_j for j=1,2,3. This dependence holds even after conditioning on other sources of variation, e.g., red, green, blue.

While the chambers are kept in a constant environment with artificial lighting, the light sensors are extremely sensitive, and any small variation in lighting conditions will be reflected in all measurements.

Variables table

Below is a glossary of the chamber variables discussed on this page.

Each hardware configuration may expose additional variables beyond those shown here. See the respective documentation for the complete list of variables and their valid values.

Variable
Description

red

The brightness setting of the red LEDs on the main light source. Higher values correspond to higher brightness.

green

The brightness setting of the green LEDs on the main light source. Higher values correspond to higher brightness.

blue

The brightness setting of the blue LEDs on the main light source. Higher values correspond to higher brightness.

current_ls

The measurement of electric current drawn by the light source, in Amperes.

current_ls_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_ls.

offset_current_ls

The reference voltage (offset) of the ADC producing the current_ls and current_ls_raw measurements. The actual reference voltage (in Volts) is given by Because the signal from the current sensor is passed through an inverting amplifier and substracted from the reference voltage, higher values of offset_current_ls result in higher values of current_ls_raw.

sps_current_ls

The data rate of the ADC producing the current_ls and current_ls_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_current_ls

The resolution of the ADC producing the current_ls and current_ls_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

pol_1

The set position of the first polarizer, in degrees. The actual angle of the polarizer may slightly deviate from this setting due to the imperfect coupling of the mechanical pieces and the resolution of the motor (see mot_1_steps).

mot_1_steps

The steps-per-revolution of the stepper motor controlling the first polarizer. Higher values mean a higher motor resolution, i.e., more precise positioning.

mot_1_enabled

Enables (1) or disables (0) the motor of the first polarizer. If the motor is disabled (0), setting pol_1 will have no effect on the actual position of the polarizer (Figure 7).

mot_1_max

Regulates the maximum current drawn by the motor controlling the first polarizer. At low current levels, the motor may lose torque and start missing steps, resulting in a mismatch between the set position pol_1 and the actual polarizer angle (Figure 7).

current_mot_1

The measurement (in Amperes) of the electric current drawn by the motor controlling the first polarizer.

current_mot_1_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_mot_1.

offset_current_mot_1

The reference voltage (offset) of the ADC producing the current_mot_1 and current_mot_1_raw measurements. The actual reference voltage (in Volts) is given by Because the signal from the current sensor is passed through an inverting amplifier and substracted from the reference voltage, higher values of offset_current_mot_1 result in higher values of current_mot_1_raw.

sps_current_mot_1

The data rate of the ADC producing the current_mot_1 and current_mot_1_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_current_mot_1

The resolution of the ADC producing the current_mot_1 and current_mot_1_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

angle_1

The position (in degrees) of the first polarizer as measured by the analog angle sensor.

angle_1_raw

The uncalibrated angle measurement for the first polarizer, i.e., the raw ADC output corresponding to angle_1.

offset_angle_1

The reference voltage (offset) of the ADC producing the angle_1 and angle_1_raw measurements. The actual reference voltage (in Volts) is given by

sps_angle_1

The data rate of the ADC producing the angle_1 and angle_1_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_angle_1

The resolution of the ADC producing the angle_1 and angle_1_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

angle_1_digital

The position (in degrees) of the first polarizer as measured by the rotary encoder.

pol_2

The set position of the second polarizer, in degrees. The actual angle of the polarizer may slightly deviate from this setting due to the imperfect coupling of the mechanical pieces and the resolution of the motor (see mot_2_steps).

mot_2_steps

The steps-per-revolution of the stepper motor controlling the second polarizer. Higher values mean a higher motor resolution, i.e., more precise positioning.

mot_2_enabled

Enables (1) or disables (0) the motor of the second polarizer. If the motor is disabled (0), setting pol_2 will have no effect on the actual position of the polarizer (Figure 7).

mot_2_max

Regulates the maximum current drawn by the motor controlling the second polarizer. At low current levels the motor may lose torque and start missing steps, resulting in a mismatch between the set position pol_2 and the actual polarizer angle (Figure 7).

current_mot_2

The measurement (in Amperes) of the electric current drawn by the motor controlling the second polarizer.

current_mot_2_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_mot_2.

offset_current_mot_2

The reference voltage (offset) of the ADC producing the current_mot_2 and current_mot_2_raw measurements. The actual reference voltage (in Volts) is given by Because the signal from the current sensor is passed through an inverting amplifier and substracted from the reference voltage, higher values of offset_current_mot_2 result in higher values of current_mot_2_raw.

sps_current_mot_2

The data rate of the ADC producing the current_mot_2 and current_mot_2_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_current_mot_2

The resolution of the ADC producing the current_mot_2 and current_mot_2_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

angle_2

The position (in degrees) of the second polarizer as measured by the analog angle sensor.

angle_2_raw

The uncalibrated angle measurement for the second polarizer, i.e., the raw ADC output corresponding to angle_2.

offset_angle_2

The reference voltage (offset) of the ADC producing the angle_2 and angle_2_raw measurements. The actual reference voltage (in Volts) is given by

sps_angle_2

The data rate of the ADC producing the angle_2 and angle_2_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_angle_2

The resolution of the ADC producing the angle_2 and angle_2_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

angle_2_digital

The position (in degrees) of the second polarizer as measured by the rotary encoder.

ir_1

The uncalibrated infrared intensity measurement produced by the first light sensor, placed in front of both polarizers (wrt. the light source).

vis_1

The uncalibrated visible-light intensity measurement produced by the first light sensor, placed in front of both polarizers (wrt. the light source).

ir_2

The uncalibrated infrared intensity measurement produced by the second light sensor, placed between the two polarizers.

vis_2

The uncalibrated visible-light intensity measurement produced by the second light sensor, placed between the two polarizers.

ir_3

The uncalibrated infrared intensity measurement produced by the third light sensor, placed after both polarizers (wrt. the light source).

vis_3

The uncalibrated visible-light intensity measurement produced by the third light sensor, placed after both polarizers (wrt. the light source).

t_ir_1

The exposure time of the first sensor during an infrared intensity measurement. Higher values correspond to longer exposure, increasing the sensitivity of the sensor.

t_vis_1

The exposure time of the first sensor during a visible-light intensity measurement. Higher values correspond to longer exposure, increasing the sensitivity of the sensor.

t_ir_2

The exposure time of the second sensor during an infrared intensity measurement. Higher values correspond to longer exposure, increasing the sensitivity of the sensor.

t_vis_2

The exposure time of the second sensor during a visible-light intensity measurement. Higher values correspond to longer exposure, increasing the sensitivity of the sensor.

t_ir_3

The exposure time of the third sensor during an infrared intensity measurement. Higher values correspond to longer exposure, increasing the sensitivity of the sensor.

t_vis_3

The exposure time of the third sensor during a visible-light intensity measurement. Higher values correspond to longer exposure, increasing the sensitivity of the sensor.

diode_ir_1

The photodiode used by the first light sensor when taking an infrared measurement, corresponding to the small (0), medium(1) and large (2) photodiodes. Larger values increase the sensitivity of the sensor.

diode_vis_1

The photodiode used by the first light sensor when taking a visible-light measurement, corresponding to the small (0) and medium (1) photodiodes. Larger values increase the sensitivity of the sensor.

diode_ir_2

The photodiode used by the second light sensor when taking an infrared measurement, corresponding to the small (0), medium (1) and large (2) photodiodes. Larger values increase the sensitivity of the sensor.

diode_vis_2

The photodiode used by the second light sensor when taking a visible-light measurement, corresponding to the small (0) and medium (1) photodiodes. Larger values increase the sensitivity of the sensor.

diode_ir_3

The photodiode used by the third light sensor when taking an infrared measurement, corresponding to the small (0), medium (1) and large (2) photodiodes. Larger values increase the sensitivity of the sensor.

diode_vis_3

The photodiode used by the third light sensor when taking a visible-light measurement, corresponding to the small (0) and medium (1) photodiodes. Larger values increase the sensitivity of the sensor.

led_1_ir

The brightness setting of the infrared (IR) LED above the first light-intensity sensor. Higher values correspond to higher brightness.

led_1_uv

The brightness setting of the ultraviolet (UV) LED above the first light-intensity sensor. Higher values correspond to higher brightness.

led_2_ir

The brightness setting of the infrared (IR) LED above the second light-intensity sensor. Higher values correspond to higher brightness.

led_2_uv

The brightness setting of the ultraviolet (UV) LED above the second light-intensity sensor. Higher values correspond to higher brightness.

led_3_ir

The brightness setting of the infrared (IR) LED above the third light-intensity sensor. Higher values correspond to higher brightness.

led_3_uv

The brightness setting of the ultraviolet (UV) LED above the third light-intensity sensor. Higher values correspond to higher brightness.

current_led_1_ir

Measurement (in Amperes) of the current drawn by the IR LED above the first sensor.

current_led_1_ir_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_led_1_ir.

offset_current_led_1_ir

The reference voltage (offset) of the ADC producing the current_led_1_ir and current_led_1_ir_raw measurements. The actual reference voltage (in Volts) is given by Because the signal from the current sensor is passed through an inverting amplifier and substracted from the reference voltage, higher values of offset_current_led_1_ir result in higher values of current_led_1_ir_raw.

sps_current_led_1_ir

The data rate of the ADC producing the current_led_1_ir and current_led_1_ir_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_current_led_1_ir

The resolution of the ADC producing the current_led_1_ir and current_led_1_ir_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

current_led_1_uv

Measurement (in Amperes) of the current drawn by the UV LED above the first sensor.

current_led_1_uv_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_led_1_uv.

offset_current_led_1_uv

The reference voltage (offset) of the ADC producing the current_led_1_uv and current_led_1_uv_raw measurements. The actual reference voltage (in Volts) is given by Because the signal from the current sensor is passed through an inverting amplifier and substracted from the reference voltage, higher values of offset_current_led_1_uv result in higher values of current_led_1_uv_raw.

sps_current_led_1_uv

The data rate of the ADC producing the current_led_1_uv and current_led_1_uv_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_current_led_1_uv

The resolution of the ADC producing the current_led_1_uv and current_led_1_uv_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

current_led_2_ir

Measurement (in Amperes) of the current drawn by the IR LED above the second sensor.

current_led_2_ir_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_led_2_ir.

offset_current_led_2_ir

The reference voltage (offset) of the ADC producing the current_led_2_ir and current_led_2_ir_raw measurements. The actual reference voltage (in Volts) is given by Because the signal from the current sensor is passed through an inverting amplifier and substracted from the reference voltage, higher values of offset_current_led_2_ir result in higher values of current_led_2_ir_raw.

sps_current_led_2_ir

The data rate of the ADC producing the current_led_2_ir and current_led_2_ir_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_current_led_2_ir

The resolution of the ADC producing the current_led_2_ir and current_led_2_ir_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

current_led_2_uv

Measurement (in Amperes) of the current drawn by the UV LED above the second sensor.

current_led_2_uv_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_led_2_uv.

offset_current_led_2_uv

The reference voltage (offset) of the ADC producing the current_led_2_uv and current_led_2_uv_raw measurements. The actual reference voltage (in Volts) is given by Because the signal from the current sensor is passed through an inverting amplifier and substracted from the reference voltage, higher values of offset_current_led_2_uv result in higher values of current_led_2_uv_raw.

sps_current_led_2_uv

The data rate of the ADC producing the current_led_2_uv and current_led_2_uv_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_current_led_2_uv

The resolution of the ADC producing the current_led_2_uv and current_led_2_uv_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

current_led_3_ir

Measurement (in Amperes) of the current drawn by the IR LED above the third sensor.

current_led_3_ir_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_led_3_ir.

offset_current_led_3_ir

The reference voltage (offset) of the ADC producing the current_led_3_ir and current_led_3_ir_raw measurements. The actual reference voltage (in Volts) is given by Because the signal from the current sensor is passed through an inverting amplifier and substracted from the reference voltage, higher values of offset_current_led_3_ir result in higher values of current_led_3_ir_raw.

sps_current_led_3_ir

The data rate of the ADC producing the current_led_3_ir and current_led_3_ir_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_current_led_3_ir

The resolution of the ADC producing the current_led_3_ir and current_led_3_ir_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

current_led_3_uv

Measurement (in Amperes) of the current drawn by the UV LED above the third sensor.

current_led_3_uv_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_led_3_uv.

offset_current_led_3_uv

The reference voltage (offset) of the ADC producing the current_led_3_uv and current_led_3_uv_raw measurements. The actual reference voltage (in Volts) is given by Because the signal from the current sensor is passed through an inverting amplifier and substracted from the reference voltage, higher values of offset_current_led_3_uv result in higher values of current_led_3_uv_raw.

sps_current_led_3_uv

The data rate of the ADC producing the current_led_3_uv and current_led_3_uv_raw measurements. Lower values mean the ADC accumulates more readings to produce a single measurement, reducing noise but also lowering the measurement speed. The actual data rates are (respectively) 8,16,32,64,128,250,4758, 16, 32, 64, 128, 250, 475 and 860860 samples per second.

res_current_led_3_uv

The resolution of the ADC producing the current_led_3_uv and current_led_3_uv_raw measurements. Higher values mean a higher resolution, where a smaller voltage range is mapped to the ADC output range [-32768, 32767]. The voltage ranges are, respectively, ±6.144,±4.096,±2.048,±1.024,±0.512\pm 6.144, \pm 4.096, \pm 2.048, \pm 1.024, \pm 0.512 and ±0.256\pm 0.256 Volts. The reading will saturate, i.e., clamp at -32768 or 32767, if the input voltage exceeds the set range.

current_supply

The current drawn by the chamber and all its components, including the onboard computer and server. Used for diagnosis.

current_supply_raw

The uncalibrated measurement, i.e., the raw ADC output, corresponding to the measurement current_supply.

pot_1_volts

The raw voltage (in volts) of the first angle sensor. Used for diagnosis.

pot_2_volts

The raw voltage (in volts) of the second angle sensor. Used for diagnosis.

Citation

If you use this documentation, our open-source datasets, or Remote Lab in your scientific work, please consider citing:

References

[Gamella 2025a] [PDF] Gamella, Juan L., Peters, Jonas & Bühlmann, Peter. Causal chambers as a real-world physical testbed for AI methodology. Nat Mach Intell 7, 107–118 (2025).

[Gamella 2025b] [PDF] Gamella*, Juan L. , Bing*, Simon & Runge, Jakob. Sanity Checking Causal Representation Learning on a Simple Real-World System. ICML 2025.

Last updated