This project showcases a high-level architecture for a self-driving laboratory using the INTERSECT Open Architecture and SiLA 2 laboratory automation standard. The demonstrator is designed to determine the optimal concentration of sodium dodecyl sulfate (SDS) in water to achieve a target interfacial surface tension using the pendant drop tensiometry method.
The goal of this project is to determine how well the INTERSECT Open Architecture aligns with the goals of the RobotLab project. The INTERSECT open architecture describes an open federated architecture networked system of SDLs and instruments that work together to conduct and analyse experiments autonomously. The assessment is conducted by applying the architecture to one of RobotLab's experimental use cases. The interfacial surface tension use case from Radboud University was selected for its clarity and advanced development stage. The development of the demonstrator is done with the help of the SiLA standard for laboratory automation. It provides interoperability and flexibility for the integration of laboratory instruments and software services based on standardised communication protocols and data specifications. For the implementation of these microservices certain snippets are borrowed from the team at Radboud to increase the realism of the simulation.
This project utilizes the following packages, among others:
- SiLA 2 python implementation to create the microservices
- Prefect workflow orchestration to visualize the workflow.
- opencv-python To generate and analyse the pendant drop images.
To get started with this project first this project must be cloned from GitLab.
git clone https://git.fhict.nl/coe-htsm/sdl-surface-tension-simulator.git
CD into the directory
CD sdl-surface-tension-simulator
Install the requirements.
pip install -r requirements.txt
(Optional) Start the Prefect server in another terminal. This server is hosted at 127.0.0.1:4200
prefect server start
Start the orchestrator which contains the user interface of the demonstrator.
python orchestrator.py
The architecture for this demonstrator is defined in a high-level architecture using the architectural patterns defined by the INTERSECT Use Case Design Patterns. These patterns present overall control, data, and work flow, but not detailed control messages, data transfers, and orchestration.
The microservice architecture implements the components described in the high-level architecture and uses the patterns described in the INTERSECT Microservice Architecture. The orchestrator can be compared to the controller in the high-level architecture. Instead of receiving data from the services, the orchestrator tells these services where to store their data.
- Vertical scaling factor for image generation can sometimes be sub-pixel.
Thanks to:
- The Robotlab team from Radboud University for providing their use case and the great feedback.
- The Robotlab team from Fontys for their great assistance.
- Peter Lambooij for his technical, chemical, and mathematical expertise and guidance.
- Lars van den Brandt for this for his enthusiastic engagement, assistance, and collaboration.

