A high-performance, multi-sensor supported off-road environment simulator based on the Unity engine.
- Multi-Sensor Support: Integrates a wide range of sensors, including RGB, depth, and fisheye cameras, as well as LiDAR and IMU.
- Randomized Environments: Procedurally generates diverse off-road terrains and vegetation.
- Data Generation: Captures comprehensive datasets, including images, vehicle poses, and point cloud maps.
- ROS Integration: Seamlessly connects with ROS for real-time data streaming and control.
- High-Fidelity Simulation: Provides a realistic simulation environment for robotics research and autonomous vehicle development.
- OS: Windows 10/11, macOS, or Linux
- Unity Version: 2022.3 or newer
- Hardware: A modern GPU and at least 16 GB of RAM are recommended for optimal performance.
You can download the latest binary version from the Releases page.
- Clone the repository:
git clone https://github.com/TJU-Aerial-Robotics/YOPO-Sim.git
- Install Unity Hub and the required version of Unity (2022 or newer).
- Download Unity Hub from Unity's official website.
- Open the project in Unity Hub.
- Acquire and import the third-party packages (all are free in the Unity Asset Store):
- Load the scenes:
- Evaluation scene:
Assets/Scenes/EvaluationScene - Data generation scene:
Assets/Scenes/DataGenerationScene
- Evaluation scene:
- Run the simulation.
The DataGenerationScene is designed for data acquisition, enabling collection of various types of data for training and testing purposes. It collects data from multiple camera sensors, the pose of the vehicle, and the point cloud map of the environment, saving them in a structured format (TOML).
![]() |
![]() |
|---|
Example output directory structure:
TrainingData
└── Scene_0
├── Textures
│ ├── depth_0.exr
│ ├── fisheye_0.png
│ └── rgb_0.png
├── data.toml
├── terrain.ply
└── tree.ply
The EvaluationScene is designed for evaluating the performance of the YOPO-Rally planner. It provides a simulated environment where the planner can be tested against various terrains and tree densities. Real-time feedback and visualization are supported.
![]() |
![]() |
|---|
For detailed documentation, including core scripts, sensor setup, data generation, and evaluation, please refer to the Documentation file.
YOPO-Sim supports full integration with ROS, allowing you to stream sensor data and send control commands in real time. To connect to a ROS network, configure the ROS-TCP-Connector settings in the Unity Editor and run the corresponding ROS endpoint.
Sensor support is provided by UnitySensors:
- RGB Camera
- Depth Camera
- Fisheye Camera (Equidistant and EUCM models)
- LiDAR
- IMU
sensors.mp4
Randomized terrain and vegetation are provided by Vista:
- Procedural terrain
- Randomized trees
randomized-environment.mp4
Point cloud map generation is handled by a separate repository: VoxelGenerator.
point-cloud-map-generation.mp4
YOPO-Sim supports acquisition of:
- Images (RGB, depth, fisheye)
- Vehicle position and orientation
- Point cloud maps
data-acquisition.mp4
- Missing Packages or Errors: If you encounter issues with missing packages, try re-importing all assets or restarting Unity Hub.
- Performance Issues: To improve performance, lower the simulation resolution, reduce the number of active sensors, or simplify the environment complexity.
- ROS Connection Problems: Ensure that the
ROS-TCP-Endpointis running and that the IP addresses and port numbers match between your Unity and ROS machines. Check your firewall settings to allow the connection.
Contributions are welcome! Please feel free to submit a pull request. For more details, see CONTRIBUTING.md.
We would like to express our gratitude to the following projects and creators for their significant contributions:
- UnitySensors: For providing the core sensor simulation framework.
- ROS-TCP-Connector: For enabling seamless integration with ROS for real-time data streaming.
- Vista and Unity Terrain - URP Demo Scene: For the assets used to generate randomized terrain and vegetation.
- Poisson-Disc-Sampling: For providing the algorithm used to generate randomized sampling positions for data acquisition.
- diablo_ros2: For providing the vehicle model used in the simulation.
- CodeMonkey's Kitchen Chaos course: For providing valuable learning resources and inspiration.
- CSPID: A PID Controller library used for vehicle control in the simulation.
- Tomlet: A TOML parser library used for data management in the simulation.
If you use this package in your research or projects, please cite it as follows:
@misc{YOPO-Rally,
title={YOPO-Rally: A Sim-to-Real Single-Stage Planner for Off-Road Terrain},
author={Hongyu Cao and Junjie Lu and Xuewei Zhang and Yulin Hui and Zhiyu Li and Bailing Tian},
year={2025},
eprint={2505.18714},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2505.18714},
}
This project is licensed under the Apache-2.0 License.



