This repository implements the Virtual Confinement Zone (VCZ) framework, as described in the research paper: "Scalable and Approximation-free Symbolic Control for Unknown Euler-Lagrange Systems".
The project builds upon the foundational SCOTS Toolbox (Symbolic Control of Transition Systems) to provide robust control strategies for Euler-Lagrange systems with unknown dynamics.
Traditional symbolic control requires precise models or conservative approximations. The VCZ approach enables:
- Scalable Synthesis: Efficiently handles complex systems by confining them within parameterized zones.
- Model-Free Guarantee: Provides safety and reachability even when system dynamics are unknown.
- Integrated Workflow: Combines C++ for high-performance controller synthesis with MATLAB for simulation and visualization.
- A C++11 compliant compiler (Clang recommended).
- MATLAB (for post-processing and simulation).
- CUDD Library (Colorado University Decision Diagram).
- Clone the Repository:
git clone https://github.com/FocasLab/Virtual-Confinement-Zone.git cd Virtual-Confinement-Zone - Install CUDD: Follow the instructions in INSTALL_CUDD.md to build the library locally.
For a quick setup without manual C++ dependency management:
- Build/Run: Refer to DOCKER_INSTRUCTIONS.md for commands to build the image and run containers with volume mounting.
- Inside Container: Use the same synthesis steps as described in the Manipulator workflows.
- Visualization: All outputs are synced to your local machine for use in MATLAB.
./examples/: Contains benchmark implementations:one_arm: Single-arm manipulator using SCOTS + MATLAB.two_arm: Two-arm manipulator (2R) using SCOTS + MATLAB.MultiAgent: Multi-agent system implemented entirely in MATLAB.
./doc/: Doxygen-generated C++ documentation../mfiles/: Core MATLAB functions for symbolic control and VCZ visualization../src/: Underlying SCOTS header-only library.
These examples use the SCOTS toolbox for controller synthesis.
- Build: Navigate to
examples/one_arm(ortwo_arm) and runmake. - Synthesize: Execute
./one_arm_scots(or./two_arm_scots) to generatecontroller.scs. - Export: Open MATLAB,
cdto the example folder, and runto_csv.mto convert the controller to csv format. - Simulate: Run the main manipulator script (e.g.,
One_arm_manipulator.m) to simulate and visualize the results.
This example is handled directly within MATLAB.
- Synthesize: Run
VCZ.mto compute the VCZ center trajectory and saveposes.csv. - Control: Run
VCZ_control2.mto track the simulated trajectory.
If you use this work in your research, please cite:
@misc{das2025scalableapproximationfreesymboliccontrol,
title={Scalable and Approximation-free Symbolic Control for Unknown Euler-Lagrange Systems},
author={Ratnangshu Das and Shubham Sawarkar and Pushpak Jagtap},
year={2025},
eprint={2509.19859},
archivePrefix={arXiv},
primaryClass={eess.SY},
url={https://arxiv.org/abs/2509.19859},
}
@inproceedings{rungger2016scots,
author={Rungger, Matthias and Zamani, Majid},
title={SCOTS: A Tool for the Synthesis of Symbolic Controllers},
booktitle={Proceedings of the 19th International Conference on Hybrid Systems: Computation and Control (HSCC)},
year={2016},
doi={10.1145/2883817.2883834}
}We acknowledge Matthias Rungger for the original SCOTS toolbox. This branch extends the toolbox to support VCZ-based control for Euler-Lagrange systems.