Skip to content
Skip to content
All examples

Legacy example · C++ · Version 1.0.0

ROS2 VB1940 (Eagle) Camera

AuthorsHoloscan SDK Team (NVIDIA)
Supported platformsx86_64, aarch64
LanguageC++
Version1.0.0
CompatibilityHSDK 3.0
Contribution levelLevel 1 · Very high-quality code
SourceHoloHub

Legacy HoloHub application

This application comes from HoloHub and was last tested with Holoscan SDK (HSDK) 3.0. It runs with the HoloHub CLI, ./holohub.

Overview

This unified VB1940 (Eagle) Camera application demonstrates advanced usage with real camera hardware, containing both publisher and subscriber components in a single structure. The application shows how to:

  • Capture images from a VB1940 (Eagle) camera using Holoscan (Publisher mode)
  • Process camera data through a complete pipeline
  • Publish processed images to ROS2 topics for visualization or further processing
  • Subscribe to and visualize camera streams (Subscriber mode)

The application uses modes to run either the publisher or subscriber component, with both C++ implementations organized under a unified cpp/ directory.

Important: This application requires access to NVIDIA's internal hololink repository and VB1940 camera hardware.

File Structure

applications/holoscan_ros2/vb1940/
├── CMakeLists.txt          # Top-level build configuration
├── README.md               # This file
└── cpp/                    # C++ implementation
    ├── CMakeLists.txt      # C++ build configuration
    ├── metadata.json       # Application metadata with modes
    ├── vb1940_publisher.cpp    # Publisher implementation
    └── vb1940_subscriber.cpp   # Subscriber implementation

Note: This structure combines the previously separate holoscan_ros2_vb1940_publisher and holoscan_ros2_vb1940_subscriber applications.

Prerequisites

  • NVIDIA Holoscan SDK v3.0 or later
  • ROS2 Jazzy (all examples and Dockerfiles are tested with Jazzy; other distributions may work but are not tested)
  • Docker (with NVIDIA Container Toolkit)
  • NVIDIA GPU drivers (suitable for your hardware and Holoscan SDK)
  • Git and SSH access (for VB1940 examples requiring hololink repository)

For VB1940 camera examples, you'll also need:

  • Access to NVIDIA's internal hololink repository
  • VB1940 (Eagle) camera hardware
  • Proper network configuration for camera communication

Network Setup

Before running VB1940 examples, ensure proper network configuration:

  • Default Hololink board IP: 192.168.0.2
  • Ensure your host can reach the Hololink board
  • Verify IBV (InfiniBand Verbs) device configuration if using custom hardware

Building the Application

Build the unified VB1940 camera application:

./holohub build vb1940 --build-args="--ssh default"

Note: The --build-args="--ssh default" is required for accessing the internal hololink repository during build.

Application Modes

The vb1940 application uses modes to handle the publisher and subscriber components. You can list available modes using:

./holohub modes vb1940 --language cpp

Available modes:

  • publisher: Captures and publishes VB1940 camera images (default mode)
  • subscriber: Receives and visualizes camera images

Running the Application

Publisher Mode (vb1940_publisher.cpp)

Captures images from a VB1940 (Eagle) camera using Holoscan and publishes to ROS2:

  • Processes images through a complete pipeline:
  • CSI to Bayer conversion
  • Image processing
  • Bayer demosaicing
  • Publishes processed images to ROS2 topic vb1940/image
  • Supports various camera modes and configurations

Usage:

# Run publisher (default mode)
./holohub run vb1940 [options]
# Or explicitly specify publisher mode:
./holohub run vb1940 publisher [options]

Publisher Options:

  • --camera-mode: VB1940 (Eagle) mode (default: 2560x1984 30FPS)
  • --frame-limit: Exit after publishing specified number of frames
  • --hololink: IP address of Hololink board (default: 192.168.0.2)
  • --ibv-name: IBV device to use
  • --ibv-port: Port number of IBV device (default: 1)

Subscriber Mode (vb1940_subscriber.cpp)

Subscribes to camera images from ROS2 and visualizes them:

  • Subscribes to the vb1940/image ROS2 topic
  • Receives and processes the images
  • Visualizes images using Holoviz
  • Supports headless and fullscreen modes

Usage:

./holohub run vb1940 subscriber [options]

Subscriber Options:

  • --headless: Run in headless mode
  • --fullscreen: Run in fullscreen mode

Additional Resources

Documentation

Hardware

  • Applications Overview: ../ - Background on ROS2 and Holoscan integration
  • Simple Examples: ../pubsub/ - Basic publisher/subscriber communication
  • Bridge Library: ../../../operators/holoscan_ros2/ - Bridge implementation and headers

Community and Support

All examples