Strange RC servo output response

Hi All

After some struggle I got the motors working.
However I am experiencing a very strange motor/ servo/pwm response

I am enclosing a Pixhawk2 bin file from my Rover with 3.2.0 rc3 FW. In manual when I send a forward or reverse command the wheels are getting different PWM levels so the Rover can not drive straight forward or back. Also I get sudden complete reversals in direction and jerky responses

Reviewing RC1/ RC3 in and out clearly shows that the motor controller (sabertooth) is not getting the correct PWM signals

Here is a link to the bin file

i think my hardware is fine and that this is a set up parameter issue

Any help will be appreciated

I would really appreciate some help with this issue. Also the wiki is somewhat out of date. Is there one document that goes through all the MP parameters and transmitter settings to set up a skid steer rover. I am interested to drive my mower rover in a lane by lane configuration. I.e. All I require is 180 degree turns at way points and to have the way points close together. I use RTK so position is good.

Max,

Thanks for the report. I’ve had a look at the logs and I think the issue is the SERVO1_MIN/MAX and SERVO3_MIN/MAX values which are quite different from each other:
SERVO1_MIN: 1103
SERVO1_MAX:1904
SERVO3_MIN:899
SERVO3_MAX:1905

In particular I think SERVO3_MIN should be increased to 1103.

How this has happened is not clear but I suspect it’s related to automatic parameter conversion from an earlier version. In older versions of Rover we did not have separate ranges for Transmitter/RC input vs Servo output. In order to ease the transition have a bit of code that runs and copies the input min/max to the output if the output hasn’t been set before… perhaps an Transmitter/RC input calibration was started while the transmitter was off or something, i’m not exactly sure.

Another parameter that looks odd in the MOT_THR_MAX which is only 35. i think raising that to 100 would be a good idea.

I also see in the logs that the MOT_PWM_TYPE is changed to “4”. It depends upon the motor driver in the vehicle but I think leaving that at “0” is best for most users.

I’ve updated the wiki quite recently ahead of the official release. I think these two pages could be helpful. I see that neither of these pages mentions how to configure the output range so I’ll add that.

http://ardupilot.org/rover/docs/rover-motor-and-servo-connections.html
http://ardupilot.org/rover/docs/rover-motor-and-servo-configuration.html#rover-motor-and-servo-configuration

By the way, if you could upgrade to -rc4 that would be great. There are important improvements in the steering control in particular (feed-forward is added which is really quite critical for good control).

Sorry for the delay in response and pinging again.

Thanks a lot for the response.I will upgrade to rc4 and keep an eye on these parameters and get back to you

Max Birley

Skype mdbirley

In automatic modes (guided, auto, etc) jerky and sometimes crazy responses can be a result of bad speed and attitude estimations (coming from the sensors and computed by AHRS). Speed/orientation/turning rate commanded by automatic modes pass through the PID controller which adjusts them based on estimated values. So, if the latter ones are wrong (jerky, etc), the output of PID controller is also wrong.
I had the same problem when trying to use guided mode through mavros. “Cured” it by turning off speed and steer PID controllers - setting P, I, D coefficients to 0 for both, tuning cruise throttle and speed for speed PID controller, and setting right FF coefficient for steer PID controller.
Hope this will help.

1 Like

Glad I found this thread. I’ve been experiencing the exact same issues described with my rover today. I will check out these parameters on my setup as well.

Dustin,
Ok, thanks for the report. I suspect it’s the parameter conversion from inputs to outputs. I’ve just tried to reproduce the issue but I haven’t been able to.

Hello, i guess i am having exactly that problem, in the rc calibration screen, everything looks ok, the right range, but in servo output, all chanels are near 0 -250 pwm, do you know what could it be?

Angel,

It’s best to include a dataflash log if possible. In any case, it’s most likely the MOT_PWM_TYPE parameter causing the issue. It’s probably been set to “1” meaning “OneShot” which uses the range 0 ~ 250. Instead try setting it to “0” for normal. It’s mentioned here on the wiki in case that helps.

