Skip to main content

Dora Node for using Hex Camera

Project description

hex_dora_node_camera

Dora nodes for capturing and viewing camera images. Supports multiple camera backends including USB cameras, Intel RealSense, Berxel depth cameras, and a dummy camera for testing.

Nodes

Node Description Inputs Outputs
hex-dora-node-usb USB camera capture (V4L2) tick color
hex-dora-node-realsense Intel RealSense depth camera capture tick color, depth
hex-dora-node-berxel Berxel depth camera capture tick color, depth
hex-dora-node-dummy Dummy camera for testing (generates synthetic frames) tick color
hex-dora-node-test-usb OpenCV window viewer for USB color stream tick, color -
hex-dora-node-test-realsense OpenCV window viewer for RealSense color/depth streams tick, color, depth -
hex-dora-node-test-berxel OpenCV window viewer for Berxel color/depth streams tick, color, depth -
hex-dora-node-test-dummy OpenCV window viewer for dummy color stream with optional timestamp overlay tick, color -

Installation

# Base (includes usb, dummy, and test nodes)
pip install hex_dora_node_camera

# With Berxel support
pip install hex_dora_node_camera[berxel]

# With RealSense support
pip install hex_dora_node_camera[realsense]

# All backends
pip install hex_dora_node_camera[all]

YAML Examples

USB Camera

nodes:
  - id: cam_usb
    build: pip install hex_dora_node_camera
    path: hex-dora-node-usb
    inputs:
      tick: dora/timer/millis/2
    outputs:
      - color
    env:
      NODE_NAME: cam_usb
      # base
      FRAME_RATE: 30
      HEIGHT: 480
      WIDTH: 640
      CAM_BUFFER_SIZE: 8
      SEN_TS: True
      # usb
      CAM_PATH: /dev/video0
      EXPOSURE: 0
      TEMPERATURE: 0
      # encoding
      COLOR_ENCODING: mjpg # bgr8 or mjpg

  - id: test_usb
    build: pip install hex_dora_node_camera
    path: hex-dora-node-test-usb
    inputs:
      tick: dora/timer/millis/2
      color: cam_usb/color
    env:
      NODE_NAME: test_usb

Intel RealSense

nodes:
  - id: cam_realsense
    build: pip install hex_dora_node_camera[realsense]
    path: hex-dora-node-realsense
    inputs:
      tick: dora/timer/millis/2
    outputs:
      - color
      - depth
    env:
      NODE_NAME: cam_realsense
      # base
      FRAME_RATE: 30
      HEIGHT: 480
      WIDTH: 640
      CAM_BUFFER_SIZE: 8
      SEN_TS: True
      # realsense
      SERIAL_NUMBER: b021222071077
      # encoding
      COLOR_ENCODING: bgr8 # bgr8 or mjpg
      DEPTH_ENCODING: uint16 # uint16 or png

  - id: test_realsense
    build: pip install hex_dora_node_camera
    path: hex-dora-node-test-realsense
    inputs:
      tick: dora/timer/millis/2
      color: cam_realsense/color
      depth: cam_realsense/depth
    env:
      NODE_NAME: test_realsense

Berxel Depth Camera

nodes:
  - id: cam_berxel
    build: pip install hex_dora_node_camera[berxel]
    path: hex-dora-node-berxel
    inputs:
      tick: dora/timer/millis/2
    outputs:
      - color
      - depth
    env:
      NODE_NAME: cam_berxel
      # base
      FRAME_RATE: 30
      HEIGHT: 400
      WIDTH: 640
      CAM_BUFFER_SIZE: 8
      SEN_TS: True
      # berxel
      SERIAL_NUMBER: bP050HYX5410E1A001
      EXPOSURE: 10000
      GAIN: 100
      # encoding
      COLOR_ENCODING: bgr8 # bgr8 or mjpg
      DEPTH_ENCODING: uint16 # uint16 or mjpg

  - id: test_berxel
    build: pip install hex_dora_node_camera
    path: hex-dora-node-test-berxel
    inputs:
      tick: dora/timer/millis/2
      color: cam_berxel/color
      depth: cam_berxel/depth
    env:
      NODE_NAME: test_berxel

Dummy Camera (Testing)

