Comments (6)
This is a somewhat tricky issue. The behavior of rs_wait_for_frames(...) is to block until a coherent frameset is available. However, there are also a class of hardware errors which prevent further streaming and which are only portably detectable by the fact that new frames stop arriving over the UVC connection, so rs_wait_for_frames(...) is also responsible for detecting this scenario and raising an error in that case.
The timing and synchronization code is due for a bit of an overhaul, though, and if there's interest, we could add a second method (rs_check_for_frames(...), perhaps?) with a user specifiable timeout and a return value to indicate if new data is available.
As an aside, if you have a use case that seems to be frequently triggering the timeout, please open it as a second issue, and we'll see if we can do something to improve the reliability of streaming for that use case.
from librealsense.
I thought it might be tricky with multiple streams from multiple devices (/dev/videoX) etc.
I was mostly worried about while(true) loops in wait_all_streams consuming CPU core looping, either until next frame (15-30 ms) or in error condition until 5 second timeout, but it seems not that bad - I suppose thanks to the atomics in triple_buffer.
BTW are the sensors (RGB/Depth) in F200/R200 hardware synchronized? Either by sharing pixel clock or exposure timestamped to a common HW timer? I see something related in stream_buffer::frame::timestamp so I was hopeful that the cameras have proper timing, not like Kinect with two separate free running sensors.
from librealsense.
Both F200 and R200 have internal sync mechanism to trigger the sensors on a common clock. These are exposed to software via frame-counters, and we provide matched frame sets in librealsense. The SR300 has a revised timing architecture (via frame metadata in the UVC protocol) that provides additional timing information, and we'll expose that as a feature when SR300 reaches general availability.
from librealsense.
Awesome, that's proper camera engineering right there :) If only these cameras had GPIO trigger in/out to synchronize other things as well (think IMU, robot's odometry etc).
from librealsense.
๐ for trigger I/O (or at least for a hint on where to solder :-)
from librealsense.
Trigger IO would be awesome; please?
from librealsense.
Related Issues (20)
- Announcement: RealSense SDK version 2.55.1 now available HOT 3
- 90 degree turn HOT 3
- How can I get an object's location coordinates with simple python code from D435i? HOT 3
- Some D455 not woring as slave in sync system HOT 13
- Left and Right RGB Images HOT 3
- How to use API to get internal and external parameters for depth map and color map alignment๏ผ HOT 2
- can I get depthmap from recorded bag file (left / right IR images) by using SDK? HOT 7
- USB 3 Hub bandwidth and power requirement for depth and tracking task
- How to map outdoor environment using realsense D455 camera HOT 4
- linux, using d435i in pycharm, possible usb issues HOT 3
- modprobe: FATAL: Module videodev is in use HOT 7
- How do i install Pyrealsense2-aarch64 into my Raspberry pi 4 8Gb version HOT 13
- Shallow depth information at edge of objects HOT 9
- D435i Low Framerate when using 2 or more USB-Cameras HOT 4
- Problem D345i HOT 4
- Process Killed RealSense SDK Mac M2 HOT 10
- I am working with Intel Realsense Lidar l515 camera. And after installing the Realsense Viewer on Win 10, it doesn't see my camera, with the next issue outputs: context.cpp:129 - Found 0 RealSense devices (0xfe requested & 0xff from device-mask in settings) HOT 8
- pyrealsense2 no device found HOT 10
- IntelRealsense Python error: RuntimeError: Frame didn't arrive within 5000 HOT 2
- ModuleNotFoundError: No module named 'pyrealsense2.pyrealsense2' on Ubuntu HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from librealsense.