Skip to content

Implement simple mechanis simulator for Hamilton STAR#1065

Open
burnpanck wants to merge 31 commits into
PyLabRobot:mainfrom
burnpanck:feature/STAR-simulator
Open

Implement simple mechanis simulator for Hamilton STAR#1065
burnpanck wants to merge 31 commits into
PyLabRobot:mainfrom
burnpanck:feature/STAR-simulator

Conversation

@burnpanck
Copy link
Copy Markdown
Contributor

This PR adds a STARSimulator which tries to keep track of drive positions for all mayor drives on the STAR (including 96 head and iSWAP). Our use-case are protocol runtime estimates, so the only thing done with the actual drive movements are await anyio.sleep(move_time). The PR depends on the structured concurrency branch, mainly because that one enables running on the trio event loop. Trio has that amazing MockClock, which fast-forwards whenever everything is sleeping. Note that the PR also bumps the minimum python version to 3.10, because we extensively use the 3.10 match statement. While it could certainly be written without that, I have no interest in writing code using outdated syntax. I anticipate that this may be a blocker from actually merging this as-is, but perhaps it's useful to @BioCam in his iSWAP quest anyway.

Also, bumps minimum python version to 3.10.
@burnpanck
Copy link
Copy Markdown
Contributor Author

burnpanck commented May 27, 2026

I should perhaps also add that the mechanical simulation is still rather crude. We don't do liquid level detection or surface following. We assume all movements are using the same max-speed and acceleration values (per drive type). We don't stagger the pip channels. The main goal is to have at least some estimate rather than none, but there is no intent to be 100 % accurate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant