When I’m in manual mode for the Pixhawk, all the control surfaces work like they are supposed to. when I switch to stabilize, controls are still working as expected, but the stabilization in the ailerons is reversed. So if the plane turns left, stabilization will make it turn even harder to the left. What can I do to reverse this?
It sounds like you need to flip both the RC input (either in your transmitter or in PX4 params), AND the servo direction (mixer or servo setup).
Flipping the RC input is easy, but what do you mean by servo mixer? I’m sure I got the proper set up.
Edit: Reversed the RC channels, stabilize is still moving in the same pattern.
Edit: Fixed the stabilization. I had to toggle PWM_AUX_REV1 and PWM_MAIN_REV1 and reverse the RC controls. Now another problem has come up. When I shift the aileron input to the far left, the elevator tips up. No other coupling of control surfaces.
Is the vehicle rolling to the left and the elevator tips up, or is the vehicle level on the ground and full left aileron moves the elevator?
The vehicle is level on the ground and full left aileron moves the elevator. The elevator also twitches when I go full right on aileron.
The documentation on the PX4 website is wrong. Right aileron servo connects to AUX1, Left aileron servo connects to AUX2, Throttle (motor ESC) connects to AUX3. I would undo that parameter changes you made to put it back to normal then test again.
@rollys it completely depends on the mixer (airframe selection). It’s not standardized.
@Deafro which airframe did you select? Are you able to fully arm the vehicle? If you can arm and reproduce the issue it will create a log on the sdcard. If you share that log here we can figure out exactly what’s going on. While armed, level, and in stabilize mode move the stick to all extremes and note the behaviour.
It might be some time before I can reproduce the effects. The plane crashed during testing. It was a dumb mistake on my part that caused it, but the plane is totaled. I’m working on getting a second frame built, but it will take some time. I’ll see if I can find a SD log file from that time though.
I can answer the other questions. The airframe I used was a standard AETR plane. I was also able to fully arm the vehicle.
Hello all, I just ran into the same problem with the latest stable PX4 firmware and the standard AETR airframe (my model is a Volantex Ranger EX).
I first built the plane without a FC at all, directly connecting the receiver outputs to the servos (Y cable for ailerons) and pusher motor, and did a flight test. I had to reverse ailerons, rudder, and throttle on the radio to get correct manual control of the plane.
Next I added the Pixhawk with PX4/Standard AETR and got it working in Manual mode. I left the radio channels as-is but the radio calibration seemed to detect and account for the reversals correctly. The only weird thing was that arming was lower-left rather than lower right, due to the rudder reversal. So I reversed the RC input channel and the PWM output for the rudder and arming and control all worked as I expected. Ailerons worked correctly in PX4 manual mode without further trouble.
So silly me, I next thought to test stabilized mode but forgot to verify aileron stabilization controls were in the correct direction. I had the same result as @Deafro. I had a spectacular flip and nose dive on my first takeoff. Luckily all damage was repairable and I’m ready to try again.
I tried reversing or not reversing the aileron RC input (RC1_REV) and the PWM output (PWM_MAIN_REV1) in PX4’s settings but as @Deafro found, it didn’t seem to make any difference. No matter what I do, roll correction is always backwards in stabilized mode. Gyros are detecting roll correctly and the target roll speed is always in the right direction, but the ailerons always move in the opposite of the correct stabilization direction.
Does this mean I should go back to the beginning with un-reversed radio channels and a fresh radio calibration, get the controls working in manual, then try again to get correct control in stabilized mode? Do I need to mess with PWM_AUX_REV1? I am using the main outputs per the documentation, not the aux outputs, so I don’t understand why PWM_AUX_REV1 would be relevant.
I will go ahead and try all of these possible solutions, but I feel I am either misunderstanding something or doing something unexpected by leaving channel 4 reversed in the radio then setting RC1_REV and PWM_MAIN_REV1 to correct for it. As others may have the same confusion, I thought I’d ask here.
By the way, great community; I’ve been using PX4 for multicopters for a while and love it! Thanks for helping a newbie on planes.
EDIT: Got it sorted by resetting the radio to normal for all channels, turning off all RC and PWM reversals in the PX4 params, then experimenting. To get correct behavior in manual mode I would first reverse the PWM main output if backwards, then if still backwards in stabilized mode, I would reverse the channel on the radio and recalibrate the radio. Will try a test flight today. I am not yet convinced that flipping RCX_REV has exactly the same effect as reversing on the radio.
Is this a bug, that stabilization controls can be different from manual controls? I would think that both the manual controls and stabilization controls should be in the same direction depending on the radio calibration.
Also, I don’t think this is documented for planes. I’d be happy to contribute to the docs.
@mdailey RC input and servo output are completely separate. What makes it confusing is manual mode and situations where both are backwards. For a long time QGC radio calibration wasn’t flipping reversed stick input (RC*_REV). For the output you might need to restart after changing PWM REV parameters.
Is this correct? I am having the same issues and having no luck with making them work correctly in stabilization mode
Try to change mixer file of the model and make it according to your configuration.
What airframe are you using?
Ritewing Drak. I think I just got it working. I am also using a ix12 radio with TBS Crossfire, I changed the rx output mapping in the radio so that throttle was on channel 3 and now it works! I also switch the right aileron to channel 1 and left to channel 2
In QGroundControl, what airframe did you choose in the setup? You should be using Generic Delta Quad VTOL where your connections to the Pixhawk should be as follows:
MAIN1: motor 1
MAIN2: motor 2
MAIN3: motor 3
MAIN4: motor 4
AUX1: Right elevon
AUX2: Left elevon
With correct Tx calibration, control surfaces should move correctly and appropriately in Stabilize, Altitude and Position Modes.
Make sure FW_ARSP_MODE is Enabled for your airspeed sensor to be recognized.
I’m using Mission Planner
It’s highly recommended that you use QGroundControl for your initial setups first. This is especially important since you’re using PX4 Pro Stack and requesting assistance in this forum. Once you’ve got it flight tested and tuned, then go to Mission Planner if you want.
I’m also having the same issue in stabilized mode. The pitch works properly, but the roll correction is always backwards (the ailerons always move in the opposite of the correct stabilization direction). I’ve reversed the RC input and recalibrate, but the roll behavior in stabilized mode still persists. I’ve also changed RC1_REV parameter and power down, but same thing. Note that RC1_REV resets to default if you recalibrate.
Same issue here too. Standard plane and Pixracer. Elevator and ailerons correct opposite direction in stabilized mode. All calibrations done ok, artificial horizon show movements right direction and the manual mode works normally. Removed reversing of channels from TX before installing Pixracer. So, I had those channels reversed when flying manually the same frame previously. Used TAER on TX side.
Used couple of nights for trying different things, even different orientations of FC and Compass and couldn’t find the solution using current version of sw. From Arduplane the issue got solved with this info https://discuss.ardupilot.org/t/fbwa-etc-control-compensation-direction/21807/12 ie. using parameters RCx_REVERSED and SERVOx_REVERSED (tested it too).