Cleanroom Testing

TIE Novel Products Software Team

Github: https://github.austin.utexas.edu/Texas-Institute-for-Electronics/MRAlphaController

Contributors:

  • @…

  • @…

  • @…

  • @…


11/18/2025: W2W

Summary

@… is testing MRAlpha codebase on the W2W machine. A lot has changed since our last test session with the additions of futures and sequences.

The findings from Jeff:

  1. The Zaber error is a zaber library timeout error. That makes me think it's very likely serial port delays/etc stuff going on.  I think it's highly likely switching to Ethernet will solve those issues.

  2. It appears that the ACSProgramController still has synchronous waits in its futures code, which might cause many problems. I thought I got that checked in but must not have; I'll look into that this afternoon.

  3. It looks like Josh made a great correction to the axis position error - good find!  Those bubbled up errors on reading futures can be tricky to track down.


11/24/2025: W2W

@…

Summary

  • Zaber performance is blocking further progress; current state is untenable.

  • Manual stage control and manual process control are too unresponsive to use.

  • Registration frequently fails when checking Zaber, while all other stages register correctly.

  • Current config has many subsystems disabled to isolate core functionality.

  • Multiple recurring errors encountered throughout the day (attachments referenced).

  • Josh is willing to give up their block tomorrow for someone else to investigate.

Logfiles



11/25/2025: W2W

@…

Summary

  • Need updated safe positions for XYZ. Z safe position is 1.0 now.

  • Update SI-F1000 sensor conversion units to microns, not mm. And the units are off by a couple decimal points.

  • Things I needed to do to get mapping the wafer chuck (almost) working.

    • Use reed_cr branch.

    • Remove line 13 of BondingParametersEnum. Remove ZHeadDieLoadHeight from enum.

    • Change zheadSafePosition to -1.5 in System/+InterferenceChecks/+PrecisionStage/FR1589_ZHeadInSafePostionCheck.m

    • Simulate Zaber motion controller so polling timeouts dont block all progress.

    • Do not simulate zsensor_1, make it SiF1000 sensor.

    • Move everything to safe positions

    • Move XYT stage to 215, 45

    • Move ZHead to -1.4

    • Comment out all steps in Bond Wafer to Wafer sequence except mapmaterial step.

Files/Images/Errors

Notes

image-20251125-210045.png


921 microns == 92119mm - Need to change conversion in the code.

Observe ZHead level without wafer loaded. This is mapping the chuck. Stepped zhead down until sensor could read measurements reliably.

25-Nov-2025 15:27:52.128 info: Preparing raster scan...
25-Nov-2025 15:27:52.335 info: Moving XY stage to raster point: [285 -85]
25-Nov-2025 15:27:53.677 error: motion ERROR:
25-Nov-2025 15:27:53.841 error: Error using SubSystems.ZaberMotionController.ZaberMotionController/isAxisRegistered (line 212)
Java exception occurred:
zaber.motion.exceptions.RequestTimeoutException: Device has not responded in given timeout
at zaber.motion.exceptions.ExceptionConverter.convert(ExceptionConverter.java:74)
at zaber.motion.gateway.Call.parseResponse(Call.java:125)
at zaber.motion.gateway.Call.lambda$callAsync$0(Call.java:109)
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602)
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962)
at zaber.motion.gateway.Call$2.invoke(Call.java:92)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.invokeCallback(CallbackReference.java:470)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.callback(CallbackReference.java:500)

