AIS basic collision avoidance

There’s a lot to say on the topic. Your sensors setup is only seen on very large passenger boats, which justify the extreme costs of the equipment and computing systems required.
I have been involved in a few R&D projects on marine ASV collision avoidance systems and my original idea was exactly a blended Radar + forward looking sonar + AIS; however my supervisor turned it down due to the excessive costs (just the forward looking sonar is priced $3k+) and useless data produced.
In fact, being the radar only 1 or 2m above the sea level, readings would be excessively noisy.
I also checked with most radar producers and, even when removing all unused parts and replacing the chassis with thin fiberglass, the weight is still above 15Kg and 50cm diameter, and I’m pretty sure until last year there was no solid state small radar sold off the shelf (only military grade SAR radars unavailable for universities and individuals).

So to sum up, a simple (thermal) camera, terrain/bathymetry map and AIS receiver are more than enough to build up a reliable collision avoidance system for a small to medium sized boat/sailboat.

Going to my implementation, I though about having a very basic MAVLink message with MMSI id, positional data, heading and speed info and vessel dimensions, in order to create a vector field with predicted routes and perform a basic path planning.
You can check my current implementation here:

  1. ArduPilot AP_AIS class
  2. companion computer monocular camera-based obstacle detection

I have done a AIS ardupilot implementation, currently it is reporting only but it paves the way for avoidance in the future. It receives NMEA AIVDM messages over serial. This makes it compatible with most AIS receivers for yachts. I am using a NASA Marine AIS engine 3 for testing. Would be great to get some more testing!

2 Likes

This is the test setup. AIS receiver is connected to 12v and a big (by drone standards) VHF antenna. The NMEA output is connected to a rs232 level shiftier to convert the signal levels to something the flight controller can receive. The output of the level shiftier is connected to the receive pin on the flight controller.

So far I have received boats from about 6km out, bearing in mind that I have no direct line of sight to the sea I think that is quite respectable.

4 Likes

a little teaser of what is coming soon, thanks to @Michael_Oborne for adding Mission Planner support!

3 Likes

What does this mean? Boat knows where it can go or not?

At the moment it just means that ais vessels will show up in mission planner. Once we are sure that is working OK it is trivial to include AIS as one of the things ArduPilot can avoid, so we can keep a minimum distance between other boats or pause our mission until one has passed.

Essentially we will get this functionality with AIS vessels:
https://ardupilot.org/copter/docs/common-ads-b-receiver.html#enabling-manned-vehicle-avoidance

That’s awesome. Sorry for totally guessing it wrong.

Hey Peter,

I’m up for doing some testing with your AIS solution if you are still interested! We have at least one vessel in the water almost every week, and have some tech sprints scheduled as soon as the weather breaks a bit here in Florida. I’ll be near Port Canaveral and Sebastian Inlet, so we should see some commercial and other AIS traffic. AIS has been slow in adoption for inshore vessels around here…

We do have Radar to augment if we can get the graphics translated into vector and distances to the targets. Been working on that a while as well. Can’t wait for the NMEA OneNet if they ever figure that out.

MakoNoseIn Small|690x460

Cool boat!.

My PR branch has gotten rather conflicted. I have been meaning to get back to it but have been very busy. I will try and resurrect it as some point soon so you can try it.

Hi Peter,

we are interested in AIS collision avoidance with ardupilot. Please give us more details how to download code for AIS dispaly in Mission Planner

Thanks

Hi,

You will have to build from this branch, https://github.com/ArduPilot/ardupilot/pull/13839 or I can build for you If you tell me which flight controller you need.

It is not yet avoidance, display only. It may or may not work in the MP beta, I have not tested it recently.

I need to get back to that PR and finish it off. Hopefully soon.

Hi Peter,

Really interested to know where this is up to.

We have a small, Pixhawk enabled ASV and would love to implement basic collision avoidance.

Sorry for the lack up updates, AIS support is now in the stable rover release and has a Wiki page here:

https://ardupilot.org/rover/docs/common-ais.html

It is also possible to enable for other vehicles using the custom build server.

Still no avoidance implementation, but it should be relatively easy to hook into the existing code paths used by ADSB.

1 Like

Thank you Peter,

We’ll have a look.

@iampete Hi Pete,

Long time since this topic was picked up. I am working on a university project to refurbish an old outdated ASV with off-the-shelf and open-source components. I have a dAISy+2 AIS receiver connected to the Pixhawk and can see the vessels with no problem. However, I was wondering if vessel avoidance was achieved or not. If so could you give me a hand or point me in the right direction?

Many thanks
Jordan Williams

No avoidance has not been implemented yet.

Broadly you would just push each vessel in to the object avoidance database. Like we do for proximity sensors for example:

However, you might have to mess about with timeouts and extrapolating positions and things like that.

1 Like