Comments (7)
FYI @GarrettPlace.
from o3d3xx-ros.
How accurate and granular do you need this to be Shaun? The camera sends back a time stamp (seconds + nanoseconds) for each image chunk header. So, each individual image in your configured PCIC schema will have a stamp from the camera. However, the camera clock will not be synchronized with the host clock. So, for ultimate accuracy and granularity, 1) a homebrew clock sync scheme would need to be implemented by the driver and 2) a stamp for each image type in the image buffer would need to be kept. The latter is necessary to generalize to the cases for when you dynamically change the PCIC schema you are streaming back from the camera yet reusing the same ImageBuffer
.
You are correct in your statement that there is some latency between when the image was actually acquired and how we are stamping it in the ROS code. To get a sense of the calculations you need to contemplate to estimate the true latency, this comment may be helpful.
Realize that since the ROS interface is calling the underlying driver's WaitForFrame
, the latency between when the bytes are received by the host and when they are stamped by the ROS code should be minimal -- albeit, I have not measured it, so cannot comment other than qualitatively at the moment.
from o3d3xx-ros.
I understand 1), does the sensor interface have a way to get the current sensor clock? 2) is a little bit above my head since I haven't dug into the driver details, but I'll take your word for it.
Other camera drivers assume a one frame latency or allow the user to set the latency (via ROS parameter). Would you consider this solution, which I admit is a little bit hacky. The Windows software provides a good estimate of the latency (if you assume one frame).
My use case involves syncing an external 2D camera via the time stamp. I notices that the 2D and 3D images didn't quite match up.
from o3d3xx-ros.
I think I'd be more apt to try to get the time stamp as close to correct as possible. My constraint right now will be finding the time to implement this.
In the meantime, if you wanted to fork and do the ROS parameter thing, I'd be happy to take a look at a diff to see if it is reasonable to mainline (i.e., we can default the behavior to work as it does today, but if you wanted this extra knob to turn for special cases like yours, it is available to you).
from o3d3xx-ros.
We'll having a NTP feature for the upcoming firmware releases. Maybe this can solve your issue @shaun-edwards with the upcoming firmware you'll able to adjust the camera time by an XML-RPC call. Which maybe needs to be repeated in an regular intervall due to the different drifts of the time sources in your system. I have no idea when and how this could be integrated into the ROS driver.
from o3d3xx-ros.
from o3d3xx-ros.
@tpanzarella yes it is intended to be consistent across all cameras. I have to check the details and give some examples. Have to kick out a software release for the 2D cameras first.
from o3d3xx-ros.
Related Issues (20)
- install issues test errors HOT 5
- SWTrigger Service doesn't return error codes HOT 3
- only half of the information from zyx_image HOT 4
- using mask to lower the amount of information to pc HOT 9
- catkin_make run_tests failure HOT 8
- Getting Libo3d3xx on Yocto HOT 5
- Unable to change SymmetryThreshold of Imager HOT 3
- Amplitude image scaling HOT 2
- Problem with nodes while launching ros HOT 4
- Private node handle for topics and services HOT 1
- Doubt on the dataframe HOT 2
- Incorporate filtering at a ROS node/driver level HOT 5
- Compiling o3d3xx-ros HOT 2
- -
- Can't find libopencv_core3.so.3.2 HOT 5
- Where on the physical camera is o3d3xx/camera_link located? HOT 2
- PointCloud<pcl::PointWithRange> range data HOT 3
- IFM 03X101 HOT 1
- crash
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 o3d3xx-ros.