Skip to content

Holoscan ROS2 VB1940 (Eagle) Camera#

Authors: Holoscan SDK Team (NVIDIA)
Supported platforms: x86_64, aarch64
Language: C++
Last modified: September 2, 2025
Latest version: 1.0.0
Minimum Holoscan SDK version: 3.0
Tested Holoscan SDK versions: 3.0
Contribution metric: Level 1 - Highly Reliable

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#