72e2928d 8685 4e66 89e8 764c7fdaabf2

The Software...

By Dermot Tynan, over 9 years ago.

I've been asked recently, about the software platforms used on board Beoga Beag. This seems as good a time as any, to talk about the various layers. As mentioned previously, the lower layer is a custom board, running an ATmega8 Atmel processor. The software (Igor and Otto) is custom-written in C for the boat.

Ff058aa1 1b99 461b b831 65302ffb16de

Five Degrees of Wrong.

By Dermot Tynan, over 9 years ago.

So, as I mentioned, the virtual boat was too eager to tack. If you're dead downwind of the mark, and you set off on a starboard tack, within a metre of being on the left-hand side of the course, the other tack is favoured.

I added code that essentially stated "unless the other tack is at least five degrees better than the existing one, ignore it." So, if I'm at 44 degrees TWA and the other tack is better by a degree (-43 say), stay where you are. This works quite nicely. If you look at the plotted course, it shows the boat sailing nice upwind legs, to the waypoint. As Henry would say, "it's sailing up the ladder."

Bb5f2f18 a3aa 4c7e 80e0 798706ee2f0c

Polar Curves

By Dermot Tynan, over 9 years ago.

Even before a boat is built, the designers can predict how fast it will go at various sail angles. Using this information, they can make modifications to the hull to suit the type of sailing. For example, if an around-the-world race looks like it will see a lot of downwind sailing, it's possible to optimise the downwind performance, and run test simulations with the boat, before ever committing to fibreglass.

The standard mechanism for displaying this information is a polar curve. Because the boat should sail at the same speed on either tack, only one side is shown. Essentially, a polar curve allows the designer (and the boat owner) to predict the hull speed for a particular true wind angle and strength. In the example above (courtesy of SailOnline.org), you'll notice that the boats fastest speed is at a true wind angle of about 120 degrees. In the case of a 30 knot breeze (the red line), the boat should get over nine knots through the water. At TWA's of twenty degrees and less, the boat will stop, regardless of the wind speed.

82e49275 6cb2 49d3 8cfd 1abf907aeea9

To tack, or not to tack, that is the question...

By Dermot Tynan, over 9 years ago.

Looking at the upper-level navigation software introduces some particularly interesting questions. The low-level software will keep the boat on a TWA, or true wind angle. Technically, it's an apparent wind angle, but that's ok.

The upper level has to decide what is the best TWA. To do this, it has the current position of the boat and the position of the next waypoint. It also knows the current TWA and the compass heading. Without bogging down in the maths, it can compute the distance and bearing to the next waypoint using something called a Haversin algorithm. Given the current TWA and the heading, it can determine the wind direction. We can compute the VMG or "velocity made good" for each new heading possibility, based on the predicted Polar (more on that anon). So, we can see that a particular heading is the best course to get us as fast as possible to the next mark. All of this is standard stuff, and is used on sailboat race courses every day.

2493889a 7fd0 4e06 9481 cbee86eb6ad5

Igor and Otto

By Dermot Tynan, over 9 years ago.

The Kalopa motor control board was designed as a general-purpose Atmel board with ancillary electronics for a wide variety of purposes. It includes two H-Bridge motor controllers, driven by two 16 bit PWM outputs. You can exchange one of the motor controllers for an 8-channel servo controller, also using one of the PWM outputs. It has a standard RS232 port with an RJ45 connector on the end. There is a MAX232 to convert logic levels to proper RS232 voltages. If you want to use radio control, you can instead populate the board with an R5-434 radio receiver. It will listen for data on 434MHz and feed it to the Atmel. The processor itself is the bog-standard Atmel ATmega8 with 8k of code and about 512 bytes of RAM.