Repository for the Unity-based SoftBots teleoperation system release.
UnitySoftbotsTeleopRelease is a framework developed by the Italian Institute of Technology (IIT) that enables teleoperation of soft robots (SoftBots) using the Unity environment. This project provides an intuitive interface for remotely controlling soft robots through various input devices across a network.
The system leverages Meta's Movement SDK to automatically calibrate by calculating the operator's body dimensions, enabling precise control mapping between the human operator and the robot. Hand tracking can also be activated for enhanced manipulation capabilities.
- Integration with Unity for real-time 3D visualization
- Automatic operator body calibration using Meta's Movement SDK
- Optional hand tracking for precise manipulation
- Compatible with both ROS1 and ROS2 frameworks
- Network-based control for remote operation
- Auto-discovery of robots on the network via broadcast messages
- Customizable user interface for SoftBots control
- Support for soft robot simulation
- Bidirectional communication between the control interface and physical robots
- Unity 2020.3 LTS or higher
- Windows 10/11 or macOS 10.15+ or Linux (Ubuntu 20.04 recommended)
- .NET Framework 4.x
- Supported input devices (e.g., joystick, haptic devices, VR controllers)
- Network connectivity between the control station and robot
-
Clone this repository:
git clone https://github.com/IIT-SoftBots/UnitySoftbotsTeleopRelease.git -
Open the project with Unity Hub by selecting the cloned folder
-
Make sure you have all required packages installed (check in Unity Package Manager)
-
Install the Python broadcast script on the robot's computer
- Open the main scene in
Assets/Scenes/MainTeleop.unity - Start the Python broadcast script on the robot's computer to announce its presence on the network
- In Unity, navigate to
Robotics -> ROS Settingsand select either ROS1 or ROS2 based on your robot setup - The system will automatically discover the robot on the network using the broadcast listener
- Start the scene and use the teleoperation interface to control the robot
The system uses a network discovery mechanism:
- The Python script on the robot broadcasts messages containing the robot's IP address and name
- The Unity application listens for these broadcast messages
- When a robot is discovered, it appears in the available robots list in the interface
- Select the robot you wish to control to establish the connection
The user interface can be customized by modifying the UI elements in the scene. You can access the UI components through the object hierarchy in Unity.
The system automatically calibrates to the operator's body dimensions using Meta's Movement SDK:
- Stand in a T-pose when prompted
- The system will calculate your body dimensions
- The teleoperation mapping will be adjusted accordingly for your proportions
To add a new robot model:
- Import the 3D model into the
Assets/Modelsfolder - Create a new prefab in the
Assets/Prefabs/Robotsfolder - Assign the
SoftBotControllercomponent to the prefab - Configure the robot-specific parameters in the component
The system is structured into several main modules:
- Core: Contains the base functionality of the framework
- Teleop: Manages the communication between the user interface and the robot
- Network: Handles robot discovery and communication protocols
- Calibration: Manages automatic operator body calibration
- Simulation: Provides tools for simulating soft robot behavior
- UI: Implements the user interface for teleoperation control
The system works with both ROS1 and ROS2:
- Navigate to
Robotics -> ROS Settingsin the Unity menu - Select the appropriate ROS version (ROS1 or ROS2)
- Configure any specific ROS parameters needed
- The system will automatically adapt the communication protocols accordingly
- Verify that the robot is powered on and connected to the network
- Check that the Python broadcast script is running on the robot's computer
- Ensure both the control station and robot are on the same network
- Check firewall settings to allow broadcast messages
- Verify the connection parameters in the Inspector panel
- Ensure you are fully visible to the tracking system
- Maintain a clear T-pose during calibration
- Check that the Movement SDK is properly initialized
- Try recalibrating if the proportions seem incorrect
- Reduce the graphics quality in Unity settings
- Decrease the teleoperation data update frequency
- Close other applications that might consume system resources
This project is distributed under the [specify license, e.g., MIT, Apache 2.0, etc.]
This project was developed by the Italian Institute of Technology (IIT), SoftBots research group.
👨 Giovanni Rosato
Email: giovanni.rosato@iit.it
GitHub: @GianniRos
Linkedin: @giovanni-rosato-linkedin

