Vision-based obstacle avoidance in autonomous mode

Hello guys, I am trying to develop new capabilities for ROV by my own( Raspberry PI 3 + pihawk2.4.8 ), such as vision-based obstacle avoidance.
The basic idea is like, reference to drones, in autonomous mode ROV will follow a series of pre-planned waypoints, it will adjust it’s waypoint to avoid collision when it recognize the obstacle by depth camera.

The problems are:

  1. Is the depth camera available in underwater environment( let’s suppose ROV drive in clear water like swimming pool)? I heard about the infrared light peforms badly and the camera is really expensive.
  2. Is one camera enough? In my plan the ROV should recognize a object( like humanbeing, fishes ) besides get depth information of obstacle.
  3. Where can I custom obstacle avoidance algorithm if I get the depth information successfully? In Raspberry PI or pixhawk? Can anybody show me the specific position of code file? It seems like I need to use these information to re-planned local waypoints.

I’ ve tried to find these answers in the Interent but get nothing, and I’m a new guy in ROV developments. Thank you very much for your help!

Hi @Alex001, welcome to the forum :slight_smile:

To follow waypoints the vehicle needs a position estimate, which requires some form of positioning sensor.

You’ll likely need to use a stereo camera for this, and get the depth from the stereo difference. The camera itself can be inside an enclosure, so doesn’t necessarily need to have its own waterproofing.

There’s a thread here about OAK cameras, which may be of interest.

That depends what approach you’re taking. A stereo camera has (at least) two cameras. If you’re doing your own stereo differencing then that could be two separate cameras, or you could have a package that includes the cameras and does the differencing for you.

Object detection requires some form of classification model. It may be possible to run that on the Raspberry Pi at low framerates and resolutions, but that kind of functionality is also possible on an OAK camera. I’d recommend avoiding excessive processing on the Raspberry Pi, because it could overheat and end up throttling the performance of the vehicle operation components.

ArduPilot has support for this kind of thing, although I don’t believe it has been transferred to ArduSub yet.

hey there i hope you are doing good, how is the update on your vision based obstacle avoidance in autonomous mode and can you please share the code that you have implemented for your auv.
Thank you
best regards,