Configure a Single Stream Camera

A single_stream camera reads from a HTTP server streaming image data.

The server that the model reads from should output an image:

  • If it’s a color image server, then it should output JPEG, PNG, or our custom VIAM color format, image/vnd.viam.rgba.
  • If it’s a depth image server, it should output either a Z16 PNG, or our custom VIAM depth format, image/vnd.viam.dep.

Your single_stream camera can output:

  • A depth stream which outputs a 2D depth map or, if you provide intrinsic_parameters, a point cloud.
  • A color stream which outputs color values in 2D.

On the COMPONENTS subtab, navigate to the Create Component menu. Enter a name for your camera, select the type camera, and select the single_stream model.

Creation of a single stream camera in the Viam app config builder.

Fill in the attributes for your single stream camera:

Configuration of a single stream camera in the Viam App config builder.
{
    "name": "<camera_name>",
    "type": "camera",
    "model" : "single_stream",
    "attributes": {
        "intrinsic_parameters": {
            "width_px": <integer>,
            "height_px": <integer>,
            "fx": <float64>,
            "fy": <float64>,
            "ppx": <float64>,
            "ppy": <float64>
        },
        "distortion_parameters": {
            "rk1": <float64>,
            "rk2": <float64>,
            "rk3": <float64>,
            "tp1": <float64>,
            "tp2": <float64>
        },
        "stream": <color|depth>,
        "debug": <boolean>,
        "url": <string>
    }
}

The following attributes are available for single stream cameras:

NameInclusionDescription
intrinsic_parametersOptionalThe intrinsic parameters of the camera used to do 2D <-> 3D projections:
  • width_px: The expected width of the aligned image in pixels.
  • height_px: The expected height of the aligned image in pixels.
  • fx: The image center x point.
  • fy: The image center y point.
  • ppx: The image focal x.
  • ppy: The image focal y.
distortion_parametersOptionalModified Brown-Conrady parameters used to correct for distortions caused by the shape of the camera lens:
  • rk1: The radial distortion x.
  • rk2: The radial distortion y.
  • rk3: The radial distortion z.
  • tp1: The tangential distortion x.
  • tp2: The tangential distortion y.
streamRequiredcolor or depth. The image to be returned when you call Next() or NextPointCloud().
debugOptionalEnables the debug outputs from the camera if true. Defaults to false.
urlRequiredThe color or depth stream url.

If you have a camera that uses its own SDK to access its images and point clouds (like an Intel RealSense camera), you can attach a camera server as a remote component to your robot. These remote cameras show up just like regular cameras on your robot.

View the camera stream

Once your camera is connected, go to the CONTROL tab, and click on the camera’s dropdown menu. Toggle “View Camera”. If everything is configured correctly, you will see the live video feed from your camera.

Example Camera view inside Viam app

Next Steps