One per camera, passed to the follower. Each camera is sent as its own track and labelled separately in the dataset.

Fields

str
required
Which camera to open, as the by-path name from python -m videosdk_teleop.devices. Names differ per machine, so read yours off that listing.
str
What to call it: wrist, front, left. The dataset uses this name, as observation.images.<label>.
int
default:"640"
Capture width in pixels.
int
default:"480"
Capture height in pixels.
int
default:"30"
Capture rate. Frames are captured at this rate whatever the observation rate is, and the one nearest each observation is the one recorded.
str
default:"mjpeg"
Capture format.
Keep pixel_format="mjpeg" on any host with more than one camera. Uncompressed video needs about 18 MB per second per camera, and two of those do not fit on one USB bus.

Finding a camera

That lists every camera and serial device with its by-path name, which is the handle to put in your config.
Use the by-path name, never /dev/video0 or /dev/ttyACM0. Those numbers change across reboots, so two identical cameras can swap places between runs.
Tired of long names? Register your own short ones once, then use those anywhere a handle is accepted.

Follower

Where cameras are passed, and everything else in its constructor.

Observation

How a frame is paired with the joints from the same instant.