Edit TL;DR: I’m using a gamepad to control my rover. When I move the throttle stick to the bottom, the PWM output value of servo 3 is SERVO3_MIN (which is expected). But when I move the throttle stick to the top, the PWM output value of servo 3 is SERVO3_TRIM, and I believe it should go to SERVO3_MAX instead. And when I leave the throttle idle (middle position), then the PWM output value of servo 3 is (SERVO3_MIN + SERVO3_TRIM) / 2. And I’d like it to be SERVO3_TRIM.
Edit I did a 5 minutes video that illustrates the problem: https://youtu.be/Exdzc7yfzqw
I’m new to ardupilot and UAVs/ROVs (4 months now), and I’m not sure how I’m supposed to handle this behavior:
I have managed to make a pseudo-working rover. Here’s my minimal setup:
- Pixhawk 2.4.8 clone
- Brushed ESC (but behaves as a brushless ESC, I can’t get it to work with MOT_PWM_TYPE other than “Normal”)
- I’m connected to qgroundcontrol on windows using an USB cable
- I’m trying to control the rover using an usb gamepad
My goal is to control the rover using UAVMatrix in 4g, which is why I’m not using a traditional RC transmitter.
My problem is that in manual mode, my gamepad joystick can change the SERVO3 value from SERVO3_MIN (which I set to 1000), and SERVO_3 TRIM (which I set to 2000).
Now using this setup it works. When the gamepad throttle is in the middle I have PWM at 1500 and the vehicle is idle.
The problem is that when it switches to “Hold” mode, then SERVO3 value goes to 2000 (because it’s TRIM, that’s expected), and it goes full throttle.
Also I had to disable the PWM output when disarmed, because if not then disarming the vehicle as the same effect. And that’s a bit annoying because when I arm the vehicle it goes full throttle for half a second (probably because the ESC catches up).
So I’m wondering why the gamepad doesn’t allow the values to go from SERVO3_MIN to SERVO3_MAX?
Here’s my parameters in case that helps: roverpb.txt (26.4 KB)
Let me know if I can provide you any other information.
Thanks for your help!