nodes:
  - id: cam_dummy
    build: pip install hex_dora_node_camera
    path: hex-dora-node-dummy
    inputs:
      tick: dora/timer/millis/2
    outputs:
      - color
    env:
      NODE_NAME: cam_dummy
      # base
      FRAME_RATE: 30
      HEIGHT: 480
      WIDTH: 640
      CAM_BUFFER_SIZE: 8
      SEN_TS: True
      # encoding
      COLOR_ENCODING: bgr8 # bgr8 or mjpg

  - id: test_dummy
    build: pip install hex_dora_node_camera
    path: hex-dora-node-test-dummy
    inputs:
      tick: dora/timer/millis/2
      color: cam_dummy/color
    env:
      NODE_NAME: test_dummy
      SHOW_COLOR_TS: True

Inputs

Camera Nodes (usb / realsense / berxel / dummy)

Input Type Description
tick dora/timer/millis/* Timer tick to trigger frame capture

Test Nodes (test-usb / test-dummy)

Input Type Description
tick dora/timer/millis/* Timer tick to refresh display
color Arrow array Color image from a camera node

Test Nodes (test-realsense / test-berxel)

Input Type Description
tick dora/timer/millis/* Timer tick to refresh display
color Arrow array Color image from a camera node
depth Arrow array Depth image from a depth camera node

Outputs

color

Arrow array containing the color image.

color_data: UInt8Array  # pa.array(img.ravel()) or pa.array(jpeg_bytes)
metadata = {
    "width": int,       # e.g. 640
    "height": int,      # e.g. 480
    "encoding": str,    # "bgr8" or "mjpg"
    "primitive": "image",
}

depth

Arrow array containing the depth image (only for realsense and berxel).

depth_data: UInt16Array  # pa.array(depth.ravel()) or pa.array(png_bytes)
metadata = {
    "width": int,       # e.g. 640
    "height": int,      # e.g. 480
    "encoding": str,    # "uint16", "png" (realsense) or "mjpg" (berxel)
    "primitive": "image",
}

Environment Variables

Common (all camera nodes)

Variable Type Default Description
NODE_NAME str "" Dora node name
FRAME_RATE int 30 Camera frame rate
HEIGHT int 480 (400 for berxel) Image height in pixels
WIDTH int 640 Image width in pixels
CAM_BUFFER_SIZE int 8 Camera internal buffer size
SEN_TS bool True Use sensor timestamp
COLOR_ENCODING str bgr8 Color encoding: bgr8 or mjpg

USB Camera

Variable Type Default Description
CAM_PATH str /dev/video0 V4L2 device path
EXPOSURE int 100 Camera exposure value (0 = auto)
TEMPERATURE int 4000 White balance temperature (0 = auto)

Intel RealSense

Variable Type Default Description
SERIAL_NUMBER str (required) Device serial number (prefix with b)
DEPTH_ENCODING str uint16 Depth encoding: uint16 or png

Berxel

Variable Type Default Description
SERIAL_NUMBER str (required) Device serial number (prefix with b)
EXPOSURE int 10000 Camera exposure value
GAIN int 100 Camera gain value
DEPTH_ENCODING str uint16 Depth encoding: uint16 or mjpg

Test Dummy

Variable Type Default Description
NODE_NAME str "" Dora node name
SHOW_COLOR_TS bool False Overlay timestamp text on color image

License

This project is licensed under Apache-2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hex_dora_node_camera-0.0.1a5.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hex_dora_node_camera-0.0.1a5-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file hex_dora_node_camera-0.0.1a5.tar.gz.

File metadata

  • Download URL: hex_dora_node_camera-0.0.1a5.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for hex_dora_node_camera-0.0.1a5.tar.gz
Algorithm Hash digest
SHA256 baad97c32a95e21b0c2d10202715bec06114fa2f5c0bbaa860d4c28c5e2778f9
MD5 3eafe17e711fb01f941c883ba6ba1a51
BLAKE2b-256 1779eb7cbb7d1913e8feeff35238b6bdfd9cf0598af31db1803821b292c5975f

See more details on using hashes here.

File details

Details for the file hex_dora_node_camera-0.0.1a5-py3-none-any.whl.

File metadata

File hashes

Hashes for hex_dora_node_camera-0.0.1a5-py3-none-any.whl
Algorithm Hash digest
SHA256 43422e8ec8cd9c30eadbf4e519f621237e7fa77b03d59f880c1fc86921378276
MD5 cfedeaa29f08064693504a1e38cff3c4
BLAKE2b-256 baa9772d5c8ba4116c3b78a3d121c8e6b468d40f35931dcfbd5bbb13555b768b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page