Camera API#
Camera system API reference for GenesisLab.
Overview#
GenesisLab provides two types of camera APIs:
Regular Camera - Created via
scene.add_camera()For static cameras or programmatic camera control
Uses
.render()method
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#
API Overview - Detailed API differences and fixes
CameraCfg - Camera configuration reference
Camera User Guide - Usage guides and tutorials