Need some guidance on a traction control system for an rc boat

Ok I have played a little with my arduino Franzis. Nothing spectacular but I have grasped a few basics. Never being the person to shy away from a problem. I am looking to make a sort of traction control system with a friend for an RC boat. Similar to a quadracopter needing the 9dof as the 6dof doesnt have the compass so yaw drifts.

So I have got the 10DOF board probably need the Arduino mega as it has more outputs etc.

The boat is a 60inch carbon fiber deep v mono hull running a nitro engine race prepped with a fully enclosed radio box perfect to get all the equipment in.

The controls need to be as follows:

during pitch changes (eg hitting a wave, hard acceleration/deceleration etc) the stinger (the leg that holds the prop shaft - in ours has servo adjustment for 2 degrees +/-) needs to move. so during pitch changes the stinger will be moved by the servo.

during roll the trim tabs (4 metal plates out the back all individually adjustable via servos need to compensate the roll - think plane control surfaces)

The yaw will be controlled from land via the transmitter for steering - however a small degree of input for course correction in straight line situations if you hit a wave and move off course. e.g. if as a controller the input is -20 to +20 for me to steer the boat. The ardunio can make -3 to +3 course correction. So any input greater than 3 would over ride the arduino and allow me to steer the boat.

What I am trying to achieve is a closed loop arduino system (think its closed loop) with 5 servo adjustment and the 6th being steering correction.

Lastly I would like to achieve a point as well that the trim tabs would work in harmony with the stinger. so if excessive pitch up or down occurs then the trim tabs can act as pitch control and bring the noise down or up as well.

Basically I hope after all the development that I can tweek it in our boat so that no matter at sea, riding another boats wake, in rough lake water or perfect calm smooth water. The boat keeps its self flat (in plane) and can power along faster than human input trying to balance all the controls via a transmitter.

First part is apart from the 10dof board what ardunio will I need and what other board components will I need.

Thanks all.

I know nothing about these boats but my gut feeling is that you have a lot of real time stuff happening there so I would at least start with the Arduino that has the most grunt (at present that means the Due) and start brushing up on PID algorithms.


Grab a Multiwii compatible board, the Multiwii code, the Arduino IDE, and start hacking. What you're buying is essentially an Arduino + gyro, accelerometer, and magnetometer, and then the board already has all the connections to sit between your receiver and servos. It's hard to beat for the price, and all you have left to do (aside from the software -- a big aside) is mount it in your boat.