Error in SubSystems.PinLift/isRegistered (line 250) value = obj.motionController.isAxisRegistered(obj.z); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.PinLift/performSnapshot (line 72) obj.isRegistered, ... ^^^^^^^^^^^^^^^^ Error in SubSystem/getSnapshotFuture (line 190) future.setData(obj.performSnapshot); ^^^^^^^^^^^^^^^^^^^ Error in InterferenceChecker/getSnapshots (line 95) ssdict(ss.uniqueName) = ss.getSnapshotFuture(); ^^^^^^^^^^^^^^^^^^^^^^ Error in InterferenceChecker/runChecksFuture (line 170) future = obj.getSnapshots(SelfSnapshot = options.SelfSnapshot); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.MotionStateMachine.ValidateMove/isValidMoveFuture (line 52) future = interferenceChecker.runChecksFuture(proposed, @obj.checkComplete); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.MotionStateMachine.ValidateMove/entry (line 18) obj.checkFuture = obj.isValidMoveFuture(); ^^^^^^^^^^^^^^^^^^^^^^^ Error in BaseState/privateEntry (line 152) obj.entry(); ^^^^^^^^^^^ Error in StateMachine/performTransition (line 271) obj.currentState.privateEntry(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in StateMachine/step (line 138) obj.performTransition(transition); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.Motion/process (line 895) obj.motionStateMachine.step(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.Motion>@(~,~)process(obj) (line 84) obj.processTimer = SafeTimer(@(~,~)process(obj), ... ^^^^^^^^^^^^ Error in SafeTimer/onTimerFired (line 163) obj.userCallback(); ^^^^^^^^^^^^^^^^^^ Error in SafeTimer>@(~,~)weakObj.Handle.onTimerFired() (line 97) timerFunctionHandle = @(~,~)weakObj.Handle.onTimerFired(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/timercb (line 90) feval(val{1}, obj, eventStruct, val{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.graphics.interaction.interactions.ZoomInteraction/createWebInteraction Error in matlab.graphics.interaction.interactioncontainers.StandardAxesInteractionContainer/createWebInteraction Error in matlab.graphics.interaction.interactioncontainers.BaseAxesInteractionContainer/createDefaultWebAxesInteractions Error in matlab.graphics.interaction.interactioncontainers.CartesianAxesInteractionContainer/createDefaultWebAxesInteractions Error in matlab.graphics.interaction.interactioncontainers.BaseAxesInteractionContainer/setupInteractions Error in matlab.graphics.interaction.internal.UnifiedAxesInteractions.createDefaultInteractionsOnAxes Error in matlab.graphics.interaction.internal.UnifiedAxesInteractions.createDefaultInteractionsInSync Error in matlab.graphics.interaction.internal.UnifiedAxesInteractions.createDefaultInteractions>@()matlab.graphics.interaction.internal.UnifiedAxesInteractions.createDefaultInteractionsInSync(ax,is2dim,numDataSpaces)

25-Nov-2025 15:28:08.391 error: Error using SubSystems.ZaberMotionController.ZaberMotionController/isAxisRegistered (line 212)
Java exception occurred:
zaber.motion.exceptions.RequestTimeoutException: Device has not responded in given timeout
at zaber.motion.exceptions.ExceptionConverter.convert(ExceptionConverter.java:74)
at zaber.motion.gateway.Call.parseResponse(Call.java:125)
at zaber.motion.gateway.Call.lambda$callAsync$0(Call.java:109)
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602)
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962)
at zaber.motion.gateway.Call$2.invoke(Call.java:92)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.invokeCallback(CallbackReference.java:470)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.callback(CallbackReference.java:500)

Error in SubSystems.PinLift/isRegistered (line 250) value = obj.motionController.isAxisRegistered(obj.z); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.Motion/isPinLiftRegistered (line 169) value = obj.pinLift.isRegistered; ^^^^^^^^^^^^^^^^^^^^^^^^ Error in . (line 126) [varargout{1:nargout}] = obj.subSystemStruct.(indexOp); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in MRalphaController/updateSystemState (line 518) app.env.system.motion.isPinLiftRegistered()); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in MRalphaController>@(~,~)app.updateSystemState() (line 119) app.stateUpdateTimer = SafeTimer(@(~,~)app.updateSystemState(),... ^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/onTimerFired (line 163) obj.userCallback(); ^^^^^^^^^^^^^^^^^^ Error in SafeTimer>@(~,~)weakObj.Handle.onTimerFired() (line 97) timerFunctionHandle = @(~,~)weakObj.Handle.onTimerFired(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/timercb (line 90) feval(val{1}, obj, eventStruct, val{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/delete (line 184) areRunning(i) = obj(i).coreBackend.Running; %#ok<AGROW> ^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/delete (line 130) delete(obj.internalTimer); ^^^^^^^^^^^^^^^^^^^^^^^^^

When attempting to start the mapping of wafer chuck, motion errored out due to zaber connection failing.


config


logs

github branch

https://github.austin.utexas.edu/Texas-Institute-for-Electronics/MRAlphaController/tree/reed_cr


11/26/2025: W2W

@…

Summary

  • Zaber connection issues resolved by switching to ethernet and updating config along with System.m.

  • We don’t need to map the full wafer, just need a small surface area to generate plane.

  • Manual Process control UI is unreliable, need to fix crashes and weird UI resizing bug.

  • Update “safe positions” for precision stage. ZHead is good at 1. Also update ZHeadPreBond position to something close enough for the sensor to read measurements on the wafer.

Files/Images/Errors

Notes


config used

https://github.austin.utexas.edu/Texas-Institute-for-Electronics/MRAlphaController/tree/reed_cr


image-20251126-180735.png


ZHead chuck map


logs


12/4/2025: W2W

@…

Summary

  • The app does take 20ish seconds to start up for the first time due to starting all of the threads.

  • The goal of today was to make the app reliable. It will not crash and responds to input in a timely manner.

  • It takes 1-3 seconds to switch from one activity to another.

#

Error

Notes

1


Error Notes 1 Warning: Clock is not executing listener with properties: Source: {[1×1 CentralClock]} EventName: 'baseClock' Callback: @(~,~)onTick(obj) Enabled: 1 Recursive: 0 > In Clock/watchdogCallback (line 218) In Clock>@()watchdogCallback(obj) (line 200) In SafeTimer/onTimerFired (line 163) In SafeTimer>@(~,~)weakObj.Handle.onTimerFired() (line 97) In timer/timercb (line 90) In mustBeMember (line 14) In SafeTimer (line 89) In Futures/Future/launchCompletionCallback (line 161) In Futures/Future/setData (line 138) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 207) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems.ACSProgramController.readProgramVariableFuture/setProgramVariableData (line 201) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In ImageDisplayer/displayCallback (line 101) In ImageDisplayer>@(future)displayCallback(obj,future) (line 95) In SubSystems.ACSProgramController.runProgramMethodFuture/setFutureData (line 78) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In ImageDisplayer/displayCallback (line 100) In ImageDisplayer>@(future)displayCallback(obj,future) (line 95) Warning: Clock is not executing listener with properties: Source: {[1×1 CentralClock]} EventName: 'baseClock' Callback: @(~,~)onTick(obj) Enabled: 1 Recursive: 0 > In Clock/watchdogCallback (line 218) In Clock>@()watchdogCallback(obj) (line 200) In SafeTimer/onTimerFired (line 163) In SafeTimer>@(~,~)weakObj.Handle.onTimerFired() (line 97) In timer/timercb (line 90) In num2str (line 49) In timer (line 133) In SafeTimer (line 98) In Futures/Future/launchCompletionCallback (line 161) In Futures/Future/setData (line 138) In SubSystems/ACSMotionController/setACSFutureData (line 44) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In ImageDisplayer/displayCallback (line 100) In ImageDisplayer>@(future)displayCallback(obj,future) (line 95) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems.ACSIOController.runIOMethodFuture/setFutureData (line 192) In SubSystems/ACSMotionController/setACSFutureData (line 38) In SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) In ImageDisplayer/displayCallback (line 100) In ImageDisplayer>@(future)displayCallback(obj,future) (line 95) Invalid or deleted object. Error in BaseProcesses/startSelectedProcess (line 137) obj.env.log.logException(ME); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in MRalphaController/ExecuteButtonPushed (line 687) app.processes.startSelectedProcess(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in appdesigner.internal.service.AppManagementService/executeCallback (line 13) callback(appOrUserComponent, event); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.apps.AppBase>@(source,event)executeCallback(ams,app,callback,requiresEventData,event) (line 54) newCallback = @(source, event)executeCallback(ams, ... ^^^^^^^^^^^^^^^^^^^^^^^^ Error using appdesservices.internal.interfaces.model.AbstractModel/executeUserCallback (line 282) Error while evaluating DestroyedObject PrivateButtonPushedFcn.

Zaber timed out at init, loaded manual process control, got these errors, could not switch out from manual process control and app hung for 5 min before crashing.

2

04-Dec-2025 08:51:41.546 error: Error using SubSystems.ZaberMotionController.ZaberMotionController/initialize (line 345)
Java exception occurred:
zaber.motion.exceptions.RequestTimeoutException: Device has not responded in given timeout
at zaber.motion.exceptions.ExceptionConverter.convert(ExceptionConverter.java:74)
at zaber.motion.gateway.Call.parseResponse(Call.java:125)
at zaber.motion.gateway.Call.lambda$callAsync$0(Call.java:109)
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602)
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962)
at zaber.motion.gateway.Call$2.invoke(Call.java:92)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.invokeCallback(CallbackReference.java:470)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.callback(CallbackReference.java:500)


Zaber timing out on init. Will document troubleshooting steps.

  1. Open zaber launcher, hit refresh on the connection. Connection might be stale?

  2. FIX: Hit refresh on connection in zaber launcher. Zaber is init-ing fine now.

3

App is slowing to a crawl. Can barely get functionality. Opening manual process control took 1min from button press.

image-20251204-174311.png
image-20251204-174023.png
image-20251204-173901.png
image-20251204-173826.png
image-20251204-174412.png
  1. FIX: Disabling IR camera feeds.

    1. The IR camera feeds being piped into main UI will make the app unusable. We should only process video during the activities.

  2. Without the IR camera feeds, it still takes up to 25 seconds to switch from one activity to another. This needs to be faster, if we are polling or updating UI fields at high frequencies, we need to reduce the rates and allocate more computing resources to the app if possible.

  3. FIX: Remember to remove simulated latency from simulated motion controllers. This default latency should be zero.

  4. FIX: Polling rate of ACSMotionController might be too high. The futures methods for ACS subsystems are taking up a lot of time. Need to look into this, use the flame graph.

  5. FIX: executionRate of all Process.m (activities) is defaulted to 50HZ. We dont need this to be that high and causes a buildup of futures polling. Reduced to 1Hz.

4

04-Dec-2025 09:22:43.223 error: Display Stage Controls ERROR:
04-Dec-2025 09:22:43.455 error: Error using Futures.Future/getData (line 46)
Array indices must be positive integers or logical values.

Error in ActivityControls.AxisControl/update (line 176) snap = obj.axisSnapshotFuture.getData(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in Activities.DisplayStageControls/process (line 124) axisControl.update(); ^^^^^^^^^^^^^^^^^^^^ Error in ActivityRunnerState/during (line 69) obj.activity.process(); ^^^^^^^^^^^^^^^^^^^^^^ Error in BaseState/privateDuring (line 157) obj.during(); ^^^^^^^^^^^^ Error in StateMachine/executeDuring (line 276) obj.currentState.privateDuring(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in StateMachine/step (line 140) obj.executeDuring(); ^^^^^^^^^^^^^^^^^^^ Error in Process/doStep (line 128) obj.stateMachine.step(); ^^^^^^^^^^^^^^^^^^^^^^^ Error in Process/processTimerCallback (line 181) obj.doStep(); ^^^^^^^^^^^^ Error in Process>@(varargin)obj.processTimerCallback(varargin{:}) (line 174) obj.processTimer = SafeTimer(@obj.processTimerCallback, Period=1/obj.executionRate); ^^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/onTimerFired (line 163) obj.userCallback(); ^^^^^^^^^^^^^^^^^^ Error in SafeTimer>@(~,~)weakObj.Handle.onTimerFired() (line 97) timerFunctionHandle = @(~,~)weakObj.Handle.onTimerFired(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/timercb (line 90) feval(val{1}, obj, eventStruct, val{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.internal.timer.lifetimeManager>remove (line 86) [~,heq] = eq(list,tobj); ^^^^^^^^^^^^^ Error in matlab.internal.timer.lifetimeManager (line 62) state.list = remove(state.list,tobj); ^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/delete (line 227) matlab.internal.timer.lifetimeManager('Delete',obj); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/delete (line 130) delete(obj.internalTimer); ^^^^^^^^^^^^^^^^^^^^^^^^^ Error in Futures.Future/launchCompletionCallback (line 161) obj.completionTimer = SafeTimer(@obj.doCompletionCallback, ... ^^^^^^^^^^^^^^^^^^^ Error in Futures.Future/setData (line 138) obj.launchCompletionCallback(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 44) future.setData(data), ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSProgramController/runProgramMethodFuture/setFutureData (line 78) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^

04-Dec-2025 09:22:43.944 error: Display Stage Controls ERROR:
04-Dec-2025 09:22:44.147 error: Error using Futures.Future/getData (line 46)
Array indices must be positive integers or logical values.

Error in ActivityControls.AxisControl/update (line 176) snap = obj.axisSnapshotFuture.getData(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in Activities.DisplayStageControls/process (line 124) axisControl.update(); ^^^^^^^^^^^^^^^^^^^^ Error in ActivityRunnerState/during (line 69) obj.activity.process(); ^^^^^^^^^^^^^^^^^^^^^^ Error in BaseState/privateDuring (line 157) obj.during(); ^^^^^^^^^^^^ Error in StateMachine/executeDuring (line 276) obj.currentState.privateDuring(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in StateMachine/step (line 140) obj.executeDuring(); ^^^^^^^^^^^^^^^^^^^ Error in Process/doStep (line 128) obj.stateMachine.step(); ^^^^^^^^^^^^^^^^^^^^^^^ Error in Process/processTimerCallback (line 181) obj.doStep(); ^^^^^^^^^^^^ Error in Process>@(varargin)obj.processTimerCallback(varargin{:}) (line 174) obj.processTimer = SafeTimer(@obj.processTimerCallback, Period=1/obj.executionRate); ^^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/onTimerFired (line 163) obj.userCallback(); ^^^^^^^^^^^^^^^^^^ Error in SafeTimer>@(~,~)weakObj.Handle.onTimerFired() (line 97) timerFunctionHandle = @(~,~)weakObj.Handle.onTimerFired(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/timercb (line 90) feval(val{1}, obj, eventStruct, val{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in matlab.internal.timer.lifetimeManager>remove (line 86) [~,heq] = eq(list,tobj); ^^^^^^^^^^^^^ Error in matlab.internal.timer.lifetimeManager (line 62) state.list = remove(state.list,tobj); ^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/delete (line 227) matlab.internal.timer.lifetimeManager('Delete',obj); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/delete (line 130) delete(obj.internalTimer); ^^^^^^^^^^^^^^^^^^^^^^^^^ Error in Futures.Future/launchCompletionCallback (line 161) obj.completionTimer = SafeTimer(@obj.doCompletionCallback, ... ^^^^^^^^^^^^^^^^^^^ Error in Futures.Future/setData (line 138) obj.launchCompletionCallback(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 44) future.setData(data), ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSProgramController/runProgramMethodFuture/setFutureData (line 78) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^

04-Dec-2025 09:22:44.835 error: Display Stage Controls ERROR:

Display stage controls error blowing away the log with futures issues. This needs fixing.

FIX: This happens when you open the activity wit hout having registered motion. I removed the logging of the error as we can just ignore this.

5

04-Dec-2025 09:29:15.463 error: IR Moiré Measurement Main Activity ERROR:
04-Dec-2025 09:29:15.757 error: Error using Futures.Future/getData (line 46)
Array indices must be positive integers or logical values.

Error in ActivityControls.AxisControl/update (line 176) snap = obj.axisSnapshotFuture.getData(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in Activities.IRMoireMeasurement.Activity/process (line 152) axisControl.update(); ^^^^^^^^^^^^^^^^^^^^ Error in ActivityRunnerState/during (line 69) obj.activity.process(); ^^^^^^^^^^^^^^^^^^^^^^ Error in BaseState/privateDuring (line 157) obj.during(); ^^^^^^^^^^^^ Error in StateMachine/executeDuring (line 276) obj.currentState.privateDuring(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in StateMachine/step (line 140) obj.executeDuring(); ^^^^^^^^^^^^^^^^^^^ Error in Process/doStep (line 128) obj.stateMachine.step(); ^^^^^^^^^^^^^^^^^^^^^^^ Error in Process/processTimerCallback (line 181) obj.doStep(); ^^^^^^^^^^^^ Error in Process>@(varargin)obj.processTimerCallback(varargin{:}) (line 174) obj.processTimer = SafeTimer(@obj.processTimerCallback, Period=1/obj.executionRate); ^^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/onTimerFired (line 163) obj.userCallback(); ^^^^^^^^^^^^^^^^^^ Error in SafeTimer>@(~,~)weakObj.Handle.onTimerFired() (line 97) timerFunctionHandle = @(~,~)weakObj.Handle.onTimerFired(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/timercb (line 90) feval(val{1}, obj, eventStruct, val{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/start (line 67) obj(lcv).coreBackend.start(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/start (line 112) start(obj.internalTimer); ^^^^^^^^^^^^^^^^^^^^^^^^ Error in Futures.Future/launchCompletionCallback (line 163) obj.completionTimer.start(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in Futures.Future/setData (line 138) obj.launchCompletionCallback(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 44) future.setData(data), ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs); ^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController/setACSFutureData (line 38) data(f) = axisFutures(f).fetchOutputs; ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSMotionController>@(axisFutures)setACSFutureData(obj,future,data,axisFutures) (line 75) @(axisFutures) setACSFutureData(obj, future, data, axisFutures), ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSProgramController/runProgramMethodFuture/setFutureData (line 78) future.setData(pFuture.fetchOutputs);

Similar stack trace to display stage controls error blowing away the log with futures issues. This needs fixing.

FIX: This happens when you open the activity without having registered motion. I removed the logging of the error as we can just ignore this.

6


04-Dec-2025 14:03:55.604 error: Error using () Dimensions of the key and value must be the same, or the value must be scalar. Error in SubSystems.ACSIOController/readFuture/assembleValues (line 273) values(valueKey) = double(agg.futures(valueKey).getData()); ^^^^^^^^^^^^^^^^ Error in Futures.AggregatedFuture/checkCompletion (line 79) obj.setData(obj.aggregationCallback(obj)); % callback receives the aggregator ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in Futures.AggregatedFuture>@(~)obj.checkCompletion (line 55) futureDict.values.registerCallback(@(~)obj.checkCompletion); ^^^^^^^^^^^^^^^^^^^ Error in Futures.Future/doCompletionCallback (line 171) obj.completionCallback(obj); ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in Futures.Future>@(varargin)obj.doCompletionCallback(varargin{:}) (line 161) obj.completionTimer = SafeTimer(@obj.doCompletionCallback, ... ^^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/onTimerFired (line 163) obj.userCallback(); ^^^^^^^^^^^^^^^^^^ Error in SafeTimer>@(~,~)weakObj.Handle.onTimerFired() (line 97) timerFunctionHandle = @(~,~)weakObj.Handle.onTimerFired(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/timercb (line 90) feval(val{1}, obj, eventStruct, val{2:end}); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in timer/start (line 67) obj(lcv).coreBackend.start(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SafeTimer/start (line 112) start(obj.internalTimer); ^^^^^^^^^^^^^^^^^^^^^^^^ Error in Futures.Future/launchCompletionCallback (line 163) obj.completionTimer.start(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in Futures.Future/setData (line 138) obj.launchCompletionCallback(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error in SubSystems.ACSIOController/runIOMethodFuture/setFutureData (line 192) future.setData(pFuture.fetchOutputs);

Not sure what this was about. Needs attention.