BuoyBots - self position holding buoys for RC sail boat racing

Hi all - newbie to Ardupilot - but 50+ years as a sailor in all kinds of off shore racing yachts, and most recently builder of IOM racing RC yachts.

This marks one of my first attempts to reach into the “techy” community looking for a method to establish sailing courses using drone type technology -i.e. “Buoybots”. ive seen some work that Randy Mackay has published, and in collaboration with a good friend of mine we are putting together a copy of bogie board based solution, as proof of concept. Where we are headed, and where we need help, is that we would like the ability, from a map displayed on a device of some kind, to launch six buoybots which then position themselves in loiter mode on a rectangular course for say 4 to 6 hours at a time, and come home after a days racing to change batteries. No more old blokes geting in/out of dingies on launch / retrieve missions … and of course if the breeze changes angle during the course of the day, we want the ability from the screen, to re-align the position of the six buoys relative to the new breeze angle.

Where to start ?!


@Roberto_Navoni is working on exactly this thing at the moment I believe

1 Like

thankyou James - i look forward to hearing from Roberto. I’m not all that familaiar with how this system works … will Roberto be able to see my post and possibly respond ?

I’m the friend, to whom Andrew refers, who has a little electronics experience, but no experience with flight controllers/drones, and is working on this. Our first test, just to drive the prototype and have it loiter, got about a 40% mark…driving wasn’t bad but loiter was…well, amusing.
The boogie board has 2 * T200 thrusters and skid steers. FC: Matek F405-SE; GPS: Matek M8Q-5883.
The skid steering behaviour is odd in that it is asymmetric. While driving forward, let’s say with 50% throttle, I would expect port steering input to increase, perhaps linearly with steering signal, a parameter s such that starboard throttle is (50% + s) and port throttle is (50% - s). This appears to be the case when turning to port. But when steering to starboard, the signals seem to be s and -s (on opposite motors) rather than being modifications to the base throttle. Any suggestions?
A couple of seconds after being put in loiter mode, the USV just “lost the plot”…as evidenced in this video: https://drive.google.com/file/d/1xNd9D5NFTXqGjmRWyYmYGVrbeQXKAtIH/view?usp=sharing.
I’ve attached a parameter file, in case that helps with diagnosis.
Params20210417.param (16.3 KB)


Wouldn’t you want to use an Omni type arrangement for something like this?

1 Like

Omni would give more flexibility and control. But restricting to two motors would be cheaper. We may like a few fleets - which would only be possible if unit cost is sufficiently low. Drift from station will generally be downwind. With a small weather vane on the USV, it will point head to wind so should require very little steering to loiter…hopefully rather less steering than the circles it did yesterday!

1 Like

And Omni means single screw yes ?

Omni: omni directional. >2 props. eg: https://ardupilot.org/rover/docs/rover-motor-and-servo-connections.html

Not directly related with your issue but since I have also the F405-WSE and the M8Q-5883 gps/compass, do you calibrated it successfully? My M8Q-5883 shows on compass section in the mission planner but the calibration reaches 100% and then start over and over…

Joao, When I calibrated it last week it seemed OK. Now I can’t get the Onboard Mag Calibration (from Mission Planner) to do anything. Even so, I think it is reading OK as it shows north quite accurately and mx, my and mz respond appropriately. But I’m glad you asked - having checked, I see that I have the compass/GPS mounted backwards in the vessel. That could explain bad loiter behaviour.

Thanks for your feedback.
Indeed I also had calibrated it once 100% OK now it is not calibrating in mission planner. Mission planner does not do anything when I rotate the m8q-5883 but it does change the mag heading when I rotate the board. The gps works brilliantly even indoors and the i2c address appears on the mission planner from the matek m8q-5883 but it can complete a full calibration (always starting over the green bar).
Glad to have helped you with my question :wink:

If you have the arming checks off so the boat automatically arms, you might not be able to disarm in order to calibrate the compass. That is the process I usually have to do for compass calibration- enable the arming checks, make sure the boat is disarmed, then it works to calibrate with mission planner.

Thanks for your reply.
I currently have the arming checks on. Whenever I tried to calibrate the compass it was always with the board disarmed. Tried also with and without external battery as I thought that running only the USB cable may cause the issue but not…

1 Like

I disarm the FC and calibrate the compass. It reports it as being successful. I then reboot and use an RC aux channel to initiate arming and get the message PreArm: Compass not calibrated in Mission Plannner.

I have suceeded calibrating the compass. I did put the FC and the matek M8Q-5883 taped securely in a small board with both arrows facing the same way. Then I try to calibrate, first time went to 100% and return to zero but I continue doing the calibration and it reached again 100% but this time it said successfully at the end…
I then also tried what you said and in my case there is no “PreArm: Compass not calibrated” in Mission Planner, no message.

The compass prearm calibration problem seems to have been fixed - not sure how.
I’m now reading logs trying to understand why, when put into loiter mode, after a few seconds the USV goes to quite high speed with fixed steering. This documentation, https://ardupilot.org/rover/docs/loiter-mode.html, indicates that the target return speed to the station is max(0, min (WP_SPEED, 0.5*(position error-LOIT_RADIUS))) where I think the 0.5 is in fact LOIT_SPEED_GAIN. Can I see, or derive, the positional and direction error easily from the log? It’s a fairly tortuous process to find GPS coordinates at loiter commencement and when the throttle kicks in then calculate their separation - but on the case I’ve investigated, that distance is 2m which is the value of LOIT_RADIUS. Trouble is, the USV had not moved. So, if GPS only is being used (seems unlikely) that would explain the motor commencement. But not the speed - when close to the LOIT_RADIUS, throttle should be low. Further investigation reveals that it increases with GPS separation as it should - but the vessel is not moving.
It’s on a stand.
The GPS frequency in the log is 5Hz and clearly dominates, at that time scale, any IMU input.

Hi all, excellent discussion. I am seeing the same behavior on my vehicle. Boogie board, 2x T200 thrusters, PX4 autopilot. Works great in auto mode. In loiter it is ok for 10 seconds roughly then completely loses the plot.

@rmackay9 has been out testing a number of autonomous buoys recently: I suspect there’ll be a YouTube video and perhaps some details in a few days.


Yahoo ! Thanks for that …

Hi @AndrewRW,

I think it might be good to try and following the Tuning Process Instruction wiki page and also if you could include an onboard log (aka Dataflash log) next time that would be great too.

The crazy loiter behaviour could be a few things but it’s unlikely to be the compass or GPS that is the problem. It’s more likely that the RC inputs and servo outputs are reversed. Some things to check:

  • When doing RC calibration, ensure all the “reversed” checkboxes are unchecked and confirm that the green bars (assuming you’re using Misison Planner) move in the same direction as the physical sticks (with the exception of Pitch)? If not then you should change the reversed parameter in the transmitter.
  • Test the motor direction using the “Motor Test” screen in MP. This vehicle is a “skid-steering” vehicle so you’ll use “Test Motor C” and “Test Motor D” buttons for left and right respectively.

Re the omni boat suggestion, it is a good suggestion except that the Rover firmware doesn’t support using lateral thrusters in any mode except Manual. So they wouldn’t actually be used in Loiter, Auto, etc. I hope to make an enhancement so they are used sometime this year.