Strong Jello effect on OAK-1 mounted on drone
I'm trying to use OAK-1 on a drone. The vibrations on the drone are leading to a very strong Jello effect. I understand that rolling shutter sensors are susceptible to Jello effect when subjected to vibrations.
Is there anything in the camera settings that may be worsening it? Something that aggravates the rolling shutter effect? I'm using preview output at 640x360 resolution while maintaining the aspect ratio.
Also, I tried to compensate by reducing ExposureTime to 1000 us. However, using this setting is forcing me to set the ISO. It will be great if I could control Exposure time only, while ISO is adjusted automatically to keep the scene well-lit (as far as possible).
The camera module having a VCM-adjustable lens (for focus control) makes this worse, as the lens is spring-loaded and may vibrate out of phase with the camera sensor die. Setting manual focus (instead of autofocus) will likely not help.
Any way you could mount the OAK camera on a vibration-absorbing bracket?
It will be great if I could control Exposure time only, while ISO is adjusted automatically to keep the scene well-lit (as far as possible).
That's a good point, will have to check if any way we could instruct 3A/auto-exposure to work in this mode. Maybe we could specify an exposure range with both limits set equal at init, but I'm afraid it also requires a custom camera tuning blob (with the exposure range hardcoded).
Thanks for the quick response.
I will try once with Autofocus enabled (maybe lens control will hold it against vibrations).
I've tried using a vibration-absorbing bracket, however, the camera cable is too stiff. I'll try replacing it with softer cables.
Is there any way (even with physical mod) to disable the spring mechanism of the lens?
Adding a sample image to give you an idea of what is happening. The scene is collection of ArUco tags with straight edges.

Thanks for the image. It shows that the lens vibration is part of the issue: besides the waving, some areas are out-of-focus. Autofocus won't help here (also as the vibrations are higher frequency than the FPS rate, at which autofocus runs). And the VCM doesn't have a feedback about the actual lens position.
Trying to physically modify the camera module carries a significant risk of damaging it.
Something that may help is to drive the VCM at max force: colorCamera.setManualFocus(255) - that would be for macro focusing, and the lens is pushed outwards. And have some mechanical assembly to press around the lens holder, to counteract its movement and keep it at the desired focus position.
Does the autofocus run at rate of FPS (video stream) or Shutter speed (1/Exposure time)? If we can drive the camera to capture at higher FPS, will autofocus adjust more frequently? Currently, I am capturing at 10 FPS only. If I could run camera at 120 FPS, and if autofocus adjusts at 120 FPS, I might get better results, correct?
The statistics are collected per frame, then 3A runs again and computes a new lens position that gets applied. But still, higher FPS may not help, as the vibrations mess up with the captured frames, and could also lead to auto-focus taking wrong decisions.
One extra thing that could potentially help is to reduce the MIPI readout time, at the moment only 2-lane configs are in use, and we should also expose full 4-lane configs. This will definitely reduce the rolling shutter artifacts, but on the lens vibrations may not be much effective.
I used a vibration-isolation mounting, and that nearly removed all Jello effect. Not that this is a final solution, but I can live with it for now.
Reducing rolling shutter effect is certainly a good idea.
Thanks for your help @alex-luxonis
@dhirajdhule Hi mate, if you don't mind me asking, what vibration-isolation mounting did you end up using? Something you made yourself or something that can be purchased?