Conversation
- add explain about fps - add sync_mode explain
Co-authored-by: Kazuya Oguma <84025154+KazuyaOguma18@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This pull request adds documentation to the README about FPS configuration and the sync_mode parameter to help users understand frame rate constraints. The changes address issue #97, where a user experienced unexpected FPS behavior (requesting 5 FPS but getting 30 FPS instead) on a Femto Mega camera.
Changes:
- Added explanation that
color_fpscan differ from other FPS values when usingfree_runsync mode - Documented that
depth_fpsandir_fpsmust always be the same - Added documentation for the
sync_modeparameter listing acceptable values
Comments suppressed due to low confidence (1)
README.MD:385
- Missing period at the end of the sentence. All other parameter descriptions in this list end with a period for consistency.
- `sync_mode`: The mode of data synchronization. Acceptable values are `standalone` and `free_run`
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| If you set `sync_mode` to `free_run`, the `color_fps` value can be different from the other values. | ||
| `depth_fps` and `ir_fps` should always be the same. | ||
| - `sync_mode`: The mode of data synchronization. Acceptable values are `standalone` and `free_run` |
There was a problem hiding this comment.
The added documentation about FPS constraints helps address issue #97, but it doesn't fully explain why the FPS settings might not work as expected. The issue mentions that setting color_fps to 5 resulted in 30fps instead.
The documentation should clarify that:
- The sync_mode setting directly affects whether independent FPS settings are honored
- Users experiencing FPS issues should verify their sync_mode setting matches their intended use case
- In modes other than
free_run, the camera hardware enforces synchronized frame rates, which may override user-specified FPS values
This would provide clearer guidance for troubleshooting FPS-related issues.
| If you set `sync_mode` to `free_run`, the `color_fps` value can be different from the other values. | |
| `depth_fps` and `ir_fps` should always be the same. | |
| - `sync_mode`: The mode of data synchronization. Acceptable values are `standalone` and `free_run` | |
| If you set `sync_mode` to `free_run`, the `color_fps` value can be different from the other values and the | |
| camera will try to honor the independently requested FPS values for each enabled stream (subject to the | |
| FPS options that the device actually supports). | |
| In synchronized modes (any mode other than `free_run`), the camera hardware enforces a common frame rate | |
| for the color, depth, and IR streams, and may override or round your requested `*_fps` parameters to a | |
| supported synchronized value. In this case it is expected, for example, that requesting `color_fps:=5` | |
| could still produce a 30 FPS color stream if 30 FPS is the only synchronized rate supported by the device. | |
| `depth_fps` and `ir_fps` should always be the same, because these streams must share the same effective | |
| frame rate when synchronized by the camera hardware. | |
| - `sync_mode`: The mode of data synchronization. Acceptable values are `standalone` and `free_run`. | |
| In `free_run` mode, streams run independently and per-stream `*_fps` settings are applied where supported. | |
| In `standalone` and other synchronized modes, the device selects a common FPS for all active streams, which | |
| can override the user-specified `color_fps`, `depth_fps`, and `ir_fps`. If you observe that your configured | |
| FPS values are not being respected (for example, 5 FPS resulting in an actual 30 FPS stream), first verify | |
| that `sync_mode` is set to the mode that matches your intended use case. |
| - `depth_width`, `depth_height`, `depth_fps`: The resolution and frame rate of the depth stream. | ||
| If you set `sync_mode` to `free_run`, the `color_fps` value can be different from the other values. | ||
| `depth_fps` and `ir_fps` should always be the same. | ||
| - `sync_mode`: The mode of data synchronization. Acceptable values are `standalone` and `free_run` |
There was a problem hiding this comment.
The documentation lists only standalone and free_run as acceptable values for sync_mode, but the code implementation supports seven different modes: free_run, standalone, primary, secondary, secondary_synced, software_triggering, and hardware_triggering.
The codebase shows examples using software_triggering and hardware_triggering modes (e.g., in multi_camera_synced.launch.py), and the SDK header file (ObTypes.h) provides detailed documentation for all seven modes. The documentation should list all supported modes to help users configure multi-device synchronization scenarios properly.
| - `sync_mode`: The mode of data synchronization. Acceptable values are `standalone` and `free_run` | |
| - `sync_mode`: The mode of data synchronization. Acceptable values are `free_run`, `standalone`, `primary`, `secondary`, `secondary_synced`, `software_triggering`, and `hardware_triggering`. |
| If you set `sync_mode` to `free_run`, the `color_fps` value can be different from the other values. | ||
| `depth_fps` and `ir_fps` should always be the same. | ||
| - `sync_mode`: The mode of data synchronization. Acceptable values are `standalone` and `free_run` |
There was a problem hiding this comment.
The explanation about FPS constraints for free_run mode is helpful, but it's incomplete. According to the SDK documentation in ObTypes.h:
- In
free_runmode: Color and Depth can be set to different frame rates - In
standalonemode: Color and Depth should be set to the same frame rates, and they will be synchronized
The current explanation only addresses free_run mode. Consider adding information about standalone mode's FPS requirements as well, and clarify that in modes other than free_run, all streams (color, depth, IR) should use the same FPS value for proper synchronization.
| If you set `sync_mode` to `free_run`, the `color_fps` value can be different from the other values. | |
| `depth_fps` and `ir_fps` should always be the same. | |
| - `sync_mode`: The mode of data synchronization. Acceptable values are `standalone` and `free_run` | |
| If you set `sync_mode` to `free_run`, `color_fps` can be different from `depth_fps` / `ir_fps`. In this mode, color | |
| and depth run independently, but `depth_fps` and `ir_fps` should still be set to the same value to keep depth and IR | |
| synchronized. | |
| In `standalone` mode (and, in general, in any synchronized mode), all active image streams (color, depth, IR) should | |
| use the same FPS value so that they are properly synchronized. | |
| - `sync_mode`: The mode of data synchronization. Acceptable values are `standalone` and `free_run`. In `standalone` | |
| mode, color and depth run at the same FPS and are synchronized. In `free_run` mode, they can run at different FPS and | |
| are not synchronized by the device. |
Closes #97