Stereo Camera bluerov2

Hi guys,
i bought a Zed 2 camera to mount on my bluerov2 for underwater applications. I also bought from the bluerobotics website an acrylic tube to protect camera from water and pressure. Now i have a doubt: how can i mount the stereocamera to minimize distorsions caused by the tube and the water? I can have a 3d printed support to make keep still the camera.

1 Like

Hi @Angelo99 -
That will be a challenging problem! Checkout this product, recently shared, that may meet your needs.

I’ve seen this product yet but, unfortunately, for my application i need to insert the camera in the tube. I thought to print a support with 3d printer but i don’t know if is better keep the camera in the middle of the tube or with the lens very close to the tube.

If your intention is to look through the clear, curved wall of the tube, I’m afraid that will be very difficult to achieve success with. A calibration of the camera is necessary underwater, and is nigh impossible with the distortions introduced by this curved surface- I’ve tried this and not had success!
If you look through a flat port at the end of the tube you might be able to calibrate, with both lenses the same distance from the flat surface, and this distance minimized…
A dome for each camera is the best solution!

Hi @angelo99,

Sounds like an interesting project! Some years ago I used the ZED stereo camera with a Jetson TX2 mounted in a 4 inch cylindrical enclosure for an underwater mapping experiment. With the camera looking out through the curved wall of the cylinder, I tried to mount it as close to the tube as possible to minimize distortions. With a decent camera calibration this setup was good enough to do visual SLAM for a work-class ROV over fairly long transects (here are the results and a demo-video if you are interested).

I did not have a 3D printer available when I created the experimental setup, so I had to use some plywood craftsmanship to create the mount. I reckon a 3D printed mount is going to fare way better! I would get some M3 threaded rods to fix the camera mount to the flange in one end of the cylinder, and design the mount to get the camera as close to the wall as possible.

It is easier to work with a flat view-port or individual domes for each of the lenses like Tony pointed out, but it is definitely possible to get a decent setup with an acrylic tube as well! If your budget is a bit tight I would give the tube setup a try!

Best of luck
Martin

2 Likes

Hi @markvilar
I was wondering if you can share your experience and technique you used for camera calibration.

The video you shared I believe was using openvslam or orbslam . The youtube’s profile has some additional video material where I believe its been using ZED stereo camera, and output was undistorted and depth estimation with reconstruction of spatial map was decent. I was wondering what was the setup, you had. Thank you

Best

Nurjan

Hi @nurjan14 -

This thread may be useful!

Hi @nurjan14!

I did a couple of calibration experiments in an outdoor saltwater tank we have a NTNU. I printed a checkerboard pattern (25 mm grid cells IIRC) on a A4 paper, laminated it and taped it to an aluminium plate in order to get flat. It is important that the calibration target is relatively flat, as most calibration methods estimate a homography, which is only correct for flat targets / scenes (for more details check out A flexible new technique for camera calibration | IEEE Journals & Magazine | IEEE Xplore ).

For the experiments I suspended the stereo camera in the pool, attached the calibration target to a 3-4 meter long rod, and moved the calibration target in front of the camera while I filmed it. It is important to film the calibration target throughout the field of view (FOV) of the camera in order to get a good estimate of the distortion parameters (tangential and radial). Also try to film the calibration target at different distances. If you have some light sources available I would recommend using it, as good illumination of the calibration target can significantly improve the calibration accuracy. I only used ambient lighting, and I could see quite some differences between experiments with clear sky and clouded conditions, with clear sky being better.

For the calibration algorithm, I used the camera calibration toolbox in Matlab. It is very user-friendly and more robust than OpenCVs calibration methods. I started out with ~50 images that were selected based on quality (clear image and not too much reflections from the calibration target) and with a relatively even distribution throughout the camera FOV. I then ran the calibration algorithm and eliminated images with high re-projection errors (outliers), while trying to maintain images with relatively even FOV distribution. When I was left with somewhere between 10-20 evenly distributed images, I stopped the process and used the acquired calibration parameters. If you are calibrating a stereo camera and you have a good idea of the physical camera extrinsics, you can validate the calibration by check that the estimated extrinsics are close to the physical ones (for a ZED stereo camera this is pretty easy as both sensors are in a common housing and therefore have fixed extrinsics).

Let me know if you have some more questions, and I will try to help.

Best of luck,

Martin

Noting that we recently released the MarineSitu C3 stereo camera on the Reef, which is depth rated and comes pre-calibrated for use in water :slight_smile: