Camera orientation parameter
Our drone camera configuration changes the ribbon cable positions so they do not all exit in the same orientation as the VOXL FLIGHT DECK camera mounting configuration. Our main camera ribbon cable exits on the bottom (vs. the top), the left depth camera (from the front) ribbon cable exits to the right and the right depth camera exits to the left. Where are the parameters set so we can rotate the images for our orientation on VOXL?
90 degree rotations are not supported in cameras (as opposed to horizontal and vertical flipping). However, it seems that the cameras that have 90 degree rotation in your case are the stereo cameras (what you refer to as depth camera, I believe), so it is possible that you don't need to rotate the images and just specify the appropriate extrinsic parameters (translation and rotation of the stereo cameras with respect to each other) and the Depth From Stereo algorithm should take care of it? We have not tried this. The only thing I can think of as down side of doing this is that the memory access could be a bit slower for matching pixels which are close to the same line (instead of reading consecutive pixels in a row, the algorithm will need to hop rows, but I don't know enough specifics about DFS to say whether in fact it will be slower in this configuration).
Alternatively, to fix the stereo camera rotation, you could rotate the images pixel by pixel in software and form two 480x640 images (instead of 640x480). This will incur some cpu overhead, obviously.
As for the 4K camera, can you please confirm which camera is being used? If it is IMX214, we can do 180 degree rotation right in the camera without any cpu overhead.
We are using the standard IMX214 based hires main camera and it is flipped 180 degrees with ribbon exiting from bottom of camera. What is required for you to do the 180 degree rotation in the camera, do I need to return the cameras to you to do this? Regarding the stereo cameras, can you confirm which extrinsic parameters need to be adjusted and where in the code is this done at? Thank you.
In order to flip orientation of IMX214 camera (actually it's a 180 degree rotation), you can do this by editing the camera configuration file:
- edit file
/system/etc/camera/camera_config.xml(make sure to create a backup of the config file first)
<SensorName>imx214</SensorName>- there should be several occurrences.
- this will load a different camera driver, which instructs the camera to flip the image before sending to VOXL
- actually, the default configuration in
camera_config.xmlis flipped/rotated for imx214, as you can see, because the way the camera is built, the image would show up flipped if using
<SensorName>imx214</SensorName>on standard VOXL Flight Deck
For stereo cameras, I would suggest go ahead and try to follow this procedure for calibrating: https://docs.modalai.com/calibrate-cameras/#calibrate-stereo-cameras . This will calibrate the ov7251 camera intrinsic parameters and relative translation + rotation of the two stereo cameras in the pair. Hopefully this succeeds (like I said we have not tried rotating both stereo cameras 90 degrees, but in principle it should work). After that, you will also need to adjust the rotation of the stereo pair with respect to the drone itself, if you want to put the depth points in the correct frame. However, even before doing that last step, you can still check if stereo is working by looking at the resulting point cloud.
- edit file
Also, make sure to reboot VOXL after you change