10 KiB
Nano Active Stabilization of samples for tomography experiments: A mechatronic design approach
Author: Thomas Dehaeze University: Liège Université Date: April 2025
Abstract
The fourth generation synchrotron light sources has yielded X-ray beams with a 100-fold increase in brightness and sub-micron focusing capabilities, offering unprecedented scientific opportunities while requiring end-stations with enhanced sample positioning accuracy. At the European Synchrotron (ESRF), the ID31 beamline features an end-station for positioning samples along complex trajectories. However, its micrometer-range accuracy, limited by thermal drifts and mechanical vibrations, prevents maintaining the point of interest on the focused beam during experiments.
To address this limitation, this thesis aims to develop a system for actively stabilizing the sample's position down to the nanometer range while the end-station moves the sample through the beam. The developed system integrates an external metrology for sample position measurement, an active stabilization stage mounted between the end-station and the sample, and a dedicated control architecture. The design of this system presented key challenges, first of which involved the design process. To effectively predict how this complex mechatronic system would perform, a series of dynamical models with increasing accuracy were employed. These models allowed simulation of the system's behavior at different design stages, identifying potential weaknesses early on before physical construction, ultimately leading to a design that fully satisfies the requirements. The second challenge stems from control requirements, specifically the need to stabilize samples with masses from 1 to 50 kg, which required the development of specialized robust control architectures. Finally, the developed Nano Active Stabilization System underwent thorough experimental validation on the ID31 beamline, validating both its performance and the underlying concept.
About This Repository & Reproducible Research
The foundation of this PhD thesis is built upon the principles of reproducible research. Reproducible research is the practice of ensuring that the results of a study can be independently verified by others using the original data, code, and documentation.
This approach was adopted to increase transparency and trust in the presented research findings. Furthermore, it is anticipated that the methods and data shared will facilitate knowledge transfer and reuse within the scientific community, thereby reducing research redundancy and increasing overall efficiency. It is hoped that some aspects of this work may be reused by the synchrotron community.
The fundamental objective has been to ensure that anyone should be capable of reproducing precisely the same results and figures as presented in this manuscript. To achieve this goal of reproducibility, comprehensive sharing of all elements has been implemented. This includes the mathematical models developed, raw experimental data collected, and scripts used to generate the figures.
For those wishing to engage with the reproducible aspects of this work, all data and code are freely accessible in this Git repository. The organization of the code mirrors that of the manuscript, with corresponding chapters and sections. All materials have been made available under the MIT License, permitting free reuse.
This repository includes:
- Raw and/or processed data used in the analyses.
- MATLAB scripts and functions for data processing, simulations, and figure generation.
- Simulink/Simscape models developed or used during the research.
- A digital copy of the final PhD thesis document.
Repository Structure
The repository is organized as follows:
.
├── A1-nass-uniaxial-model \# Every Section in the PhD thesis has its own direction
├── A2-nass-rotating-3dof-model
├── A3-micro-station-modal-analysis
├── A4-simscape-micro-station \# The directory for each section is structure as follows:
│ ├── mat \# - All raw data
│ ├── src \# - All Matlab functions, automatically added to the path
│ ├── STEPS \# - .step files used for the multi-body (Simscape) model
│ ├── subsystems \# - subsystems used in the multi-body (Simscape) model
│ ├── ustation_1_kinematics.m \# - The Matlab scripts corresponding to the different sections
│ ├── ustation_2_modeling.m
│ ├── ustation_3_disturbances.m
│ ├── ustation_4_experiments.m
│ └── ustation_simscape.slx \# - The Simscape model used in this particular section
├── A5-simscape-nano-hexapod
├── A6-simscape-nass
├── B1-nass-geometry
├── B2-nass-fem
├── B3-control
├── B4-nass-instrumentation
├── C1-test-bench-apa
├── C2-test-bench-flexible-joints
├── C3-test-bench-struts
├── C4-test-bench-nano-hexapod
├── C5-test-bench-id31
├── init.m \# Optional: Some Matlab configuration to have same figure display
├── LICENSE \# MIT License is used for all the code in this repository
└── README.md \# The present file
Requirements
To run the code and reproduce the results in this repository, you will need the following software environment:
Operating System:
- Tested on:
- Microsoft Windows
- Linux
- Should be compatible with other versions of Windows, macOS, and Linux supporting MATLAB R2022a.
Software:
- MATLAB Version: 9.12 (R2022a) Update 8 or later compatible version.
- Required MATLAB Toolboxes:
- Simulink: Version 10.5 (R2022a)
- Control System Toolbox: Version 10.11.1 (R2022a)
- Curve Fitting Toolbox: Version 3.7 (R2022a)
- Optimization Toolbox: Version 9.3 (R2022a)
- Robust Control Toolbox: Version 6.11.1 (R2022a)
- Signal Processing Toolbox: Version 9.0 (R2022a)
- Simscape: Version 5.3 (R2022a)
- Simscape Multibody: Version 7.5 (R2022a)
- Simulink Control Design: Version 6.1 (R2022a)
- Symbolic Math Toolbox: Version 9.1 (R2022a)
- System Identification Toolbox: Version 9.16 (R2022a)
Instructions for Reproduction
- Clone the repository:
git clone [https://docs.github.com/en/repositories/creating-and-managing-repositories/about-repositories](https://docs.github.com/en/repositories/creating-and-managing-repositories/about-repositories) cd [repository folder name]
- Set up MATLAB Environment:
- Ensure MATLAB R2022a and all required toolboxes listed above are installed.
- Open MATLAB.
- Navigate to the root directory of the cloned repository within MATLAB.
- Add the repository's folders to the MATLAB path. You can often do this by running the following command in the MATLAB console:
(Note: Check if you need a more specific path setup script)addpath(genpath(pwd));
- Run the Code:
- [Provide specific instructions here. For example:]
- "To reproduce all figures and results, run the main script:
main_script.m
" - "Alternatively, run scripts in the following order:"
scripts/processing/preprocess_data.m
scripts/simulations/run_model_simulation.m
scripts/analysis/analyze_results.m
scripts/plotting/generate_all_figures.m
- "To reproduce all figures and results, run the main script:
- Specify where the outputs (figures, tables, data files) will be saved (e.g., in the
results/
directory). - Mention expected run times if some scripts are computationally intensive.
- [Provide specific instructions here. For example:]
Citation
If you use the code, data, or findings from this repository or the associated thesis, please cite:
Thesis:
- [Your Name] ([Year]). [Your Thesis Title Here]. PhD Thesis, [Your University Name]. [Link to university library record or official source if available]
Software/Data Repository (Zenodo):
- [Your Name] ([Year]). [Repository Title, e.g., Code and Data for PhD Thesis: Your Thesis Title Here]. Zenodo. https://doi.org/10.5281/zenodo.XXXXXXX (<- Replace with your DOI)
@phdthesis{YourLastNameYEARphd,
author = {[Your Name]},
title = {[Your Thesis Title Here]},
school = {[Your University Name]},
year = {[Year]},
address = {[City, Country]},
url = {[Link to thesis, optional]}
}
@software{[YourLastNameYEARzenodo],
author = {[Your Name]},
title = {[Repository Title, e.g., Code and Data for PhD Thesis: Your Thesis Title Here]},
month = {[Month of Zenodo publication]},
year = {[Year of Zenodo publication]},
publisher = {Zenodo},
version = {[Version/tag used for Zenodo archive, e.g., v1.0.0]},
doi = {10.5281/zenodo.XXXXXXX},
url = {[https://doi.org/10.5281/zenodo.XXXXXXX](https://doi.org/10.5281/zenodo.XXXXXXX)}
}
(Note: Fill in the BibTeX details and update the DOI)
License
The code and associated files in this repository are licensed under the MIT License. See the LICENSE file for details.
Copyright (c) 2025 Thomas Dehaeze
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Contact
For questions about the code, data, or thesis, please contact [Your Name] at [Your Email Address].