https://github.com/lge-ros2/cloisim
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.
https://github.com/lge-ros2/cloisim
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
Last synced: 3 days ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/lge-ros2/cloisim
- Owner: lge-ros2
- License: mit
- Created: 2020-03-06T03:57:04.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2026-06-08T01:50:35.000Z (4 days ago)
- Last Synced: 2026-06-08T03:22:06.188Z (4 days ago)
- 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
- Language: C#
- Homepage: https://github.com/lge-ros2/cloisim/wiki
- Size: 161 MB
- Stars: 174
- Watchers: 9
- Forks: 23
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# CLOiSim: Multi-Robot Simulator
[](https://unity.com/)
[](https://docs.ros.org/en/humble/)
[](https://docs.ros.org/en/jazzy/)
[](LICENSE)
[](https://github.com/lge-ros2/cloisim/releases)
CLOiSim 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.

## 🚀 Overview
CLOiSim 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.
### Key Components
- **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.
- **Unity Implementer**: Automated mapping of SDF elements to Unity's Visual, Collision, and Physics (ArticulationBody) components.
- **Transport Layer**: High-performance sensor data and control signal transport via ZeroMQ (NetMQ).
- **Web Service**: JSON-based simulation control and monitoring through a web interface.

*[Full Video Demo](https://user-images.githubusercontent.com/21001946/104274159-96d84f80-54e3-11eb-9975-9d4bbbbdd586.mp4)*
---
## 📢 Notices
> [!IMPORTANT]
> CLOiSim has been upgraded to **Unity 6** (6000.4.0f1). Legacy versions based on Unity 2022.3 LTS are no longer maintained.
### Version History
| Branch | CLOiSim Version | Unity Version | Status |
| :--- | :--- | :--- | :--- |
| `main` | **5.x.x (Latest)** | **Unity 6** | Active |
| `release-4.14.6` | 4.x.x | Unity 2022.3 LTS | Maintenance |
| `release-3.2.0` | 3.x.x | Unity 2021 | Legacy |
| `release-2.7.7` | 2.x.x | Unity 2020 | Legacy |
---
## ✨ Features
### 🛠 Sensors & Actuators
| Category | Feature | Status | Notes |
| :--- | :--- | :---: | :--- |
| **Joints** | Joint Control / Pose | ✅ | ArticulationBody based |
| **LiDAR** | 2D / 3D (Raster-based) | ✅ | Pattern-based (e.g., Livox) supported |
| **Camera** | Color / Depth / Multi | ✅ | Semantic Segmentation, RealSense |
| **Inertial** | IMU / GPS | ✅ | Gaussian noise models included |
| **Other** | Sonar / IR / Contact | ✅ | |
| **Noise** | Gaussian / Custom | 🚧 | Gaussian fully supported |
### 🌍 World & Physics
- **Physics Engine**: NVIDIA PhysX with **Temporal Gauss Seidel (TGS)** solver for enhanced stability.
- **World Elements**: Actors (animated characters), Lights, Heightmaps (DEM), Roads.
- **Coordinates**: Support for Spherical Coordinates.
- **Rendering**: URP-based high-quality visuals with specialized shaders for sensors.

---
## 🔌 Plugin System
CLOiSim uses a flexible plugin architecture to extend robot and world functionalities via SDF `` tags. Plugin names are case-sensitive and should be specified in the `filename` attribute (e.g., ``).
### Model Plugins
- `LaserPlugin`: Publishes 2D or 3D LiDAR data.
- `CameraPlugin`: Publishes 2D color or depth image data.
- `SegmentationCameraPlugin`: Publishes semantic segmentation images and label info.
- `MultiCameraPlugin`: Publishes data from multiple color cameras.
- `RealSensePlugin`: Handles IR1, IR2, depth, and color data for RealSense sensors.
- `MicomPlugin`: Controls differential drive (2/4-wheeled) and self-balancing robots.
- `JointControlPlugin`: Controls joints and publishes joint status.
- `GpsPlugin`: Provides GPS position data in the world.
- `ImuPlugin`: Publishes IMU sensor data.
- `SonarPlugin` / `IRPlugin`: Publishes range data from Sonar or IR sensors.
- `LogicalCameraPlugin`: Publishes object detection and info within the camera view.
- `ContactPlugin`: Publishes contact sensor data.
- `ActorPlugin`: Adds character control functionality using Unity AI components.
- `ParticleSystemPlugin`: Enables Unity's particle systems.
- `ClothPlugin` / `ClothGrabberPlugin`: Handles cloth simulation and fingertip grabbers.
### World Plugins
- `ElevatorSystemPlugin`: Controls lifting and calling logic for elevator systems.
- `GroundTruthPlugin`: Retrieves precise information (position, size, velocity) for all objects.
- `ActorControlPlugin`: Centrally controls actors that have the `ActorPlugin` attached.
- `MowingPlugin`: Handles grass and mowing simulation.
---
## 🏁 Getting Started
### Prerequisites
- **OS**: Ubuntu 22.04+ (Recommended) or Windows 10+
- **Graphics**: Vulkan-capable GPU (NVIDIA RTX 20-series recommended)
- **Unity**: Unity Editor 6000.4.10f1 (if building from source)
### Installation
1. **Release Binary**: [Download the latest Linux version](https://github.com/lge-ros2/cloisim/releases).
2. **From Source**: Refer to the [Build Guide](https://github.com/lge-ros2/cloisim/wiki/Build-Guide) for detailed instructions.
---
## 📖 Usage
### 1. Environment Setup
Set the paths to your resources (models, worlds, media):
```bash
export CLOISIM_FILES_PATH="/path/to/sample_resources/media"
export CLOISIM_MODEL_PATH="/path/to/sample_resources/models"
export CLOISIM_WORLD_PATH="/path/to/sample_resources/worlds"
```
### 2. Running the Simulator
```bash
# Standard mode
./run.sh cloisim.world
# Headless mode (Linux only)
./run.sh --headless --world cloisim.world
```
### 3. ROS 2 Integration
To bridge simulation data to ROS 2, use the [cloisim_ros](https://github.com/lge-ros2/cloisim_ros) package:
- Supports **ROS 2 Humble & Jazzy**.
- Launch the bringup node to start publishing sensor topics.
### 4. Running EditMode Unit Tests
See [scripts/README.md](scripts/README.md) for detailed EditMode test runner usage and configuration.
---
## 🛠 Advanced Features
### External UI & Control
CLOiSim provides a WebSocket interface for runtime interaction:
- **Path**: `ws://127.0.0.1:8080/{service-name}`
- **Capabilities**: Marker placement (lines, boxes, text), simulation reset, and more.
- [Detailed Guide](https://github.com/lge-ros2/cloisim/wiki/Usage#control-service)

---
## 🗺 Roadmap
- [ ] Full SDF specification compatibility.
- [ ] Programmable C++ plugin interface.
- [ ] Advanced sensor performance optimizations.
- [ ] Enhanced graphical fidelity and material support.
## 🤝 Support
If you encounter any issues or have feature requests, please open an [Issue](https://github.com/lge-ros2/cloisim/issues).
---
감사합니다. Thank you!