Three-wheeled rover with skid steering and servo controlled tailwheel

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

3 Likes

Dear Sebastian,

I see you had used VESC for a Pixhawk project.

I did the same but until now not working.

All components (VESC, Pixhawk, motors) separately are properly working but full assembly not.

Means that if I put in communication all of them motors are not spinning.

I am using Dual VESC 4.2 and Pixhawk 2.4.8

Motors are hub 500W motors.

I went through skid steering indications of Ardurover (Servo output = Throttle left and right). Motors are not moving. I am just able to ARM the vehicle but nothing more.

Even the simple pre-arm Motor test failed (motor are not spinning).

I also changed in the Servo Output from Throttle left (or right) to RC pass Thru. But nothing at motors happened.

Do you know if I need to do something with VESC tool? Something like arming the VESC through such software (VESC tool)?

Or through Mission planner to change any particular parameters?

Many thanks. Regards.

Andrea

There can be a few things not setup correctly.

  1. Do you have a safety button connected to the pixhawk? If not, did you set “BRD_SAFETYENABLE” to 0?
  2. The VESC has only the UART control app enabled by default, you need to select “UART and PPM” or only “PPM” under app “General”.
    Then you choose the control mode under app “PPM”. I use “duty cycle” for my rovers.
    I do not know how familiar you are with the vesc tool. Keep in mind that the all settings need to be written to the vesc by pressing the write motor settings and/or app settings button. If you switch from one VESC to another, the fields in the vesc tool keep the values from the previous VESC. The best practice is to press connect, read motor, read app settings each time you change between the VESCs. Otherwise it is easy to mess up the settings.
    If you need more info, feel free to ask.
1 Like

Hello Sebastian,

BRD_SAFETYENABLE is now 0.

I had also programmed VESC on “UART and PPM”. Duty cycle on PPM app.

But motors still not spinning.

Which other parameters could be further involved and improved?

Thanks. Regards.

Andrea

1 Like

The VESCs have a arming safety like other ESCs. If you enable realtime view in the vesc tool (the symbol below the arrow keys on the right side) and then go to app “PPM” and select the mapping tab. The green bar shows the PPM signal the VESC is receiving from the pixhawk. Even if the pixhawk is sending 1500us, the VESC might read something a bit off.
If the value is beyond the default deadzone, the VESC will not arm.
You can calibrate the VESC to the pixhawk signal in the mapping tab.
Set PPM from “duty cycle” to “off” and write the app settings.
Then you can use the servo output screen in Missionplanner to set the trim/center value to the min,max values. This will set the outputs directly to the set value, as soon you click outside the box, so be sure you have set ppm mode to off in VESC tool. Otherwise the motors might start to run.
After you set center to min max, set it to 1500 again. In the VESC tool PPM mapping tab, you should see the min, max, center values updated. Click apply and the values are entered in the fields at the top. Write the app settings to transmit the values to the VESC. Now the values the pixhawks sends and the VESC values are in sync and the VESC should arm itself.
Change PPM back to duty cycle.

Hello Sebastian,

It is working! Wonderful!

Thanks for your precious support!

Many thanks. Best regards.

Andrea

Hello Sebastian,

sorry to bother you again. I am currently stuck in another issue.

I do not see any output Throttle (Throttle left=73 and Throttle right=74) applied to my ESC on the Servo Output page of Mission Planner. And motors are not spinning.

If, instead of Throttle, I use PassTru, the left stick is moving both green bars, at Position 1 and 3.

If I am going to check radio calibration, left stick (up and down) is controlling green bar of Roll and Throttle. Right stick (up and down) is just controlling Pitch.

At the end of the day, only TX left stick (up and down) is working. Moreover the result at motor level is not clean. Sometimes the right wheel is moving and sometimes the left. The wheel movement is nervous.

Another point not clear for me is the dual VESC. Right in the middle it owns a ON/OFF switch to put (or not) in communication both VESCs.

Should I consider dual VESC like two separate entities (put OFF the switch) or leave the switch ON?

