{"id":21770710,"url":"https://github.com/intelligent-systems-lab-org/simunex","last_synced_at":"2025-04-13T16:41:01.060Z","repository":{"id":207841775,"uuid":"700943974","full_name":"intelligent-systems-lab-org/SimuNEX","owner":"intelligent-systems-lab-org","description":"A high-fidelity dynamic simulation framework.","archived":false,"fork":false,"pushed_at":"2024-10-19T13:27:34.000Z","size":59379,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T13:41:00.876Z","etag":null,"topics":["3d-visualization","control-systems","dynamic-simulation","robotics-simulation"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intelligent-systems-lab-org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-10-05T15:42:15.000Z","updated_at":"2024-08-20T20:24:33.000Z","dependencies_parsed_at":"2024-03-16T17:13:00.360Z","dependency_job_id":"c0bc3cb2-2232-482e-adc2-15d50f0b8243","html_url":"https://github.com/intelligent-systems-lab-org/SimuNEX","commit_stats":{"total_commits":247,"total_committers":3,"mean_commits":82.33333333333333,"dds":0.06477732793522262,"last_synced_commit":"5834744bfaed60b3f82ae57c0ee76d0fd46dfcd2"},"previous_names":["intelligent-systems-lab-org/simunex"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intelligent-systems-lab-org%2FSimuNEX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intelligent-systems-lab-org%2FSimuNEX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intelligent-systems-lab-org%2FSimuNEX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intelligent-systems-lab-org%2FSimuNEX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intelligent-systems-lab-org","download_url":"https://codeload.github.com/intelligent-systems-lab-org/SimuNEX/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248746934,"owners_count":21155352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-visualization","control-systems","dynamic-simulation","robotics-simulation"],"created_at":"2024-11-26T14:13:30.573Z","updated_at":"2025-04-13T16:41:01.039Z","avatar_url":"https://github.com/intelligent-systems-lab-org.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg class=\"only-dark\" width=\"100%\" src=\"https://raw.githubusercontent.com/intelligent-systems-lab-org/simunex.github.io/main/img/logo-dark.png?raw=true#gh-dark-mode-only\"/\u003e\n\n\u003cimg class=\"only-light\" width=\"100%\" src=\"https://raw.githubusercontent.com/intelligent-systems-lab-org/simunex.github.io/main/img/logo.png?raw=true#gh-light-mode-only\"/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://unity.com/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Unity-2022.3.10f1-blue.svg?logo=unity\u0026style=for-the-badge\" alt=\"Unity version\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/github/repo-size/intelligent-systems-lab-org/SimuNEX?style=for-the-badge\u0026color=green\u0026logo=github\" alt=\"Repo size\"\u003e\n  \u003ca href=\"https://github.com/intelligent-systems-lab-org/SimuNEX/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/intelligent-systems-lab-org/SimuNEX?style=for-the-badge\u0026logo=github\" alt=\"GitHub issues\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/intelligent-systems-lab-org/SimuNEX/development?style=for-the-badge\u0026logo=github\"\n  alt=\"GitHub last development commit\"\u003e\n\u003c/p\u003e\n\n-----\n\n\u003cp align = \"center\"\u003e\n\u003cb\u003eA modular high-fidelity dynamic simulation framework \u003c/b\u003e\n\u003ci\u003ethat runs on top of Unity.\u003c/i\u003e\n\u003c/p\u003e\n\n-----\n\n# SimuNEX\nSimuNEX is a high-fidelity dynamic simulation framework designed as a modular platform to simulate dynamic systems across various domains. It serves as a powerful tool for researchers, engineering students, and members of the Intelligent Systems Lab, offering a versatile environment for simulating complex systems and phenomena.\n\n## Getting Started\n1. **Install Unity**: The project is currently developed in [Unity](https://unity.com/) 2022.3.10f1 but it may be compatible with other versions.\n2. **Clone Repository**: Use your preferred Git client to clone the repository from its GitHub page.\n3. **Open in Unity Editor**: This is done by adding the `\\UnityProject` folder in the Unity Editor. You're now all set to start building and simulating dynamic systems!\n\nFor any additional details, configurations, or advanced setups, refer to the [documentation](#documentation).\n\n# Features \nSimuNEX is in its early stages of development and is only usable through the Unity Editor, offering interfaces for building dynamic systems similar to an API. Currently, the following features are available:\n\n- Simulation of single rigid body systems including quadcopters and AUVs (autonomous underwater vehicles).\n- Reactive and event-driven simulation - constructed objects can have their properties modified and the changes occur immediately during simulation.\n- Environment-based force system where forces are automatically applied to systems within a boundary and removed when exiting the boundary.\n- A generic interface that can be used to incorporate different actuators, sensors, loads, and communication components into the system.\n- Functional interfaces have been established for actuators such as motors and loads like propellers.\n- Automated detection of actuators and sensors with supervisory systems.\n- Fault injection for actuators and sensors, including a user-friendly menus for adding and removing faults.\n- Support for ROS 2 integration ensures compatibility with current robotics systems.\n- Interfaces have also been created for modeling state-space systems, which are widely employed in control theory.\n- Various integrating techniques including Euler, Heun, and RK4 steppers are implemented for accurate simulation of dynamical systems.\n- A high performance matrix library built on top of eigen3 is incorporated to handle different state-spaces and functionals within the system efficiently.\n\nFor upcoming plans and features, please check out the ongoing [projects](https://github.com/intelligent-systems-lab-org/SimuNEX/projects).\n\n## Model Examples\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"https://raw.githubusercontent.com/intelligent-systems-lab-org/simunex.github.io/main/img/examples/QuadcopterUnity.PNG\" width=\"300\" /\u003e\n      \u003cbr /\u003e\n      \u003ci\u003eQuadcopter\u003c/i\u003e\n      \u003cbr /\u003e\n      \u003cbr /\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"https://raw.githubusercontent.com/intelligent-systems-lab-org/simunex.github.io/main/img/examples/AUVUnity.PNG\" width=\"300\" /\u003e\n      \u003cbr /\u003e\n      \u003ci\u003eAUV\u003c/i\u003e\n      \u003cbr /\u003e\n      \u003cbr /\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"https://raw.githubusercontent.com/intelligent-systems-lab-org/simunex.github.io/main/img/examples/RoverUnity.PNG\" width=\"300\" /\u003e\n      \u003cbr /\u003e\n      \u003ci\u003eMars Rover\u003c/i\u003e\n      \u003cbr /\u003e\n      3D Model by \u003ca href=\"https://mars.nasa.gov/resources/25042/\"\u003eNASA.\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"https://raw.githubusercontent.com/intelligent-systems-lab-org/simunex.github.io/main/img/examples/QuadrupedUnity.png\" width=\"300\" /\u003e\n      \u003cbr /\u003e\n      \u003ci\u003eQuadruped Robot\u003c/i\u003e\n      \u003cbr /\u003e\n      \u003cbr /\u003e\n      \u003cbr /\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"https://raw.githubusercontent.com/intelligent-systems-lab-org/simunex.github.io/main/img/examples/RocketUnity.PNG\" width=\"300\" /\u003e\n      \u003cbr /\u003e\n      \u003ci\u003eMulti-stage Rocket\u003c/i\u003e\n      \u003cbr /\u003e\n      3D Model by \u003ca href=\"https://sketchfab.com/3d-models/falcon-9-spacex-394f7cf52d124bbd9db69f24d1ff2f08\"\u003eStanley Creative.\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003c/td\u003e \u003c!-- Empty space --\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n# Documentation\nOur project documentation is hosted on **Render** and is structured as follows:\n\n- **User Documentation**: Accessible from the root URL [https://simunex-web.onrender.com](https://simunex-web.onrender.com). This section contains guides, tutorials, and general information about the project.\n- **Developer Documentation**: Accessible at [https://simunex-web.onrender.com/dev/](https://simunex-web.onrender.com/dev/). This section, generated by Doxygen, includes detailed API documentation and is intended for developers working with or contributing to the project.\n\n### Hosting Documentation Locally\n\nTo host the documentation locally, you'll need **Docker** installed on your system as it provides an isolated environment with all necessary dependencies. The documentation can be hosted using helper scripts included in the repository. Here's how to do it:\n\n1. **Install Docker**: Ensure Docker is installed on your system. Visit the [Docker Installation Guide](https://docs.docker.com/get-docker/) for instructions.\n\n2. **Clone the Repository**: If you haven't already, clone the repository to your local machine:\n   ```sh\n   git clone https://github.com/intelligent-systems-lab-org/SimuNEX.git\n   cd SimuNEX\n   ```\n\n3. **Run the Build Script**: Use the `build_docs.sh` script (or `build_docs.bat` on Windows) to build the Docker image and optionally run the container. This script updates the documentation version using the version specified in `package.json`, builds the Docker image that contains Sphinx and Doxygen documentation, and optionally runs the container locally.\nTo build the Docker image and run the container (making the documentation available on `localhost`):\n  ```sh\n  ./build_docs.sh --host\n  ```\n\n4. **Accessing Documentation Locally**: Once the container is running, you can access the user documentation at [http://localhost](http://localhost) and the developer documentation at [http://localhost/dev/](http://localhost/dev/).\n\n### Notes\n\n- The `build_docs.sh` script automates the process of setting up and serving the documentation locally. It requires Docker to be installed because it builds the documentation inside Docker containers to ensure a consistent environment.\n- Running the script with the `--host` flag will start the Docker containers and serve the documentation on your local machine. Without the flag, it will only update the versions in the `Doxyfile` and sphinx's `conf.py` specified from the `package.json` file.\n\n## Plugins\n| Name          | Version | Supported OS | Purpose | URL |\n|---------------|---------|--------------|---------|--------------------------|\n| ROS2ForUnity  | 1.1.0   | Windows, Linux | Communication using ROS 2[^1]  | [link](https://github.com/RobotecAI/ros2-for-unity) |\n| Eigen         | 3.4.0   | Windows[^2] | For matrix operations      | [link](https://gitlab.com/libeigen/eigen)           |\n| ErrorProne.NET.CoreAnalyzers        | 0.1.2 | Windows | For code analysis and Roslyn support[^3] | [link](https://www.nuget.org/packages/ErrorProne.NET.CoreAnalyzers/) |\n| NSubstitute (**experimental**)   | 5.1.0   | Windows, Linux | For mock testing | [link](https://www.nuget.org/packages/NSubstitute) |\n\n[^1]: Currently on Foxy installations only.\n\n[^2]: Custom C# bindings that only currently support Windows. Separately maintained in another repository. See [here](https://github.com/intelligent-systems-lab-org/eigen).\n\n[^3]: Functions with Visual Studio 2022.\n\n### ROS on Windows\n ROS 2 was tested on Windows, the ROSOnWindows binary was installed, which can be found [here](https://ms-iot.github.io/ROSOnWindows/GettingStarted/SetupRos2.html). This binary is provided by Microsoft's IoT team and is designed to simplify the installation process for ROS 2 on Windows. Credit should be given to the ms-iot team for their work on the binary, and their repository can be found [here](https://github.com/ms-iot/rosonwindows/).\n\n# License\nSimuNEX© 2022-2023 by [Lee Bissessar](https://github.com/leebissessar5), [Intelligent Systems Lab (ISL)](https://intelsyslab.com/) is licensed under the SimuNEX License.\n\nUnder this license, users may utilize the software for personal or educational purposes and are granted permission to modify and redistribute the software freely, subject to certain conditions outlined in the full license. These conditions include restrictions against commercial and military use, requirements for attribution, and guidelines for redistribution of altered versions.\n\nPlease note that the SimuNEX License supersedes the previous CC-BY-NC-SA-4 International License. For a detailed overview of the terms and conditions, please refer to the [LICENSE](https://github.com/intelligent-systems-lab-org/simunex.github.io/blob/main/LICENSE.md) file.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintelligent-systems-lab-org%2Fsimunex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintelligent-systems-lab-org%2Fsimunex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintelligent-systems-lab-org%2Fsimunex/lists"}