Skip to content

Femto Mega I: SOFTWARE_TRIGGERING still streams periodically (default ~33ms) instead of one-shot frames per software trigger (ROS 2 Jazzy, Ubuntu 24.04) #178

Description

@prozis-x

## System Environment

  • Hardware Info:

    • CPU architecture: x86_64 (dpkg: amd64)
    • CPU model: Intel® Core™ Ultra 7 155H
    • Memory size: 32GB
    • GPU model:
      • Intel Meteor Lake-P [Intel Graphics] (integrated)
      • NVIDIA RTX 1000 Ada Generation Laptop GPU (discrete)
  • Ubuntu Version: Ubuntu 24.04.3 LTS (Noble)

  • ROS Version: ROS 2 Jazzy

    • ros-jazzy-ros2cli: 0.32.6-1noble.20251025.083450
    • RMW: rmw_fastrtps_cpp
  • Camera Model: Orbbec Femto Mega I

  • Firmware Version: v2.0.4

  • Branch: v2-main

  • Commit:

## Description

I am trying to use an Orbbec Femto Mega I camera in true "software trigger" mode using OrbbecSDK_ROS2 (v2.7.6) with ROS 2 Jazzy on Ubuntu 24.04.3.

Goal:
I want the camera to behave like in OrbbecViewer when Software Trigger is enabled:

  • The stream can be opened, but NO frames are produced/published automatically.
  • A frame should only be captured/published when I explicitly send a software trigger (one-shot).
  • I want exactly 1 frame per trigger (frames_per_trigger = 1).
    This is important to avoid continuous streaming (bandwidth/CPU usage) and to synchronize acquisition with my own application logic.

What I configured (intended):

  • sync_mode: "SOFTWARE_TRIGGERING"
  • software_trigger_enabled: true
  • frames_per_trigger: 1

Observed behavior:
Even with SOFTWARE_TRIGGERING enabled, the camera/driver keeps publishing frames continuously based on a periodic parameter (software trigger period).

  • If I do not specify a period (comment/remove the period parameter in YAML), the driver still behaves as if a default period is applied (≈33 ms, ~30 FPS).
  • If I set a period value explicitly, it streams continuously at that period.
    In other words, in software trigger mode the driver still behaves as "periodic triggering" instead of true "trigger-on-demand".

Expected behavior:

  • In SOFTWARE_TRIGGERING mode, the camera should publish 0 FPS until a trigger is issued.
  • Each trigger should produce exactly frames_per_trigger frames (here: 1).
  • This should replicate OrbbecViewer’s "Manual Trigger / Trigger Once" behavior.

Questions / Request:

  1. Is true one-shot software trigger supported for Femto Mega I in OrbbecSDK_ROS2?
  2. If yes, how can I fully disable periodic publishing so that frames are only produced when an explicit trigger is sent?
  3. Is there a ROS 2 service/topic/API equivalent to OrbbecViewer “Trigger Once”? If so, what is the recommended usage?
  4. If the current behavior (periodic streaming even in SOFTWARE_TRIGGERING) is intended, can you clarify the design and whether one-shot trigger can be added/exposed?

Thanks in advance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions