A large high-precision 3-axis gantry robot system using LinuxCNC, integrated with Mesa Electronics interface cards and igus® dryve D1 motor controllers.
The system was developed from our LinuxCNC motor control testbed, which ensured the main components of the system were able to work reliably.
The repository includes a custom calibration solution that leverages an existing OptiTrack motion capture system in the installation room to measure and compensate for errors in the gantry movement. Using this solution the gantry robot can achieve sub-centimeter precision across the entire work envelope.
- 3-Axis Control: X, Y, Z linear axes.
- Large Work Envelope: 5.3m (X) × 5.2m (Y) × 1m (Z) working volume.
- Real-time Coordination: Precise real-time motion using LinuxCNC with MESA interface cards and igus® dryve D1 motor controllers.
- Closed Loop Control: High-precision encoder feedback for accurate positioning using closed loop control.
- Visual Status Indicators: Custom LED status indicators.
- Positioning calibration: Software to analyze OptiTrack measurements and custom LinuxCNC kinematics module for compensation of positioning errors.
- Heavy Duty: Built with igus® self-lubricating linear units enabling lifelong operation of the moving parts without external lubrication.
The following documentation is provided in this repository:
-
Technical Documentation: Sphinx documentation sources of the system documentation in docs/. The documentation has been prepared to be built in HTML and PDF formats. To build the documentation follow the instructions below:
-
Prepare the environment:
cd docs uv venv && uv sync && source .venv/bin/activate
-
Build the documentation:
-
HTML:
make htmlThe HTML documentation index file will be saved in
docs/build/html/index.html. -
PDF (requires a LaTeX installation with LuaLaTeX):
make latexpdfThe PDF file will be saved in
docs/build/latex/linuxcnc_gantry_robot.pdf.
-
-
-
Electrical Installation: KiCAD electrical schematics in electrical_installation/schematics/.
The gantry robot can be calibrated to compensate for positioning errors using an existing OptiTrack motion capture system in the installation room. For this, the repository provides the following software:
- Custom
calibxyzkinsLinuxCNC Kinematics Module in linuxcnc/components/linuxcnc_calibrated_xyz_kins/: compensates for the positioning errors in real-time - Calibration Analysis Software in calibration/: Python scripts for processing the OptiTrack data and generating the calibration parameters
| Component | Model | Quantity | Function |
|---|---|---|---|
| Control Computer | PC running LinuxCNC | 1 | Real-time motor coordination |
| Motor Controllers | igus® dryve D1 | 4 | Individual motor control |
| Main Interface | MESA 7I96S | 1 | Ethernet-LinuxCNC bridge and stepper motor control |
| I/O Expansion | MESA 7I77 | 1 | Analog control for brushless motors and I/O signals |
| X-Axis Motor | igus® MOT-EC-86-C-I-A | 2 | NEMA 34 brushless with 1000 PPR encoder |
| Y-Axis Motor | igus® MOT-EC-86-C-I-A | 1 | NEMA 34 brushless with 1000 PPR encoder |
| Z-Axis Motor | igus® MOT-AN-S-060-035-060-M-C-AAAC | 1 | NEMA 24 stepper with 500 PPR encoder |
| Emergency Stop | Push-button with NO/NC contacts | 1 | System safety shutdown |
| Limit Switches | igus® proximity switch | 4 | Position boundary detection |
| 48V Power Supply | MEAN WELL SDR-960-48 | 3 | Brushles motors power |
| 24V Power Supply | MEAN WELL SDR-240-24 | 1 | Stepper motor power |
| 24V Power Supply | Generic power supply | 1 | igus® Drive D1 logic and MESA 7I77 field power |
| 5V Power Supply | MEAN WELL MDR-20-5 | 1 | MESA 7I77 field I/O logic power |
gantry-robot/
├── README.md # This file
├── assets/ # Pictures and videos
├── docs/ # Technical documentation
├── igus-dryve/ # igus® dryve D1 configuration files
├── linuxcnc/ # LinuxCNC configuration files
│ ├── configs/ # Machine configurations
│ └── components/ # Custom LinuxCNC components
├── calibration/ # Calibration code and measurements
│ ├── src/ # Python analysis and calibration tools
│ └── measurements/ # Gantry robot and OptiTrack measurements
└── electrical_installation/ # Electrical documentation
├── schematics/ # KiCAD electrical diagrams
└── photos/ # Electrical installation photosThis project contains multiple components with different licenses.
LinuxCNC Gantry Robot System © 2025 by Tomás Domínguez Bolaño, Valentín Barral Vales, Carlos José Escudero Cascón, and José Antonio García Naya (CITIC Research Center, University of A Coruña, Spain) is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). To view a copy of this license, see the LICENSE file or visit https://creativecommons.org/licenses/by-sa/4.0/.
Documentation License (docs/)
Copyright © 2000-2022 LinuxCNC.org
Copyright © 2025 Tomás Domínguez Bolaño, Valentín Barral Vales, Carlos José Escudero Cascón, and José Antonio García Naya.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
- LinuxCNC Components (
linuxcnc/components/): GPL v2 or later - Calibration Source Code (
calibration/src/): MIT License
This work has been supported by grant PID2022-137099NB-C42 (MADDIE) and by project TED2021-130240B-I00 (IVRY) funded by MCIN/AEI/10.13039/501100011033 and the European Union NextGenerationEU/PRTR.
