Thanks Zec.
I am quite sure the *.mix files changing will solve your problem.
If you take a look at MultiRotorMixer.cpp you will find the following:
float roll = math::constrain(get_control(0, 0) * _roll_scale, -1.0f, 1.0f) (eq 1)
Where _roll_scale is the value that you have in your *.mix file, in your case 10000:
R: 4x 10000 10000 10000 0
The meaning of each value/letter is:
R-> Multirotor
4x-> X Quadcopter
First 10000 roll scale
Second 10000 pitch scale
Second 10000 yaw scale
0 idle speed.
After (eq 1) above, the result will be weighted by multiplying the values by a control matrix that will take into account the drone geometry.
After all these calcs had been performed, a final value ranging from -1 to + 1 is available, and by using some other equations, these values will be transformed in a pulse width (PWM) that will be put in the output pin to feed your ESC.
All above is to state my point: The values ranging from -1 to + 1 will be translate to PWM duty cicle of 1000(-1), 1500 (0), 2000(+1) etc. Thus, if you change your .mix file as follow, I believe you will invert the signal as you want: 1000(+1), 1500 (0), 2000(-1)
I would propose like the following:
Go to src/Firmware/ROMFS/px4fmu_common/mixers/ and find the quad_x.main.mix and change it as follow:
R: 4x -10000 -10000 -10000 0
Save the file.
Make a clear at firmware directory (terminal make clear) and build the code again.
Upload and check if it is what you were expecting.
Please, check on the bench before fly and tell us if it worked for you.
Paulo