diff --git a/README.md b/README.md index e69de29..4d75902 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,196 @@ +# 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 + +1. **Clone the repository:** + ```bash + 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] + ``` +2. **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: + ```matlab + addpath(genpath(pwd)); + ``` + *(Note: Check if you need a more specific path setup script)* +3. **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` + * 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. + +## 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](https://doi.org/10.5281/zenodo.XXXXXXX) *(<- Replace with your DOI)* + +```bibtex +@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](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].