{"id":13470537,"url":"https://github.com/lge-ros2/cloisim","last_synced_at":"2026-06-09T17:00:51.856Z","repository":{"id":39259437,"uuid":"245325596","full_name":"lge-ros2/cloisim","owner":"lge-ros2","description":"Unity3D based multi-robot simulator can bring-up simulation environment by SDFormat (Simulation Description Format) easily. And it supports to connect ROS2 through cloisim_ros.","archived":false,"fork":false,"pushed_at":"2026-06-08T01:50:35.000Z","size":169254,"stargazers_count":174,"open_issues_count":1,"forks_count":23,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-06-08T03:22:06.188Z","etag":null,"topics":["3d-simulation","cloisim","cloisim-ros","csharp","gazebo","multi-robot-simulator","protobuf","robot","robot-simulation","robot-simulator","robotics","robotics-simulation","ros","ros2","sdf","sdfparser","sensor-models","simulation","unity","unity-3d"],"latest_commit_sha":null,"homepage":"https://github.com/lge-ros2/cloisim/wiki","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lge-ros2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["hyunseok-yang"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-03-06T03:57:04.000Z","updated_at":"2026-06-04T16:09:13.000Z","dependencies_parsed_at":"2023-02-14T14:15:46.326Z","dependency_job_id":"5d706cb9-6a39-4fb6-a4b6-d80387cd04c9","html_url":"https://github.com/lge-ros2/cloisim","commit_stats":null,"previous_names":[],"tags_count":154,"template":false,"template_full_name":null,"purl":"pkg:github/lge-ros2/cloisim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lge-ros2%2Fcloisim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lge-ros2%2Fcloisim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lge-ros2%2Fcloisim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lge-ros2%2Fcloisim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lge-ros2","download_url":"https://codeload.github.com/lge-ros2/cloisim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lge-ros2%2Fcloisim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34116461,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-simulation","cloisim","cloisim-ros","csharp","gazebo","multi-robot-simulator","protobuf","robot","robot-simulation","robot-simulator","robotics","robotics-simulation","ros","ros2","sdf","sdfparser","sensor-models","simulation","unity","unity-3d"],"created_at":"2024-07-31T16:00:31.759Z","updated_at":"2026-06-09T17:00:51.845Z","avatar_url":"https://github.com/lge-ros2.png","language":"C#","funding_links":["https://github.com/sponsors/hyunseok-yang"],"categories":["C# #"],"sub_categories":[],"readme":"# CLOiSim: Multi-Robot Simulator\n\n[![Unity](https://img.shields.io/badge/Unity-6-black.svg?style=flat\u0026logo=unity)](https://unity.com/)\n[![ROS 2 Humble](https://img.shields.io/badge/ROS%202-Humble-blue.svg?style=flat\u0026logo=ros)](https://docs.ros.org/en/humble/)\n[![ROS 2 Jazzy](https://img.shields.io/badge/ROS%202-Jazzy-green.svg?style=flat\u0026logo=ros)](https://docs.ros.org/en/jazzy/)\n[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Release](https://img.shields.io/github/v/release/lge-ros2/cloisim)](https://github.com/lge-ros2/cloisim/releases)\n\nCLOiSim is a high-performance multi-robot simulator based on **Unity 6**. It dynamically builds simulated 3D environments and robots directly from [SDFormat (SDF)](http://sdformat.org/) description files.\n\n![multi-type-of-robots](https://github.com/lge-ros2/cloisim/assets/21001946/499fc995-0a29-454b-902f-3df77d00c7de)\n\n## 🚀 Overview\n\nCLOiSim was developed to address performance bottlenecks encountered with other simulators when loading multiple robots with complex sensor suites. By leveraging Unity's efficient rendering and physics pipelines, CLOiSim provides a scalable solution for large-scale robot simulation.\n\n### Key Components\n- **SDF Parser**: Utilizes [sdformat-sharp](https://github.com/lge-ros2/sdformat-sharp) as a Unity package for robust and comprehensive SDF 1.6+ specification parsing.\n- **Unity Implementer**: Automated mapping of SDF elements to Unity's Visual, Collision, and Physics (ArticulationBody) components.\n- **Transport Layer**: High-performance sensor data and control signal transport via ZeroMQ (NetMQ).\n- **Web Service**: JSON-based simulation control and monitoring through a web interface.\n\n![cloisim_multirobot](https://user-images.githubusercontent.com/21001946/107105748-3a124f80-686b-11eb-8ac8-74377696e641.gif)\n*[Full Video Demo](https://user-images.githubusercontent.com/21001946/104274159-96d84f80-54e3-11eb-9975-9d4bbbbdd586.mp4)*\n\n---\n\n## 📢 Notices\n\n\u003e [!IMPORTANT]\n\u003e CLOiSim has been upgraded to **Unity 6** (6000.4.0f1). Legacy versions based on Unity 2022.3 LTS are no longer maintained.\n\n### Version History\n| Branch | CLOiSim Version | Unity Version | Status |\n| :--- | :--- | :--- | :--- |\n| `main` | **5.x.x (Latest)** | **Unity 6** | Active |\n| `release-4.14.6` | 4.x.x | Unity 2022.3 LTS | Maintenance |\n| `release-3.2.0` | 3.x.x | Unity 2021 | Legacy |\n| `release-2.7.7` | 2.x.x | Unity 2020 | Legacy |\n\n---\n\n## ✨ Features\n\n### 🛠 Sensors \u0026 Actuators\n| Category | Feature | Status | Notes |\n| :--- | :--- | :---: | :--- |\n| **Joints** | Joint Control / Pose | ✅ | ArticulationBody based |\n| **LiDAR** | 2D / 3D (Raster-based) | ✅ | Pattern-based (e.g., Livox) supported |\n| **Camera** | Color / Depth / Multi | ✅ | Semantic Segmentation, RealSense |\n| **Inertial** | IMU / GPS | ✅ | Gaussian noise models included |\n| **Other** | Sonar / IR / Contact | ✅ | |\n| **Noise** | Gaussian / Custom | 🚧 | Gaussian fully supported |\n\n### 🌍 World \u0026 Physics\n- **Physics Engine**: NVIDIA PhysX with **Temporal Gauss Seidel (TGS)** solver for enhanced stability.\n- **World Elements**: Actors (animated characters), Lights, Heightmaps (DEM), Roads.\n- **Coordinates**: Support for Spherical Coordinates.\n- **Rendering**: URP-based high-quality visuals with specialized shaders for sensors.\n\n![cloisim_lidar_ros](https://user-images.githubusercontent.com/21001946/107105540-42b65600-686a-11eb-8797-7d937b108c11.gif)\n\n---\n\n## 🔌 Plugin System\n\nCLOiSim uses a flexible plugin architecture to extend robot and world functionalities via SDF `\u003cplugin\u003e` tags. Plugin names are case-sensitive and should be specified in the `filename` attribute (e.g., `\u003cplugin name=\"actor_plugin\" filename=\"libActorPlugin.so\" /\u003e`).\n\n### Model Plugins\n- `LaserPlugin`: Publishes 2D or 3D LiDAR data.\n- `CameraPlugin`: Publishes 2D color or depth image data.\n- `SegmentationCameraPlugin`: Publishes semantic segmentation images and label info.\n- `MultiCameraPlugin`: Publishes data from multiple color cameras.\n- `RealSensePlugin`: Handles IR1, IR2, depth, and color data for RealSense sensors.\n- `MicomPlugin`: Controls differential drive (2/4-wheeled) and self-balancing robots.\n- `JointControlPlugin`: Controls joints and publishes joint status.\n- `GpsPlugin`: Provides GPS position data in the world.\n- `ImuPlugin`: Publishes IMU sensor data.\n- `SonarPlugin` / `IRPlugin`: Publishes range data from Sonar or IR sensors.\n- `LogicalCameraPlugin`: Publishes object detection and info within the camera view.\n- `ContactPlugin`: Publishes contact sensor data.\n- `ActorPlugin`: Adds character control functionality using Unity AI components.\n- `ParticleSystemPlugin`: Enables Unity's particle systems.\n- `ClothPlugin` / `ClothGrabberPlugin`: Handles cloth simulation and fingertip grabbers.\n\n### World Plugins\n- `ElevatorSystemPlugin`: Controls lifting and calling logic for elevator systems.\n- `GroundTruthPlugin`: Retrieves precise information (position, size, velocity) for all objects.\n- `ActorControlPlugin`: Centrally controls actors that have the `ActorPlugin` attached.\n- `MowingPlugin`: Handles grass and mowing simulation.\n\n---\n\n## 🏁 Getting Started\n\n### Prerequisites\n- **OS**: Ubuntu 22.04+ (Recommended) or Windows 10+\n- **Graphics**: Vulkan-capable GPU (NVIDIA RTX 20-series recommended)\n- **Unity**: Unity Editor 6000.4.10f1 (if building from source)\n\n### Installation\n1. **Release Binary**: [Download the latest Linux version](https://github.com/lge-ros2/cloisim/releases).\n2. **From Source**: Refer to the [Build Guide](https://github.com/lge-ros2/cloisim/wiki/Build-Guide) for detailed instructions.\n\n---\n\n## 📖 Usage\n\n### 1. Environment Setup\nSet the paths to your resources (models, worlds, media):\n```bash\nexport CLOISIM_FILES_PATH=\"/path/to/sample_resources/media\"\nexport CLOISIM_MODEL_PATH=\"/path/to/sample_resources/models\"\nexport CLOISIM_WORLD_PATH=\"/path/to/sample_resources/worlds\"\n```\n\n### 2. Running the Simulator\n```bash\n# Standard mode\n./run.sh cloisim.world\n\n# Headless mode (Linux only)\n./run.sh --headless --world cloisim.world\n```\n\n### 3. ROS 2 Integration\n To bridge simulation data to ROS 2, use the [cloisim_ros](https://github.com/lge-ros2/cloisim_ros) package:\n- Supports **ROS 2 Humble \u0026 Jazzy**.\n- Launch the bringup node to start publishing sensor topics.\n\n### 4. Running EditMode Unit Tests\nSee [scripts/README.md](scripts/README.md) for detailed EditMode test runner usage and configuration.\n\n---\n\n## 🛠 Advanced Features\n\n### External UI \u0026 Control\nCLOiSim provides a WebSocket interface for runtime interaction:\n- **Path**: `ws://127.0.0.1:8080/{service-name}`\n- **Capabilities**: Marker placement (lines, boxes, text), simulation reset, and more.\n- [Detailed Guide](https://github.com/lge-ros2/cloisim/wiki/Usage#control-service)\n\n![cloisim_nav2_ros2](https://user-images.githubusercontent.com/21001946/107105530-37fbc100-686a-11eb-9ff8-f3cf45012d9b.gif)\n\n---\n\n## 🗺 Roadmap\n- [ ] Full SDF specification compatibility.\n- [ ] Programmable C++ plugin interface.\n- [ ] Advanced sensor performance optimizations.\n- [ ] Enhanced graphical fidelity and material support.\n\n## 🤝 Support\nIf you encounter any issues or have feature requests, please open an [Issue](https://github.com/lge-ros2/cloisim/issues).\n\n---\n감사합니다. Thank you!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flge-ros2%2Fcloisim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flge-ros2%2Fcloisim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flge-ros2%2Fcloisim/lists"}