A comprehensive simulation framework for Synria robots (Bessica_D, Bessica_M, Alicia_D) using NVIDIA Isaac Sim and Isaac Lab.
This repository provides a complete simulation environment for Synria robotic systems, featuring:
-
🤖 Multiple Robot Types: Support for Bessica_D, Bessica_M, and Alicia_D robots
-
🎮 VR Teleoperation: Real-time teleoperation with camera streaming
-
🔄 DDS Communication: Distributed communication for real-time control
-
🎯 Task Framework: Extensible task system for various applications
┌─────────────────┐
│ Left Arm │ 7 joints
│ Right Arm │ 7 joints
│ Grippers │ 4 joints
└─────────────────┘
Total: 18 DOF (14 arm + 4 gripper)
Features:
- Dual-arm fixed-base robot
- 7 revolute joints per arm
- 4 prismatic gripper joints (2 per arm)
- Ideal for arm-only manipulation tasks
┌─────────────────┐
│ Torso │ 3 joints
│ Left Arm │ 7 joints
│ Right Arm │ 7 joints
│ Grippers │ 4 joints
└─────────────────┘
Total: 21 DOF (3 torso + 14 arm + 4 gripper)
Features:
- Dual-arm with waist humanoid robot
- 3 revolute torso joints
- 7 revolute joints per arm
- 4 prismatic gripper joints
- Full-body manipulation capabilities
┌─────────────────┐
│ Single Arm │ 6 joints
│ Gripper │ 2 joints
└─────────────────┘
Total: 8 DOF (6 arm + 2 gripper)
Features:
- Single-arm fixed-base robot
- 6-DOF manipulator
- 2 prismatic gripper joints
- Compact design for single-arm tasks
- Operating System: Ubuntu 22.04 or later
- Python: 3.10
- GPU: NVIDIA GPU with CUDA 12.2 support (tested with RTX 3090)
- NVIDIA Driver: Version 535.183.01 or compatible
- Conda: Package manager for environment setup
- CUDA: For GPU acceleration (optional)
- DDS Middleware: For teleoperation features (installed via
pyproject.toml)
Note: Isaac Sim 4.5.0 is automatically installed via pyproject.toml during the installation process. No manual installation required.
conda create -n bessica python=3.10 pinocchio=3.1.0 numpy=1.26.4 -c conda-forge
conda activate bessicaInstall all project dependencies from pyproject.toml (includes PyTorch, Isaac Sim, Isaac Lab, and other core packages):
pip install --upgrade pip
pip install -e . --extra-index-url https://download.pytorch.org/whl/cu121 --extra-index-url https://pypi.nvidia.comImportant: Both --extra-index-url flags are required:
- PyTorch CUDA wheels from
https://download.pytorch.org/whl/cu121 - Isaac Sim from
https://pypi.nvidia.com
Note: Isaac Sim installation can take significant time and requires substantial disk space.
Verify Installation:
python -c "import torch; print(f'PyTorch: {torch.__version__}, CUDA: {torch.cuda.is_available()}, GPUs: {torch.cuda.device_count()}')"Install git-lfs (if needed) and run the fetch script:
sudo apt install git-lfs # Ubuntu
./fetch_assets.shAssets will be available under assets/robots/ in the project root.
-
Run a simple raise-hands task
python -m synria_lab.app.main --task Isaac-Bessica-RaiseHands-v0 --robot_type bessica_d
-
Run VR teleoperation (Bessica_M)
python -m synria_lab.app.main --task Isaac-VR-Teleoperation-Bessica-M-v0 --robot_type bessica_m --enable_cameras
A demonstration task that raises both arms of the robot to a target pose.
python -m synria_lab.app.main --task Isaac-Bessica-RaiseHands-v0 --robot_type bessica_dSupported robots: Bessica_D, Bessica_M, Alicia_D
Real-time teleoperation with camera streaming and DDS communication.
# For Bessica_D
python -m synria_lab.app.main --task Isaac-VR-Teleoperation-Bessica-D-v0 --robot_type bessica_d --enable_cameras
# For Bessica_M
python -m synria_lab.app.main --task Isaac-VR-Teleoperation-Bessica-M-v0 --robot_type bessica_m --enable_camerasFeatures:
- Real-time camera image streaming
- DDS-based command reading
- Robot state publishing
- Interactive VR control
| Argument | Type | Default | Description |
|---|---|---|---|
--task |
string | Isaac-Bessica-RaiseHands-v0 |
Task name (gymnasium registered) |
--robot_type |
string | bessica_m |
Robot type: bessica_d, bessica_m, alicia_d |
--num_envs |
int | 1 |
Number of parallel environments |
--action_source |
string | bessica_d |
Action source (dds, simple, replay, etc.) |
--device |
string | cuda:0 |
Compute device (cuda:0, cpu) |
--headless |
flag | False |
Run without GUI |
Basic simulation:
python -m synria_lab.app.main --task Isaac-Bessica-RaiseHands-v0 --robot_type bessica_dHeadless mode:
python -m synria_lab.app.main --task Isaac-Bessica-RaiseHands-v0 --robot_type bessica_d --headlessMultiple environments:
python -m synria_lab.app.main --task Isaac-Bessica-RaiseHands-v0 --robot_type bessica_d --num_envs 4With camera:
python -m synria_lab.app.main --task Isaac-VR-Teleoperation-Bessica-M-v0 --robot_type bessica_m --enable_camerasSynria-Robots-Isaaclab/
├── synria_lab/ # Main package (recommended imports)
│ ├── app/ # Entry points
│ ├── envs/ # Env configs (Bessica/Alicia)
│ ├── tasks/ # Gym tasks & VR teleop
│ ├── control/ # Action providers
│ ├── comm/ # DDS + shared memory
│ ├── robots/ # Robot state & kinematics
│ ├── config/ # Robot & camera configs
│ ├── image/ # Image server utilities
│ └── utils/ # Common utilities
├── synria_lab/app/main.py # Main entry (run: python -m synria_lab.app.main)
├── docs/ # Usage docs
└── legacy dirs # Backward-compatible wrappers to `synria_lab`
The SynriaActionProvider provides a unified interface for controlling all robot types:
- Bessica_D/M: Dual-arm control in logical order
[left1-N, right1-N] - Alicia_D: Single-arm control
[Joint1-6] - Automatic mapping to interleaved articulation layout
- DDS command reading and state publishing
Distributed communication for real-time control:
- Robot state publishing
- Command reading from external systems
- Shared memory management
- Multi-robot support
- Basic Usage Guide - Getting started with the framework
- Quick Reference - Common commands and quick fixes
If PyTorch doesn't detect your GPU:
# Verify CUDA
nvcc --version
nvidia-smi
# Reinstall PyTorch with CUDA support
pip uninstall torch torchvision
pip install torch==2.5.1 torchvision==0.20.1 --index-url https://download.pytorch.org/whl/cu121If you encounter the "Didn't find wheel for isaacsim" error, ensure you're using both extra index URLs:
# Make sure to include both extra-index-url flags
pip install --upgrade pip setuptools wheel
pip install -e . --extra-index-url https://download.pytorch.org/whl/cu121 --extra-index-url https://pypi.nvidia.com
# Or install Isaac Sim separately first:
pip install 'isaacsim[all,extscache]==4.5.0' --extra-index-url https://pypi.nvidia.com -v# Use mamba for faster installation
conda install mamba -c conda-forge
mamba create -n bessica python=3.10 pinocchio=3.1.0 numpy=1.26.4 -c conda-forge- PyTorch
cu121wheels are compatible with CUDA 12.1, 12.2, and 12.3 - Isaac Sim requires NVIDIA GPU with CUDA support and sufficient VRAM (recommended: 8GB+)
- Tested on Ubuntu 22.04 with NVIDIA Driver 535.183.01
This code builds upon following open-source code-bases. Please visit the URLs to see the respective LICENSES:
- https://github.com/isaac-sim/IsaacLab
- https://github.com/isaac-sim/IsaacSim
- https://github.com/zeromq/pyzmq
- https://github.com/unitreerobotics/unitree_sdk2_python
- https://github.com/unitreerobotics/unitree_sim_isaaclab
Copyright (c) 2025 Synria Robotics Co., Ltd.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
See LICENSE for details.
- Website: https://synriarobotics.ai
- Author: Synria Robotics Team
Contributions are welcome! Please feel free to submit a Pull Request.
Note: This framework is designed for research and development purposes. Ensure proper safety measures when deploying to physical robots.