Hi @APX ,
I never used the helicopter mixer myself but I had a quick look at the code and I found a few things that could help you.
In the swashplate mixers, the
P: line (i.e.: pitch curve) is required, even if you don't use it (5 points needed). Simply set the line as follows:
P: 0 0 0 0 0
Also, since you are not controlling the throttle in the heli mixer but separately, set the thrust curve (
T: line) to zeros (5 points), like the pitch above.
In the BLDC mixers, the number on the
M: line defines the number of inputs (i.e.: number of
S: lines). It should be 2 in your case. Otherwise, the 2nd input is ignored.
Last comment on the outputs, by reading the mixer, it seems that each heli mixer outputs: 1 throttle signal and n servos signals (see here: https://github.com/PX4/Firmware/blob/92ca26b1117ed1222ba9cf0b2e26fe52b62f90f6/src/lib/mixer/mixer_helicopter.cpp#L229-L238).
With the current mixer you have including the modifications above, the outputs should be:
1. Throttle 1 (not used)
2. Servo 1.1 (swash plate 1, position 0 degrees)
3. Servo 1.2 (swash plate 1, position 120 degrees)
4. Servo 1.3
5. Throttle 2 (not used)
6. Servo 2.1 (swash plate 2, position 0 degrees)
7. Servo 2.2
8. Servo 2.3
Here is the problem, assuming that you are using a Pixhawk 4, you can't put the two motors on in the same (main) mixer since the is has only 8 outputs. You then have two possible solution:
1. Put the two simple BLDC mixers in an
.aux mixer and use the 1 and 2 FMU outputs
2. Create a stripped-down version on the helicopter mixer that doesn't output throttle or include yaw control in the existing one.
Btw, moving the whole rotor instead of using cyclic pitch might produce some non minimum phase behavior. I'm interested to know how you planned to handle this; can you share a bit more about the project and especially on that topic?