The code is pretty well documented. config.h has your hardware definitions (the micro, gyro, etc. chips you're using). What I'd suggest is using the "Airplane" type in config.h and then hacking through Output.cpp (mixTable() function) to configure the mixing for your servos.

So after more research.

Found this Arduino 9DOF ArduIMU Controller ATmega328 (ACCEL/MAG/GYRO)

Add a FTDI break out board.

And using the razor AHRS.

This would give me a numerical output of values for all the sensors.

Now I have to program those values into a real time motion of servos.

I was thinking to use a 6 way relay board for the servos with an external power source.

Need some advice on how to use the 3rd channel to activate the on/off of the system (when in the off position to fail safe to set positions).

Then some sample code for using the data from the sensors to convert it to servo motion.

All help would be greatly appreciated.


The Ardupilot project is really aimed at flying vehicles (although it sounds as if your boat bay not be far off that!) but they have some nice Arduino-compatible boards with integrated IMU that seems reasonably priced. They also have open source software to handle reading all the sensor inputs and merging the different inputs to work out what's actually happening. It seems that the project is designed on the assumption that there will be different chassis with different types of actuator so the fact that you have trim tabs etc instead of lift motors or ailerons is probably not that big a deal in the scheme of things.

I suspect that latency will be your biggest challenge - the boats I've seen respond much faster than aircraft so the controllers need to be correspondingly faster. Perhaps a simple reactive gyro based system would actually work better, just to damp everything down to the point that the pilot can deal with it?

I was thinking to use a 6 way relay board for the servos with an external power source.

Servos (typical pulse-controlled ones) are not controlled by relays, but by pulses from your controller.

Look at Servo Information on the ArduinoInfo.Info WIKI HERE:

Look at Servo specs, especially torque and time-to-move a certain number of degrees. Speed info:
---------------------( COPY )---------------------
Speed is a measurement of the time it takes the servo to rotate a certain number of degrees. This has been standardized in most specifications to 60 degrees; In other words, the time it takes the servo wheel to turn 60°. The smaller the number, the faster the servo is. For example a 0.12 sec/60° servo rating means it will take 0.12 seconds to rotate the servo arm or wheel 60°. This would be twice as fast as a standard speed servo that is rated in the 0.24 sec/60° range. A RC helicopter tail rotor specific servo will have speeds as fast as 0.06 sec/60°.
-----------------( END COPY )----------------------

Resetting the trim tabs on my (homebuilt) inboard power boat I have to stop, reach way over the transom, pull pins, rotate the struts, put pins back in. You obviously need faster response. You need to do some mechanical engineering like find the force needed to move the trim tabs at speed, the mechanical coupling and rations, and the servo torque needed.

I think the stinger probably has less force needed to move it than the trim tabs. Maybe.

The overall dynamics of the hull are complex. a 60 inch hull is not tiny, but the shape (tunnel hull?) and aerodynamics are something I have no idea how to model.

I know that these 16 foot +- hulls move rapidly in roll at over 110 MPH on rough water. Their aerodynamics help hold them down. Underway they are riding on the prop and the sharp tunnel hull edges, with the driver on the trim controls keeping them from becoming airborne. A big bounce in pitch at 100+ MPH can cause them to "Blow Over" (Pitch 180 degrees + up and over). I've talked to drivers who have Blown Over and it's a heart-stopping moment with Nothing You Can Do. It's a very complex combination of hydrodynamics, aerodynamics and gravity you are dealing with!

I'd really suggest "Stepwise Refinement".. Get your sensors working and understand their response time. Get the mechanical / mechatronics design of the servos/actuators understood and maybe prototype that. Look at good videos of this boat at speed and try to figure out the rates of change in roll and pitch. Model how the controls action on the stinger and trim tabs works.


I don't think you want any mechanical relays with the shock and vibration of that environment. I have had a ride in a special 2-seat version of an F1 boat, and it's constant +- G force, and then 4 to 5 G's sideways when you go into a 90 degree turn at 110 MPH. You need your helmet attached at the top to keep from damaging your neck. This is way more side force than an F1 car can produce before sliding. See my ride here: F1 Boat Racing in China

Please keep us up on how this goes. Photos, Photos!

I would query the term "traction control", since to my knowledge boats don't have
wheels/tyres! Attitude control or stability control seem more appropriate. Sounds
challenging and fun. Yes, possibly worth the extra power of the Due, but it might be
worth carefully checking which sensors have Due library support and are 3.3V compatible
before deciding - a Mega has lots of pins and if you stick to 16 bit fixed-point arithmetic has
a fair amount of oomph. The Due will be best with 32 bit fixed point (no floating point
hardware either), and has much better multiply-and-add performance which is important
for most digital signal processing.

Finding a waterproof box that fits the Arduino board is possibly another deciding factor!

Hi guys thanks for all the information.

I guess first I need to clear up a few things as I wanted to first get the idea of what I was trying to achieve down first.

The stinger and trim tabs are already servo adjustable versions. They have been used in boats before but not automatically adjusting. The work with a cam setup so a 9kg servo easily pushes and pulls them.

The observation is correct that in boats a small degree of motion makes a huge difference. So probably my 3 and 7 degree is too much. but I was working on the limits of what the motion was.

AS for fabricating boxes etc we build all custom rc boats for racing and leasure and the owner who is 6 years younger (24) of the model shop we are working to create. is UK no1 and world no.5 rc boating champion.

The relay board was to allow the switching of power from a single lipo battery as with 9kg servos 3.3v or 5v wont be enough. So I thought that this would help.

Hoppy King has so many boards and stuff at such a reasonable price that I dont see hardware as a problem. Even the stinger and trim tabs are off the shelf.

as for the term traction control. Yes you are right its not really a traction matter. so stability control would be a better wording (my motorsport days kicked in) however with incorrect stinger angle and other factors you can cause a prop to cavitate and loose traction.

We know the boats go as they are and as drivers we can handle them and make them win races.

What we want to do is try and make a computer do all the hard work and react quicker over a greater level of control surfaces to give a stable craft. Leaving the driver to throttle down and steer hopefully making it possible for us to lead by even greater no. of laps. LOL

I am currently in discussions with a friend who does robotics to see if he has any ideas on code. I saw a great video of a plate and ball on youtube that used the 6dof to control 6 servos and it works perfectly. Holding the steel ball steady no matter what and the center point can be adjusted plus numerous other tricks.

Thanks all

Hi, You have a good handle on the mechanical stuff.

So the relays would only be used to apply power to the relays? Why do you need to cycle power on and off for the relays? Do the Stinger and Trim tab servos need power applied always when running (probably?).

There is a lot of shock and vibration, especially running over wakes etc. Do you have any data on the actual dynamics?

I would suggest that you get all the sensors installed and set up to record data and do some runs to get acceleration / shock numbers. Then when you see the attitude changes that are a problem, figure out how to quickly apply corrections.

Can you point to a photo of the boat or a similar one? Is there significant aerodynamic downforce at speed? Can these boats "Blow Over" at speed?

An interesting question is how the downward-correcting force of gravity plus aerodynamic downforce changes with attitude and how fast. Of course that will change with speed. Do you have airspeed and speed over ground data in real time? Wow...

I'm jealous!

I've been following the YouTube channel of a jet engine engineer who has been supporting a jet powered race boat, and it seems that some of these fast boats can literally stall the prop if they try to accelerate too fast (in other words, water flow separates from the blades and it stops producing thrust). Is that ever an issue on these models?

some of these fast boats can literally stall the prop

This is called Cavitation, and it does seem like Stall of an airfoil. The high-performance props look like this:

And they can be quickly changed like this:

The boat we want to try it out on is a mono hull with a 33000 rpm nitro. Which hopefully will be ready to roll out of the workshop in a few weeks. Thank should give us some real data to work on.

Then we can set it up for the cat with twin turbine jets which we have in the shop (customers) but we have a carbon one coming for the shop.

As for props. its all trial and error really. I have been playing with props on a fast electric boat and its funny how a slight difference makes a huge difference. material, balance, pitch etc.

I had 3 props close to the same pitch with very little difference. one was brass, one ali and one steel. all balance. The brass prop was the best and was straight away power and got the boat plaining on the last cm of the boat and prop. Props which are too small can give good acceleration depending on the motor rpm. but lack top end.

A high rpm motor with lots of torque can over spin a small prop and it takes time for it to grip the water and actually wind up. But a too large prop can have too much resistance and send the boat nose high but case excessive abuse to the motor.

Its such a fine line.

I think the next course of action is to get something setup and place a arduino in a boat with the 6dof sensor pack to record data.

would you recommend an x bee to transmit the data to a laptop? Or just record to an SD card?

Aerodynamics and fluid dynamics is such a mine field topic. All I can say is the boats hold there own in competition and its the reactions of the diver throttling and steering that keep them stable. When we setup the boats we make sure they are balance and they handle really well.

Of course no boat is the same. So each boat would need a flat water test with data so that when the sysem is configured it knows the characteristics. That is why it would also be nice to have if possible a selector switch to allow for small, medium and high degrees of movement.

eg - flat water small, race on flat water maybe medium and on rough water high.
This is the design of the test boat with fixed tabs and fixed stinger. This is the design of the turbine boat.

the servo controlled stinger

individual controlled trim tabs Gas Powered RC Boat Indivijual adjustable trim tabs - YouTube

hope this came out not good with forum adding links

thanks all

Hopefully someone with direct experience with the 6 Degrees of freedom sensors can help here.

I would suggest the SD card. More reliable, and you can write a lot of data faster that the radio link, probably.

Are there any rules in the competitions you support? How about active canard down-force in front. Opposite of trim tabs maybe..