Four Wheels Steering Rover

Hi to all,

I’m successfully using Ardurover on a skid steering vehicle with Dual GPS and Pixhawk 5X and it works very well!
Now, I’m going to design a new vehicle which will have four driving wheels and four steering wheels.
In this case, I will have to control 4 motors to make the wheels spin and also 4 additional motors for each wheel steering.

At the moment, I’m controlling everything with a RC receiver, but I would like to understand if Ardurover is able to handle this kind of vehicle and, if not, how I can design the vehicle in order to make it compatible with Ardurover.

The most critical aspect appears to be how to handle the steering since all the wheels must be steered at the same time, but I think ardurover is only capable to handle a signal for the steering and another one for the straight motion.

Thank you!

You could assign 2 outputs for ground steering.

You can assign as many outputs for throttle or steering as you like. The steering function will output the same signal to all four wheels, so you have to reverse the outputs until the wheels steer in the correct direction. There will also be no rolling radius correction. All wheels will go to the same angle, since there is no mechanical linkage bringing the wheels to the correct angle (ackerman linkage).
This should be doable with a lua script, the dimensions of the vehicle and a bit of trigonometry.

image
Hi Marcus, this is my project it already has 4 wheel steer and drive off the shelf both are controlled by a simple brushed 12V DC motor so I have a Roboclaw ESC to control them and Here3 RTK and external compass to always point to the front it is geared to the steering so it rotates in the direction the wheels are pointing, I have a Pixhawk 5X and SIK radios and nearly ready to push the button !

1 Like

You really did a great job! I’m very curious about it, can I ask you few questions?

  • what have you used for the wheel steering? Brushed, brushless or stepper solution?
  • how do you synchronize the steering on each wheel?
  • do you use absolute encoder on each steering wheel to know the initial position and orientation of each wheel?

I use absolute encoders, roboclaw controllers, brushed motors on my vehicle, but I haven’t synchronized the steering, yet.

P.S. Good luck for your first test!

Hi Marcus, its an off the shelf remote controlled “Spider Mower” see Google it has a chain drive steering all wheels with a brushed 12 V DC geared motor so I am simply controlling that with Roboclaw (and struggling with all the parameters) The Here3 is rotated by a chain connected so it always points in the direction the wheels are heading with a slip ring for the wires but I would like to try and turn it by servo and encoder later if possible !

I’ve been diving even deeper into scripted Lua drivers for motion control lately, and this thing is begging for a scripted steering driver. It could be capable of crabbing under manual control and very tight cornering in auto/assisted modes. Probably wouldn’t even be hard to code.

Hi Yuri, I am new to Ardupilot but I only need to be able to figure out how to disable the Pix5 X internal and enable the Here3 external compass and get the PIX5 to talk to the Roboclaw and the mower will be controlled by a single brushed motor.

Hi Yuri,
I have recently created a lua script for a servo that uses serial communication. So far all is working well. The servo controls steering and I’m able to get servo status parameters. I’ve seen the logging script examples and will log this data.

Can ardupilot use the servo encoder for steering feedback? If so, how is this information fed back to the ardupilot? Would there be benefits to the steering performance?

I’m not aware of closed loop servo support, but I’m sure you could script that as well.