Tested my new twin engine boat setup to skid steer yesterday. When given some forward throttle but no “rudder” the boat wanted to veer off course. I interpret this to be due to slightly more frictional drag on one of the drivetrains. While I will obviously try to reduce the drag its unlikely that I will be able to completely remove the disparity, therefore I need to counter the drag by uping the revs on the motor. How can I do this? For your information, this is a hybrid boat in that I also have steerable kort nozzles steering the water streaming off the props.
Have you tried steering mode yet? If so , did it track properly? I don’t know if there is anything in the code that can handle your mechanical problem. This is a common problem in most twin screw boats. You can trim the boat with the nozzles but the trim may be good at one speed range but not at another.
I also have this issue with one of my rovers. It is quite common for a brushed DC motor that are intended for operation in one direction, to to operate in reverse but have different reverse speed. This can be fixed by altering the position of the brushes relative to the magnetic poles but it is often not practical. In my case, the two drive motors are mirrored so turn in opposite directions in normal forward/reverse use and exhibit the problem you describe. For us tinkerers that like to re-purpose such motors to use in rovers, it would be handy to have some parameters that would provide at least a linear scale factor for each motor/direction. In my case, I have made some changes to the code to accommodate this by applying a simple scale factor to the output depending on direction in AP_MotorsUGV::output_skid_steering().
Similar to the other advice here but…
Acro mode (like steering) will also likely drive in a straight line, at least once it’s tuned.
It might help to adjust the SERVOx_TRIM values and/or THR_MIN so that the two motors start spinning at the same throttle level. Adjusting SERVOx_MIN/MAX could also help maybe… if the top speed of one motor is different than the other then adjusting min/max to make them equal could help. how to measure whether they’re spinning at the same speed is difficult though.
We are hoping to add motor encoder for control in the near-ish future (it’s already used for estimating position on Rovers). of course, I’ve never seen a boat thrusted with a motor encoder included.