Looking forward to hearing from you.

Many thanks. Regards.

Andrea

Hi Andrea,

from your description, I would say you have a mixer programmed in your TX. This is why one stick direction moves both roll and throttle input.
Your TX should output independent channels with no mixing active. PWM values should be ca. 1000/1500/2000us.
I am not familiar with dual VESCs, but you need two independent ESCs, so the switch should be OFF.
Ardurover features two safety stages. One is the safety button, the other is arming. Passthrough is not affected by this, but proper setup with throttle left and throttle right is. So you have to press the safety switch (or disable it by setting BRD_SAFETYENABLE to 0)
and then arm the rover. The best option for a skid steering rover is to use a switch for arming/disarming, because stick input for arming/disarming might cause the rover to pivot at full speed. Arming may not be possible, because there are different checks that must be passed to arm the rover. For bench testing, you can set ARMING_CHECK to 0, but set it back to 1 when you actually use the rover.
Please feel free to ask, if you have further questions.

Ciao Sebastian,

It is true. TX was mixed up.

I cleaned it, switched off and configured the VESC like two indipendent VESCs (is the Pixhawk controlling both wheels speed in order to avoid motor damages?).

Now rover is working in manual mode and with servo output in PassTru.

Still not working in Throttle right (or left). I still do not see green bars moving at Servo output.

Are there other reasons behind not working of Throttle output?

Could the rover be used in Auto mode and make a mission with the PassTru output (even if it is not the proper setup)?

Many thanks. Regards.

Andrea

Hi Andrea,
sorry, I had to quote myself. I did not want to write it all again.

The rover will only work, if it is setup correctly. Passtrough is only doing exactly that. It passes the input signals to the output, without doing anything to it. If there is no input from the TX, there will be no output and therefor the rover will not do anything in auto mode.

Hello Sebastian,

sorry to bother you.

Did you had chance to see my e-mail?

Many thanks. Best regards.

Andrea

Hi Andrea,

you wrote me an email?

Hello Sebastian,

Yes, this below. Best regards.

Andrea

Ciao Sebastian,

It is true. TX was mixed up.

I cleaned it, switched off and configured the VESC like two indipendent VESCs (is the Pixhawk controlling both wheels speed in order to avoid motor damages?).

Now rover is working in manual mode and with servo output in PassTru.

Still not working in Throttle right (or left). I still do not see green bars moving at Servo output.

Are there other reasons behind not working of Throttle output?

Could the rover be used in Auto mode and make a mission with the PassTru output (even if it is not the proper setup)?

Many thanks. Regards.

Andrea

Hi Andrea,

I answered this 2 days ago here in the forum:

Hey Sebastian,

I’m currently working on a 3 wheeled rover similar to your own with the rear tail wheel. I’ve spent the last few days trying to find some methods for calculating the rear wheel angle based on the skid steer differentials, with limited success. Would you be willing to share some insights or snippets/code for the Arduino that does these calculations?

Thanks in advance,
Ryan

@megatr0nxx0rz Sure, no problem, here is the link:

https://drive.google.com/drive/folders/1L3o9hxNcE0uGqgJtVdrNTTBiOHdgMApT?usp=sharing

I am no programmer, so the code may be a bit ugly, but it works.
I am now using a Lua script running on the flightcontroller to control the tailwheel. The script is there, too.
Since the Lua script takes all the values directly from the firmware, it avoids the noise in the PWM signal going to the arduino. This results in a much smoother control and less jitter/jerking. If you have a flightcontroller able to run Lua scripts, I would use this.

1 Like

Wow, thanks a lot mate! I really appreciate it, while I have dabbled in coding and have been able to write some functional programs, I certainly wouldn’t consider myself a programmer either.
I’ve got a good starting point now!

Thanks again, and cheers for the tips

Nice project. Are original motor drivers from hoverboard usable?

Thanks.

I can not help you with that question. I bought the motors seperatly. I use them with VESCs.

Thank you for your quick reply.