Mixer for Unusual VTOL Configuration

Hi
I build a rather unusual copter configuration and I am now in need of custom mixer.
The configuration can be described as follows:

  • Two rotors
  • One BLDC per rotor
  • Coaxial rotor alignment
  • No collective pitch, Throttle RPM controlled
  • No cyclic pitch - rotor planes are tilted(together) around a fixed center
  • Two 120° swashplates with 3 servos attached to it.

Based on blade130.main.mix
I created my own mixer, however I didn’t figure out yet how the channel assignment works when utilizing the Heli H/T/P/S mixer, and I am highly uncertain about everything else in this regard :neutral_face:
Could you give me some advice if I am on the right track with my approach of mixer below?!

Swash plate servos TopRotor(CW):

H: 3
T: 0 3000 6000 8000 10000

S: 0 10000 10000 0 -8000 8000
S: 120 10000 10000 0 -8000 8000
S: 240 10000 10000 0 -8000 8000

Swash plate servos BottomRotor(CCW)

H: 3
T: 0 3000 6000 8000 10000

S: 0 10000 10000 0 -8000 8000
S: 120 10000 10000 0 -8000 8000
S: 240 10000 10000 0 -8000 8000

BLDC CW:

M: 1
S: 0 2 10000 10000 0 -10000 10000
S: 0 3 0 10000 0 -10000 10000

BLDC CCW:

M: 1
S: 0 2 10000 10000 0 -10000 10000
S: 0 3 0 10000 0 -10000 10000

Thank you in advance

APX

1 Like

Hi @APX ,

Interesting project!
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?

Good luck!

2 Likes

Hello, is H in the program 6 or 3?