Servers by jDrones

Three-wheeled rover with skid steering and servo controlled tailwheel

(Sebastian Schürmann) #1


I made a short video of my rover driving a mission with active tailwheel control. Without the servo controlled tailwheel/castor, I never got the rover to drive straight, because every gradient would cause the rear to roll down that gradient and the stabilisation was not strong enough to counter it. Or if I set the PIDs high enough to drive straight, the rover would totally freak out when stopping. The tailwheel control works by feeding the throttle values for the left and right motor into an arduino, which then calculates the tailwheel angles with a little trigonometry and sends out the PWM value to the tailwheel servo. It also tried to use throttle and groundsteering values, because this would make the calculation easier, but each time I setup throttle and steering on output 2 and 4 (1 and 3 are going to the ESCs), I got different results. Sometimes the throttle would only go to +/-50 from neutral, or the steering value would jump around randomly. Yes, I know skid steer and conventional steering output at the same time is not supported and tested.

1 Like
(David Boulanger) #2

Video looked pretty good. Have you tried reverse?

(Sebastian Schürmann) #3

Reverse works, too. I had to set PILOT_STEER_TYPE from 3 to 2, so the tailwheel can stay in the same orientation when changing from forward to reverse. Otherwise it would start 90° to the needed direction and the servo had to move it in the right direction against the force of the already moving rover. To make both forward and reverse mechanical equal it would be nice to have zero castor length, but such a wheel does not exist. The way it is now, the rover just has to go slower in reverse to protect the servo.

(peterbarker) #4

Any chance of a patch to this page to include a video?

(Sebastian Schürmann) #5

This is not a feature I added to ardurover, but an external arduino doing the calculations for the tailwheel, so I do not know if it belongs to that page. I probably would be old and grey, before I figure out how to add it to ardurover.

1 Like
(Sebastian Schürmann) #6

Just in case anybody is interested, I made some improvements to the tailwheel sketch and the rapid, kind of digital movements of the tailwheel seen in the video are now gone. They were caused by a too large deadzone. If the rover drove at low speeds/throttle, the minimal angle the tailwheel would go to was about +/-45°. At higher speeds the steering got smoother, but sometimes the tailwheel would move too far and the rover even entered dead bug mode once (it rolled on its back). I now calculate the throttle and steering values from the left and right throttle and that means I can calculate the tailwheel angle from those two values directly without a bunch of if/else statements. I also filter the two input signals and the servo output, so I do not need a big deadzone anymore to catch the occasional spike in the PWM readings.

(Kenny Trussell) #7

Sebastian, thanks for sharing! I have plans eventually to build a larger vehicle and your tail wheel design could be the ticket.

(Chris Sallis) #8

Very nice Sebastian! Are you willing to share this code publicly?

(Sebastian Schürmann) #9

Yes, no problem. The code is a mess though. I will look at it again, clean it up a bit and add comments. But do not hold your breath, I am in the process of rebuilding the rover with 10 inch hubmotor wheels to get rid of the chain and sprocket.

(Sebastian Schürmann) #10

I just finished the first test drive with the hubmotors, RC only.
I use two 36V, 350W, 10 inch hubmotor wheels with 2 VESC 4.12 (100€ on ebay for two). The wheel pair did cost 60€ on amazon and right now they are offered by the same seller for 35€ (correction: it is only one wheel for 35€) used. I tested with 4s and seems that wil give me enough speed for my rover. The VESC are truly amazing, no fiddling with which motor/sensor wire goes where. It is all autodetected. They have a bunch of control input options, including UAVCAN/CAN, but I will use PWM/PPM for now. You can run the motors current, duty cycle or RPM (PID) controlled and I am right now trying to tune the PID, so both motors run at the same speed for a given input.
Another benefit is, the rover is now much more quiet. The RC ESCs I used before used a drive frequency of 8kHz and a brake frequency of 1kHz, which caused a whine and squeal during accelerating and braking. All rattling from the drivetrain is gone too, of course. Now I have to figure out, if all of the BECs and step up/down converters in the rover can take 4s and then I will rewire the lipo connection board to get 4s 16Ah instead of 2s 32Ah.

1 Like
(Sebastian Schürmann) #11

Here is a short video of my rover, now with hubmotors. I was driving around in acro mode.