-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generating the unit vectors image from the intrinsic data stored on the O3D device #227
Comments
I don't have an answer to your primary question off the top of my head; let me dig in and get back to you. In the meantime is your goal to minimize network utilization (by not needing to transfer the UVEC image array on each frame) or storage (not needing to keep a copy of the unit vectors around in memory)? If network, you could always create the |
Actually I just noticed that your sample code is ROS based. Are you using the Implementation: https://github.com/ifm/ifm3d-ros/blob/36850c79b987985b45132f86a2b615da6913924e/src/camera_nodelet.cpp#L540 |
Hey @GreNait do we have any official application notes describing how to derive the unit vectors from the calibration information? |
Awesome, thanks for the quick reply!
Very good point! and yes that's what I do currently to minimize the network overhead.
My goals are:
|
Cool, glad that was useful. Your point is understood -- let me circle back internally and see if we have any documentation (already) on the computation of unit vectors. If not it might be a good candidate to put a sample together for, like we did for image rectification. There's also this issue floating around on our ROS driver that I haven't gotten to...would this be useful? If so I'll consider this to be another vote in favor of doing that work sooner. |
Thanks!
I ended up implementing something along these lines. I'll try to submit a PR if that's ok with you. |
Hey @flajolet -- sorry for the delay on this topic. Here's an example jupyter notebook demonstrating the process of computing the unit vectors (and then on to the cartesian data) from the camera's intrinsics parameters. Tested on an O3D303. |
Thank you so much, this is very helpful! |
Glad it's helpful. By the way, while working on that document I also saw errors on the order of 1e-3 in my computed unit vectors versus the values read from the camera. But, as you can see when projecting back to cartesian, this error doesn't seem to be enough to make a significant difference. Might just be standard floating point precision stuff. I'm going to close this, feel free to re-open or create a new issue as needed. |
…s-rgbinfov1-tofinfov4-tofinfov3' into 'main' Fixed typo in RGBInfoV1, TOFInfoV4 and TOFInfoV3: extrisic_optic_to_user -> extrinsic_optic_to_user Closes #227 See merge request syntron/support/csr/ifm3d/ifm3d!274
…s-rgbinfov1-tofinfov4-tofinfov3' into 'main' Fixed typo in RGBInfoV1, TOFInfoV4 and TOFInfoV3: extrisic_optic_to_user -> extrinsic_optic_to_user Closes #227 See merge request syntron/support/csr/ifm3d/ifm3d!274
Hello,
( I am using an O3D device with firmware version 1.30.5309)
I have gone through all the documentation I could find on the intrinsic calibration stored on the device (this github issue was particularly useful #108) but I still cannot find an answer to the following question:
How can I reconstruct the unit vector image from the intrinsic data stored on the device?
The goal being to record only this more compact representation of data and regenerate the unit vector image representation as needed.
I have tried many things and I am getting close but there is still a small different between the unit vector image I generate from the intrinsics data (well more specifically what is referred to as the "inverse" intrinsic calibration in this repository) and the unit vectors reported by the device.
Here is how far I've got so far:
InverseIntrinsics
functionExtrinsics()
function to express the unit vectors I generate in the ifm frame (the unit vectors are reported in this frame if I understood correctly this unit test correctly).Given that, I use the following python snippet to generate the unit vector image:
The coordinates unit vectors I get differ from the original on average by ~
0.001
and at most by0.002
.The text was updated successfully, but these errors were encountered: