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#
Related Examples#
- Applications Overview:
../
- Background on ROS2 and Holoscan integration - Simple Examples:
../pubsub/
- Basic publisher/subscriber communication - Bridge Library:
../../../operators/holoscan_ros2/
- Bridge implementation and headers