Camera API#

Camera system API reference for GenesisLab.

Overview#

GenesisLab provides two types of camera APIs:

  1. Regular Camera - Created via scene.add_camera()

    • For static cameras or programmatic camera control

    • Uses .render() method

  2. Sensor Camera - Created via scene.add_sensor()

    • For entity-attached cameras (tracking)

    • Uses .read() method

Quick Reference#

Regular Camera#

# Create camera
camera = scene.add_camera(
    res=(640, 480),
    pos=(2.0, 0.0, 1.5),
    lookat=(0.0, 0.0, 0.5),
    fov=50,
)

# Render
rgb, depth, seg, normal = camera.render(
    rgb=True,
    depth=True,
    segmentation=False,
    normal=False
)

Sensor Camera (Tracking)#

from genesislab.engine.scene import CameraCfg

# Configure camera
camera_cfg = CameraCfg(
    track_mode="chase",
    entity_name="robot",
)

# In scene setup
camera = scene.add_sensor(
    gs.sensors.RasterizerCameraOptions(
        width=camera_cfg.width,
        height=camera_cfg.height,
        fov=camera_cfg.fov,
    ),
    entity=robot,
    pos=camera_cfg.pos,
    euler=camera_cfg.euler,
)

# Read data
data = camera.read()
rgb = data.rgb  # [height, width, 3]
depth = data.depth  # [height, width]

Common Issues#

AttributeError: ‘RasterizerCameraSensor’ object has no attribute ‘render’#

Problem: Trying to use .render() on a sensor camera.

Solution: Use .read() instead:

# ❌ Wrong
rgb, depth = camera.render(rgb=True, depth=True)

# ✅ Correct
data = camera.read()
rgb = data.rgb
depth = data.depth

Camera Not Following Entity#

Problem: Camera created with add_camera() instead of add_sensor().

Solution: Use add_sensor() for entity-attached cameras:

# ❌ Won't follow
camera = scene.add_camera(...)

# ✅ Will follow
camera = scene.add_sensor(
    gs.sensors.RasterizerCameraOptions(...),
    entity=robot,
    pos=pos,
    euler=euler,
)

See Also#