ok. Sorry. i will give you some background information, i have a pixhawk 2 (cube) with rover (3.2.2) set for skid steering, PILOT_STEER_TYPE =1, with two brushed motors, they only have red/black wires, that’s why i set the motor output to brushed bipolar. I have two brushed ESC motor set for forward/reverse. I don’t have a BEC itself, but have a brushless ESC for giving power to the rail, as i have three servos conected as a gimbal, CH5 tilt, CH6 roll, and CH7 trigger. I tested everything connected directly to the RC reciever and works well, so im sure it is a wrong setting in the autopilot.

After your recomendation of set MOT_PWM_TYPE to normal, apparently it has the same RC values, but now the motors only move forward.

4 1-1-2000 1-59-52 AM.bin (943.9 KB)

Angel,

Looks like something strange has happened with the radio calibration. The RC1_MIN/MAX values are 1499/1498 respectively which means there’s no steering control. Could you please re-do the radio calibration?

The arming checks would have caught this but they’ve been disabled (ARMING_CHECK = 0). It’s best to turn that back on (set ARMING_CHECK = 1) when setting up a vehicle because it will tell you about issues.

Give that a try and if that doesn’t work, we can try something else. if possible please send another .bin file after your next test.

hope this helps.

RC1 has not input, i have the motors in CH2 and CH3 because of my RC trasnmitter limitation, i want to have the motors control in the Y axis of the transmitter, and all the sticks configurations avaliable have CH2 or CH3 in the Y axis, so there is nothing conected to RC1.

STICKS

Angel,

We need to be clear about input vs output because the channels and pwm range used do not need to be the same for input vs output. From the ArduPilot code point of view, they’re separate.

So, I guess you want to use the two-paddle input method described on the wiki here.

… and in the logs, PILOT_STEER_TYPE is correctly set to “1” but RCMAP_ROLL (used for left throttle) is still set to “1”. So it is trying to use RC1 for the left paddle control. The RCMAP instructions are here on the wiki although they’re not perfectly clear because they’re intended more for Planes and Copters.

By the way, to add confusion, there is a small bug in the two-paddle input method code. It’s fixed in “master” but hasn’t been released. it might be best to use “master” by going to MP’s install firmware screen and press Ctrl-Q, ensure the version changes to “3.3” and then push the rover icon. Alternatively I hope to start beta testing of Rover-3.3 in a few weeks.

Thankyou. Those are my settings now:

PILOT_STEER_TYPE = 1,
Left motor connected to out 1
Right motor connected to out 3
RCMAP_PITCH=3
RCMAP_ROLL=1
RCMAP_THROTTLE=2
RCMAP_YAW=4

The sticks settings on the controller are:

STICKS2

Now the sticks work as i wanted. I think it would be better if for rover, In the radio calibration screen, it shows “left motor” instead of pitch, and “right motor” instead of throttle, it would be less confusing.

1 Like

I guess i was wrong, fisrt than all, i had that stick mode avalieble from my transmitter (ch1 and ch2 in the right stick, ch3 and ch4 in the left stick) so now i’m using it.

so, for rover, the motors control should be Roll and Throttle (ch1 and ch3), so i changed to:

RCMAP_PITCH=1
RCMAP_ROLL=2
RCMAP_THROTTLE=3
RCMAP_YAW=4

Now the servo output for servo1/Roll/left motor is set to ThrottleLeft and works well in the Y axis of the left stick.

The servo output for servo3/throttle/right motor is set to ThrottleRight and works well in the Y axis of the right stick.

I still have a problem, i guess is out of topic, it only moves forward, if y press one of the sticks to the back, the oposite motor goes fordward (for turning quickly) but the motor i am pressing does not goes backwards, eventhough the servo output screen looks ok.

Angel,

There was a bug in 3.2.2 related to the two-paddle-input. I was wondering if you could try the 3.2.3-rc2 beta?

1 Like

Hello rmackay9, i was waiting for the new firmware to be released, today i tried it, apparently everythin is ok, in manual mode it works very good, but when i change to auto, the rover goes backwards a few meters and then try to rotate clockwise and counterclockwise, it changes direction like in half second, and remains doing it until i change back to manual mode, i was trying it for more than an hour, so the log is very big, it stops uploading at about 21%, so i shared via Google Drive

https://drive.google.com/file/d/16jbvAdmL_Tdw8V0HL3JD14bvd3SXU_dN/view?usp=sharing