This is a project meant to serve as a foundation for simulating unmanned/autonomous surface vessels in Unity with HDRP (High Definition Rendering Pipeline).
USVDigitalTwin_DemoVideo_Rev1-2.mp4
This project was primarily worked on as part of my EE BSc thesis. I am now out of university, working, and unfortunately don't have time to maintain it. Still, I'm happy to provide some advice sorting out issues that come up. Unity is cool! And so is ROS and ASVs!
- ROS/ROS2 integration with Unity ROS-TCP-Connector (https://github.com/Unity-Technologies/ROS-TCP-Connector)
- High quality water system through Unity's HDRP Water System (https://blog.unity.com/engine-platform/new-hdrp-water-system-in-2022-lts-and-2023-1)
- Physics support for floating bodies and vehicles (hydrostatics and hydrodynamics)
- Modular physics system with hot-swappable implementations
- Simulation of common USV sensors, including 2D/3D LiDAR, RGB+D Camera, IMU and Odometry
- Simple modular propulsion system
- All sensors publish data to the ROS network
- Thrusters subscribe to ROS topics for force and direction commands
- The joy and usability of Unity!
For running the simulator itself, see the official Unity HDRP system requirements: https://docs.unity3d.com/Packages/[email protected]/manual/System-Requirements.html
For ROS compatability, the system must (obviously) have some way of running ROS. Unity's ROS-TCP-Connector is used as the interface between ROS and Unity. See the official documentation and tutorials at https://github.com/Unity-Technologies/ROS-TCP-Connector for more information. ROS 2 Humble and ROS 2 Iron has been tested, but the simulator should be compatible with any ROS version supported by the ROS-TCP-Endpoint.
The simulator has been tested on Windows 11 (with Robostack or Docker), MacOS Sonoma (not tested with ROS) and Ubuntu 24.04 (native).
Check out the Wiki for tutorials on how to use the project!