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

@prozis-x

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions