stereolabs / zed-ros2-wrapper

ROS 2 wrapper for the ZED SDK
https://www.stereolabs.com/docs/ros2/
Apache License 2.0
161 stars 165 forks source link

Unable to get a constant publishing rate on the integrated IMU. #249

Closed nicolaslauzon closed 2 weeks ago

nicolaslauzon commented 2 months ago

Preliminary Checks

Description

I wish to have a constant publishing rate for the IMU on my zedx camera. However it is not. It seems to be better with higher sensors_pub_rate but it is never constant. Here is a figure of the different settings I tried compared to a reference imu in yellow. image

I played with these parameters when experimenting on getting a constant rate.

 sensors:
        sensors_image_sync: false # Synchronize Sensors messages with latest published video/depth message
        sensors_pub_rate: 200.0 # frequency of publishing of sensors data. MAX: 400. - MIN: grab rate
        qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
        qos_depth: 1 # Queue size if using KEEP_LAST
        qos_reliability: 2 # '1': RELIABLE - '2': BEST_EFFORT -
        qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE

Steps to Reproduce

Steps

  1. I ran the zed_node with the following launchfile and config. I verified and my parameters are getting applied properly.
  2. I recorded the data in a rosbag and analysed the delta between two imu messages using the timestamp in their header using a python script.

I used this snipped to analyse my data

def plot_imu(color, filename, label):
    df = pd.read_csv(filename)

    t = df["timestamp"]

    delta = []
    for i in range(1, len(t)-1):
        delta.append((t[i] - t[i-1])/ 1.0e9)

    plt.scatter(np.arange(0, len(delta)), delta, label=label, c=color)

I used this launchfile

import os

from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
from ament_index_python.packages import get_package_share_directory

from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode
from launch_ros.actions import Node

def generate_launch_description():

    # ZED config
    zed_config_path = os.path.join(
                get_package_share_directory('package'), 
                'config', 
                'config.yaml'
            )

    # ZED Wrapper node
    zed_wrapper_node = Node(
        package='zed_wrapper',
        namespace="",
        executable='zed_wrapper',
        name="zed_node",
        output='screen',
        parameters=[
            zed_config_path,
            {
                'pos_tracking.publish_tf': True,
                'pos_tracking.publish_map_tf': True,
                'sensors.publish_imu_tf': True,
            },
        ]
    )

    # Image Processing
    image_proc_container = ComposableNodeContainer(
            name='image_proc_container',
            namespace='',
            package='rclcpp_components',
            executable='component_container',
            composable_node_descriptions=[
                ComposableNode(
                    package='image_proc',
                    plugin='image_proc::ResizeNode',
                    name='resize_node',
                    remappings=[
                        ('image', '/zed_node/rgb_gray/image_rect_gray'),
                        ('camera_info', '/zed_node/rgb_gray/camera_info'),
                        ('resize', '/zed_node/rgb/resized')
                    ],
                    parameters=[
                        {"scale_width": 0.5},
                        {"scale_height": 0.5}
                    ]
                )
            ],
            output='screen',
    )

    return LaunchDescription([
        zed_wrapper_node,
        image_proc_container
    ])

And this config file

/**:
    ros__parameters:

        use_sim_time: false # Set to `true` only if there is a publisher for the simulated clock to the `/clock` topic

        simulation:
            sim_enabled: false # Set to `true` to enable the simulation mode and connect to a simulation server
            sim_address: '127.0.0.1' # The connection address of the simulation server. See the documentation of the supported simulation plugins for more information.
            sim_port: 30000 # The connection port of the simulation server. See the documentation of the supported simulation plugins for more information.

        general:
            camera_model: "zedx"
            camera_name: "zedx" # usually overwritten by launch file
            grab_resolution: 'HD1080' # The native camera grab resolution. 'HD1200', 'HD1080', 'SVGA', 'AUTO'
            grab_frame_rate: 30 # ZED SDK internal grabbing rate (HD1200/HD1080: 60, 30, 15 - SVGA: 120, 60, 30, 15)
            pub_resolution: 'NATIVE' # The resolution used for output. 'NATIVE' to use the same `general.grab_resolution` - `CUSTOM` to apply the `general.pub_downscale_factor` downscale factory to reduce bandwidth in transmission
            pub_downscale_factor: 2.0 # rescale factor used to rescale image before publishing when 'pub_resolution' is 'CUSTOM'
            pub_frame_rate: 30.0 # frequency of publishing of visual images and depth images
            camera_flip: false
            camera_timeout_sec: 5
            camera_max_reconnect: 5
            serial_number: 0 # usually overwritten by launch file
            gpu_id: -1
            region_of_interest: '[]' # A polygon defining the ROI where the ZED SDK perform the processing ignoring the rest. Coordinates must be normalized to '1.0' to be resolution independent.
            svo_file: "" # usually overwritten by launch file
            svo_loop: false # Enable loop mode when using an SVO as input source
            svo_realtime: true # if true the SVO will be played trying to respect the original framerate eventually skipping frames, otherwise every frame will be processed respecting the `pub_frame_rate` setting
            sdk_verbose: 1

        video:
            exposure_time: 3000 # Defines the real exposure time in microseconds. Recommended to control manual exposure (instead of `video.exposure` setting)
            auto_exposure_time_range_min: 500 # Defines the minimum range of exposure auto control in micro seconds
            auto_exposure_time_range_max: 2500 # Defines the maximum range of exposure auto control in micro seconds
            exposure_compensation: 50 # Defines the Exposure-target compensation made after auto exposure. Reduces the overall illumination target by factor of F-stops. Values range is [0 - 100]. Default value is 50, i.e. no compensation applied
            analog_gain: 1255 # Defines the real analog gain (sensor) in mDB. Range [1000-16000]. Recommended to control manual sensor gain (instead of `video.gain` setting)
            auto_analog_gain_range_min: 1000 # Defines the minimum range of sensor gain in automatic control
            auto_analog_gain_range_max: 16000 # Defines the maximum range of sensor gain in automatic control
            digital_gain: 1 # Defines the real digital gain (ISP) as a factor. Range [1-256]. Recommended to control manual ISP gain (instead of `video.gain` setting)
            auto_digital_gain_range_min: 1 # Defines the minimum range of digital ISP gain in automatic control
            auto_digital_gain_range_max: 256 # Defines the maximum range of digital ISP gain in automatic control
            denoising: 50 # Defines the level of denoising applied on both left and right images. Range [0-100]

            brightness: 4 # [DYNAMIC] Not available for ZED X/ZED X Mini
            contrast: 4 # [DYNAMIC] Not available for ZED X/ZED X Mini
            hue: 0 # [DYNAMIC] Not available for ZED X/ZED X Mini
            saturation: 4 # [DYNAMIC]
            sharpness: 4 # [DYNAMIC]
            gamma: 8 # [DYNAMIC]
            auto_exposure_gain: true # [DYNAMIC]
            exposure: 80 # [DYNAMIC]
            gain: 80 # [DYNAMIC]
            auto_whitebalance: true # [DYNAMIC]
            whitebalance_temperature: 42 # [DYNAMIC] - [28,65] works only if `auto_whitebalance` is false
            qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
            qos_depth: 1 # Queue size if using KEEP_LAST
            qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT -
            qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE

        depth:
            depth_mode: 'NONE' # Matches the ZED SDK setting: 'NONE', 'PERFORMANCE', 'QUALITY', 'ULTRA', 'NEURAL' - Note: if 'NONE' all the modules that requires depth extraction are disabled by default (Pos. Tracking, Obj. Detection, Mapping, ...)
            min_depth: 0.2 # Min: 0.2, Max: 3.0
            max_depth: 10.0 # Max: 40.0
            depth_stabilization: 1 # Forces positional tracking to start if major than 0 - Range: [0,100]
            openni_depth_mode: false # 'false': 32bit float [meters], 'true': 16bit unsigned int [millimeters]
            point_cloud_freq: 10.0 # [DYNAMIC] - frequency of the pointcloud publishing (equal or less to `grab_frame_rate` value)
            depth_confidence: 50 # [DYNAMIC]
            depth_texture_conf: 100 # [DYNAMIC]
            remove_saturated_areas: true # [DYNAMIC]
            qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
            qos_depth: 1 # Queue size if using KEEP_LAST
            qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT -
            qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE 

        pos_tracking:
            pos_tracking_enabled: false # True to enable positional tracking from start            
            imu_fusion: true # enable/disable IMU fusion. When set to false, only the optical odometry will be used.
            publish_tf: true # [usually overwritten by launch file] publish `odom -> base_link` TF
            publish_map_tf: true # [usually overwritten by launch file] publish `map -> odom` TF
            publish_imu_tf: true # [usually overwritten by launch file] enable/disable the IMU TF broadcasting
            base_frame: "base_link" # usually overwritten by launch file
            map_frame: "map"
            odometry_frame: "odom"
            area_memory_db_path: ""
            area_memory: true # Enable to detect loop closure
            depth_min_range: 0.0 # Set this value for removing fixed zones of the robot in the FoV of the camerafrom the visual odometry evaluation
            set_as_static: false # If 'true' the camera will be static and not move in the environment
            set_gravity_as_origin: true # If 'true' align the positional tracking world to imu gravity measurement. Keep the yaw from the user initial pose.
            floor_alignment: false # Enable to automatically calculate camera/floor offset
            initial_base_pose: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] # Initial position of the `base_frame` in the map -> [X, Y, Z, R, P, Y]
            init_odom_with_first_valid_pose: true # Enable to initialize the odometry with the first valid pose
            path_pub_rate: 2.0 # [DYNAMIC] - Camera trajectory publishing frequency
            path_max_count: -1 # use '-1' for unlimited path size
            two_d_mode: false # Force navigation on a plane. If true the Z value will be fixed to "fixed_z_value", roll and pitch to zero
            fixed_z_value: 0.00 # Value to be used for Z coordinate if `two_d_mode` is true
            transform_time_offset: 0.0 # The value added to the timestamp of `map->odom` and `odom->base_link`` transform being generated
            qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
            qos_depth: 1 # Queue size if using KEEP_LAST
            qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT
            qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE

        gnss_fusion:
            gnss_fusion_enabled: false # fuse 'sensor_msg/NavSatFix' message information into pose data
            gnss_fix_topic: "/gps/fix" # Name of the GNSS topic of type NavSatFix to subscribe [Default: "/gps/fix"]
            gnss_init_distance: 5.0 # The minimum distance traveled by the robot required to initilize the GNSS fusion
            gnss_zero_altitude: false # Set to `true` to ignore GNSS altitude information
            gnss_frame: "gnss_link" # [usually overwritten by launch file] The TF frame of the GNSS sensor
            publish_utm_tf: true # Publish `utm` -> `map` TF
            broadcast_utm_transform_as_parent_frame: false # if 'true' publish `utm` -> `map` TF, otherwise `map` -> `utm`

        mapping:
            mapping_enabled: false # True to enable mapping and fused point cloud pubblication
            resolution: 0.05 # maps resolution in meters [min: 0.01f - max: 0.2f]
            max_mapping_range: 5.0 # maximum depth range while mapping in meters (-1 for automatic calculation) [2.0, 20.0]
            fused_pointcloud_freq: 1.0 # frequency of the publishing of the fused colored point cloud
            clicked_point_topic: '/clicked_point' # Topic published by Rviz when a point of the cloud is clicked. Used for plane detection
            pd_max_distance_threshold: 0.15 # Plane detection: controls the spread of plane by checking the position difference.
            pd_normal_similarity_threshold:  15.0 # Plane detection: controls the spread of plane by checking the angle difference.
            qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
            qos_depth: 1 # Queue size if using KEEP_LAST
            qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT -
            qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE

        sensors:
            sensors_image_sync: false # Synchronize Sensors messages with latest published video/depth message
            sensors_pub_rate: 200.0 # frequency of publishing of sensors data. MAX: 400. - MIN: grab rate
            qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
            qos_depth: 1 # Queue size if using KEEP_LAST
            qos_reliability: 2 # '1': RELIABLE - '2': BEST_EFFORT -
            qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE

        object_detection:
            od_enabled: false # True to enable Object Detection
            model: 'MULTI_CLASS_BOX_MEDIUM' # 'MULTI_CLASS_BOX_FAST', 'MULTI_CLASS_BOX_MEDIUM', 'MULTI_CLASS_BOX_ACCURATE', 'PERSON_HEAD_BOX_FAST', 'PERSON_HEAD_BOX_ACCURATE'
            allow_reduced_precision_inference: true # Allow inference to run at a lower precision to improve runtime and memory usage
            max_range: 20.0 # [m] Defines a upper depth range for detections
            confidence_threshold: 50.0 # [DYNAMIC] - Minimum value of the detection confidence of an object [0,99]
            prediction_timeout: 0.5 # During this time [sec], the object will have OK state even if it is not detected. Set this parameter to 0 to disable SDK predictions            
            filtering_mode: 1 # '0': NONE - '1': NMS3D - '2': NMS3D_PER_CLASS
            mc_people: false # [DYNAMIC] - Enable/disable the detection of persons for 'MULTI_CLASS_X' models
            mc_vehicle: true # [DYNAMIC] - Enable/disable the detection of vehicles for 'MULTI_CLASS_X' models
            mc_bag: true # [DYNAMIC] - Enable/disable the detection of bags for 'MULTI_CLASS_X' models
            mc_animal: true # [DYNAMIC] - Enable/disable the detection of animals for 'MULTI_CLASS_X' models
            mc_electronics: true # [DYNAMIC] - Enable/disable the detection of electronic devices for 'MULTI_CLASS_X' models
            mc_fruit_vegetable: true # [DYNAMIC] - Enable/disable the detection of fruits and vegetables for 'MULTI_CLASS_X' models
            mc_sport: true # [DYNAMIC] - Enable/disable the detection of sport-related objects for 'MULTI_CLASS_X' models            
            qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
            qos_depth: 1 # Queue size if using KEEP_LAST
            qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT
            qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE

        body_tracking:
            bt_enabled: false # True to enable Body Tracking
            model: 'HUMAN_BODY_MEDIUM' # 'HUMAN_BODY_FAST', 'HUMAN_BODY_MEDIUM', 'HUMAN_BODY_ACCURATE'
            body_format: 'BODY_38' # 'BODY_18','BODY_34','BODY_38','BODY_70'
            allow_reduced_precision_inference: false # Allow inference to run at a lower precision to improve runtime and memory usage
            max_range: 20.0 # [m] Defines a upper depth range for detections
            body_kp_selection: 'FULL' # 'FULL', 'UPPER_BODY'
            enable_body_fitting: false # Defines if the body fitting will be applied
            enable_tracking: true # Defines if the object detection will track objects across images flow
            prediction_timeout_s: 0.5 # During this time [sec], the skeleton will have OK state even if it is not detected. Set this parameter to 0 to disable SDK predictions
            confidence_threshold: 50.0 # [DYNAMIC] - Minimum value of the detection confidence of skeleton key points [0,99]
            minimum_keypoints_threshold: 5 # [DYNAMIC] - Minimum number of skeleton key points to be detected for a valid skeleton
            qos_history: 1 # '1': KEEP_LAST - '2': KEEP_ALL
            qos_depth: 1 # Queue size if using KEEP_LAST
            qos_reliability: 1 # '1': RELIABLE - '2': BEST_EFFORT
            qos_durability: 2 # '1': TRANSIENT_LOCAL - '2': VOLATILE

        advanced: # WARNING: do not modify unless you are confident of what you are doing
        # Reference documentation: https://man7.org/linux/man-pages/man7/sched.7.html
            thread_sched_policy: 'SCHED_BATCH' # 'SCHED_OTHER', 'SCHED_BATCH', 'SCHED_FIFO', 'SCHED_RR' - NOTE: 'SCHED_FIFO' and 'SCHED_RR' require 'sudo'
            thread_grab_priority: 50 # ONLY with 'SCHED_FIFO' and 'SCHED_RR' - [1 (LOW) z-> 99 (HIGH)] - NOTE: 'sudo' required
            thread_sensor_priority: 70 # ONLY with 'SCHED_FIFO' and 'SCHED_RR' - [1 (LOW) z-> 99 (HIGH)] - NOTE: 'sudo' required
            thread_pointcloud_priority: 60 # ONLY with 'SCHED_FIFO' and 'SCHED_RR' - [1 (LOW) z-> 99 (HIGH)] - NOTE: 'sudo' required

        debug:
            debug_common: false
            debug_sim: false
            debug_video_depth: false
            debug_camera_controls: false
            debug_point_cloud: false
            debug_positional_tracking: false
            debug_gnss: false
            debug_sensors: true
            debug_mapping : false
            debug_terrain_mapping : false
            debug_object_detection : false
            debug_body_tracking : false
            debug_advanced: false

Expected Result

I expect that setting a 400Hz rate in the config would make the IMU publish at a constant rate of 400Hz.

Actual Result

It seems to skip a publish once in a while causing it to, half the time, take twice as long to publish. Here is the debug log displaying this inconsistency. Sometimes we get No new sensors data and this makes it skip the publish.

[zed_wrapper-1] [DEBUG] [1724178672.084237995] [zed_node]: Sensors thread started
[zed_wrapper-1] [DEBUG] [1724178672.084344620] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.084506574] [zed_node]: Sensors callback: Grab data and setup timestamps
[zed_wrapper-1] [DEBUG] [1724178672.084604879] [zed_node]: SENSOR LAST PERIOD: 1.72418e+09 sec @5.79986e-10 Hz
[zed_wrapper-1] [DEBUG] [1724178672.084633264] [zed_node]: IMU MEAN freq: 0.168853
[zed_wrapper-1] [DEBUG] [1724178672.084822354] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.085608316] [zed_node]: SENSOR LAST PERIOD: 0.00242424 sec @412.5 Hz
[zed_wrapper-1] [DEBUG] [1724178672.085641052] [zed_node]: IMU MEAN freq: 0.337648
[zed_wrapper-1] [DEBUG] [1724178672.087384050] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.087440114] [zed_node]: SENSOR LAST PERIOD: 0.00242376 sec @412.582 Hz
[zed_wrapper-1] [DEBUG] [1724178672.087465139] [zed_node]: IMU MEAN freq: 0.506316
[zed_wrapper-1] [DEBUG] [1724178672.089953937] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.090048915] [zed_node]: SENSOR LAST PERIOD: 0.002424 sec @412.541 Hz
[zed_wrapper-1] [DEBUG] [1724178672.090074323] [zed_node]: IMU MEAN freq: 0.674791
[zed_wrapper-1] [DEBUG] [1724178672.092528273] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.092626290] [zed_node]: No new sensors data
[zed_wrapper-1] [DEBUG] [1724178672.095229234] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.095284051] [zed_node]: No new sensors data
[zed_wrapper-1] [DEBUG] [1724178672.097816370] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.097901715] [zed_node]: No new sensors data
[zed_wrapper-1] [DEBUG] [1724178672.100903448] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.103669850] [zed_node]: SENSOR LAST PERIOD: 0.0114801 sec @87.1073 Hz
[zed_wrapper-1] [DEBUG] [1724178672.104361475] [zed_node]: IMU MEAN freq: 0.841477
[zed_wrapper-1] [DEBUG] [1724178672.105308974] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.105394927] [zed_node]: SENSOR LAST PERIOD: 0.00287008 sec @348.422 Hz
[zed_wrapper-1] [DEBUG] [1724178672.105417840] [zed_node]: IMU MEAN freq: 1.00957
[zed_wrapper-1] [DEBUG] [1724178672.108717080] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.108926427] [zed_node]: SENSOR LAST PERIOD: 0.00286984 sec @348.451 Hz
[zed_wrapper-1] [DEBUG] [1724178672.108959259] [zed_node]: IMU MEAN freq: 1.17714
[zed_wrapper-1] [DEBUG] [1724178672.111282712] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.111355897] [zed_node]: No new sensors data
[zed_wrapper-1] [DEBUG] [1724178672.113834935] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.113878648] [zed_node]: No new sensors data
[zed_wrapper-1] [DEBUG] [1724178672.116392247] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.116467512] [zed_node]: SENSOR LAST PERIOD: 0.00528216 sec @189.316 Hz
[zed_wrapper-1] [DEBUG] [1724178672.116493400] [zed_node]: IMU MEAN freq: 1.3436
[zed_wrapper-1] [DEBUG] [1724178672.118946742] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.119040535] [zed_node]: SENSOR LAST PERIOD: 0.00528169 sec @189.333 Hz
[zed_wrapper-1] [DEBUG] [1724178672.119067448] [zed_node]: IMU MEAN freq: 1.51089
[zed_wrapper-1] [DEBUG] [1724178672.121854714] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.122002556] [zed_node]: SENSOR LAST PERIOD: 0.00528216 sec @189.316 Hz
[zed_wrapper-1] [DEBUG] [1724178672.122034140] [zed_node]: IMU MEAN freq: 1.67793
[zed_wrapper-1] [DEBUG] [1724178672.124409850] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.124497307] [zed_node]: No new sensors data
[zed_wrapper-1] [DEBUG] [1724178672.126965145] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.127037146] [zed_node]: No new sensors data
[zed_wrapper-1] [DEBUG] [1724178672.129582969] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.129719547] [zed_node]: No new sensors data
[zed_wrapper-1] [DEBUG] [1724178672.132140601] [zed_node]: Sensors callback: counting subscribers
[zed_wrapper-1] [DEBUG] [1724178672.132246394] [zed_node]: SENSOR LAST PERIOD: 0.00487018 sec @205.331 Hz

ZED Camera model

ZED

Environment

Nvidia Jetson AGX Orin
ZED SDK : Humble-v4.0.8
ROS2 Foxy
Jetpack 5.1.3

Anything else?

No response

github-actions[bot] commented 1 month ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment otherwise it will be automatically closed in 5 days

boxanm commented 1 month ago

Hey, can we please have a response on this issue? Is the uncertainty on the rate data rate an internal characteristic of the camera, or is it related to this driver?

Myzhar commented 1 month ago

This will be fixed at the SDK level with the release v4.2

boxanm commented 1 month ago

Nice! Do you have a release date for the new SDK version?

Myzhar commented 1 month ago

It's imminent

github-actions[bot] commented 2 weeks ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment otherwise it will be automatically closed in 5 days