A professional Virtual Reality (VR) framework designed for the immersive control of dual-arm robotic manipulators. This system integrates Unreal Engine 5.6.1 and the Webots simulator to bridge the gap between simulated environments and real-world hardware.
This project enables real-time teleoperation of robotic arms via VR controllers. By utilizing natural depth perception and motion tracking, users can manipulate tool points seamlessly across both virtual and physical platforms.
- Real-time Visualization: Powered by Unreal Engine 5.6.1.
- Dual-Domain Support: Unified interface for Webots simulator and physical robotic hardware.
- Bidirectional Communication: Low-latency control and feedback loop.
- Immersive Interface: High-fidelity depth perception and motion tracking for precise manipulation.
This framework has been developed and validated under the following configuration:
- Operating System: Ubuntu 24.04 LTS
- Robotics Simulator: Webots
- Game Engine: Unreal Engine 5.6.1
- Communication: ZeroC ICE / RoboComp
- Robot Deployment: p3botUR Configuration Script (Used for automated setup of the robotic environment)
- VR & OpenXR Setup The system relies on ALVR and OpenXR for headset communication.
sudo apt install libopenxr-dev libopenxr-loader1 openxr-layer-corevalidation - Graphics (Vulkan) Ensure your drivers are up to date. To test your Vulkan installation:
sudo apt install vulkan-tools libvulkan1 libvulkan-dev vulkan-validationlayers nvidia-vulkan-common vulkan-utilsTo test Vulkan:
sudo apt install vkcube
vkcube- Unreal Engine 5.6.1
- Download the Linux binaries (Linux_Unreal_Engine_5.6.1.zip)
- Extract to your preferred software directory (e.g., $HOME/software/).
- Run the editor to verify installation:
cd Linux_Unreal_Engine_5.6.1/Engine/Binaries/Linux ./UnrealEditor
The system uses a custom middleware to interface with RoboComp components via ZeroC ICE.
- Generate C++ classes from Slice files:
cd CustomLibs/include
slice2cpp ../ices/KinovaArm.ice ../ices/Lidar3D.ice ../ices/VRController.ice - Build the Shared Library:
cd .. && cmake -B build && make -C build -j12- Link to Unreal Binaries:
cd ..
ln -s $(pwd)/CustomLibs/build/libRobotMiddleware.so Binaries/Linux/libRobotMiddleware.soTo build the project from the terminal:
~/software/Linux_Unreal_Engine_5.6.1/Engine/Build/BatchFiles/Linux/Build.sh VRTeleoperationEditor Linux Development ~/Code/VR_teleoperation/VRTeleoperation.uproject- Headset: Ensure your VR headset is connected via ALVR/SteamVR.
- Launch:
./UnrealEditor ~/Code/VR_teleoperation/VRTeleoperation.uproject- Game Mode: Logic is defined in Blueprints/VRGameMode.
- Input Handling: Controls are mapped in Inputs/IMC_Robot.
- Robot Actor: The Robot(Pawn) is wrapped in RobotBP to facilitate Unreal's Enhanced Input System.
- Asset Pipeline (URDF to FBX):
- Use Blender 3.1.2 with the urdf_importer.
- Ensure urdf_parser_py and yamlpy are in Blender’s internal Python environment.
- Import Settings: Right-click in Content Drawer -> Import -> Select FBX -> Set type to Skeletal Mesh.