Skip to main content

What is the Asset Catalog?

The Asset Catalog is Cyberwave’s library of pre-configured robot assets. Each asset includes a 3D model, kinematic definition (URDF), and metadata that lets you create digital twins with a single line of code.
Assets in the catalog are identified by a registry ID in the format vendor/model, such as the-robot-studio/so101 or unitree/go2.

Using Catalog Assets

Create a Twin from an Asset

Use the Python SDK to create a digital twin from any catalog asset:
from cyberwave import Cyberwave

cw = Cyberwave(api_key="your_api_key")

robot = cw.twin("unitree/go2")
The cw.twin() function handles everything:
  • Finds the asset in the catalog
  • Creates (or retrieves) a digital twin in your environment
  • Returns an appropriate Twin class based on the asset’s capabilities

Search the Catalog

from cyberwave import Cyberwave

cw = Cyberwave(api_key="your_api_key")

for asset in cw.assets.search("unitree"):
    print(f"{asset.registry_id}: {asset.name}")

Browse the Web Interface

Browse assets at cyberwave.com/catalog:
  • Filter by category (arms, mobile robots, quadrupeds, drones)
  • Search by manufacturer or model name
  • View 3D previews and specifications

Asset Capabilities

Assets in the catalog have different capabilities based on their type:

Robot Arms

Joint control, inverse kinematics, gripper operations

Mobile Robots

Position control, rotation, navigation

Quadrupeds

Leg joint control, gait patterns, camera streaming

Drones

Takeoff, landing, hover, flight control
The SDK automatically returns the right Twin class based on capabilities:
arm = cw.twin("the-robot-studio/so101")
arm.joints.set("shoulder", 45, degrees=True)

camera = cw.twin("cyberwave/standard-cam")
await camera.stream_video_background()

dog = cw.twin("unitree/go2")

Asset Structure

Each catalog asset contains:
ComponentDescription
Registry IDUnique identifier (vendor/model)
URDF FileRobot description with joints and links
3D ModelGLB mesh for visualization
MetadataCategory, manufacturer, version, tags
CapabilitiesSensors, grippers, flight, etc.

Upload a New Asset

What is a URDF?

URDF (Unified Robot Description Format) is the standard XML format used in ROS to describe a robot’s links, joints, visuals, and collisions. References:

Prepare Your ZIP File

Create a folder that contains one main .urdf file and every file it references (meshes, textures, materials), then zip the folder.
my-robot/
  urdf/
    robot.urdf
  meshes/
    base_link.stl
    arm_collision.stl
    arm_visual.obj
  textures/
    arm_albedo.png
Use relative paths inside the URDF that match your ZIP structure. If the URDF references meshes/arm_visual.obj, that file must exist at that path in the ZIP.

Upload from the UI

1

Sign in

Sign in to cyberwave.com (or sign up).
2

Open the catalog

Navigate to cyberwave.com/catalog and click Upload Asset.
3

Fill in details

Enter the required fields and upload your URDF ZIP file.
4

Configure advanced options (optional)

  • Main URDF File Path — if your ZIP has multiple URDF files, set the path (e.g. urdf/robot.urdf). Leave empty if there’s only one.
  • Thumbnail — optional. Cyberwave can generate one automatically.

Upload from the API

curl -X POST "https://cyberwave.com/api/v1/assets/create-with-urdf" \
  -H "Authorization: Bearer $CYBERWAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_url": "https://example.com/my-robot.zip",
    "force_name": "my-robot",
    "main_file_path": "urdf/robot.urdf",
    "description": "My robot uploaded from URDF ZIP"
  }'
FieldDescription
file_urlURL to your ZIP file (must be reachable by Cyberwave)
force_nameName for the asset
main_file_pathPath to the main URDF file inside the ZIP
descriptionOptional description
subfolderOptional subfolder within the ZIP
branchOptional version/branch identifier

Upload via Python SDK

cw.assets.upload_glb("path/to/model.glb", name="My Robot", description="Custom robot model")