obstacle avoidance with Ardurover + AIS

Hello everyone,

I am currently working on Ardurover 4.6.0.
I have successfully connected a Class B AIS to my surface boat, and it works. I can see all the ships around me.
To do this, I connected my AIS to my Raspberry Pi, which is connected to my Pixhawk. Then, I created a script to convert the NMEA data sent by the AIS into MAVLink AIS_VESSEL messages. The goal is to display the other AIS signals received on Mission Planner.
I’m wondering if anyone has already set up an AIS-based collision avoidance system with Rover, using a companion computer to steer the vehicle away from AIS targets in AUTO or GUIDED mode ?

Thanks in advance for your help!

AIS does feed into the avoidance database, so it should all work. However, the AIS lib will not receive MAVLink messages, currently if only supports native NMEA 0183.

Hi All.

I’m also busy testing AIS avoidance using a rover SITL sim and a live AIS feed.

I have data coming through and appearing on the map. This will be used in an electric surface vehicle. I’m struggling with getting avoidance working properly.

This is me playing in the harbor with SITL and a live feed, running straight through another vessel…
Any suggestions for params that would suite this use case?

Working towards open ocean avoidance.

Thanks

What version are you using and how have you set it up?

Hi Pete

I’m running ArduPilot-4.6.0-beta1 for testing.

I have a live AIS receiver in the lab that I forward to SITL using socat.

Params I’ve been fiddling with:

AIS_TYPE 1
MAV1_ADSB 5
SERIAL5_PROTOCOL 40
SERIAL5_BAUD 38
FRAME_CLASS 2
AVOID_ENABLE 7
OA_TYPE 1
OA_BR_LOOKAHEAD 100
OA_MARGIN_MAX 50
OA_DB_OUTPUT 3
ADSB_LIST_MAX 50

also

module load ais
ais set timeout 600
ais set threat_radius 200
adsb set threat_radius 500
adsb set timeout 600
adsb set threat_radius 500

I’m new to Ardupilot, the sheer volume of parameters is a bit overwhelming, navigating waypoints in the harbour in SITL was a big win for me…

For AIS avoidance you will need at least 4.7.0, were on beta 7 currently.

Params look mostly OK. For the avoidance data base I would also set:

OA_DB_EXPIRE to 500 +. AIS (particularly for anchored vessel) has quite slow update rates so you need the large timeout to make sure we don’t forget about a vessel too soon.

ADSB_LIST_MAX and AVOID_ENABLE are not needed.

Brilliant thanks Pete! A few niggles with missing some targets, and some param massaging needed, but we’re avoiding ships!