MOTOR MIXER for PX odd models config

Dear Guys we have a neat model that is to be used as a biological spray model.

We are experimenting and have used for the first one the A2 from DJI that allows the motor mixer mode. We adapted the settings of the 8 motors and now the model flies quite OK! It looks like an airplane but can fly back as fast as forward!
We now made a slightly bigger one and for that one we are using Pixhawk, but cannot find a motor mixer on that. Question Is there any one that could help us out. We can provide the data from the A2 motor settings

Hope that someone can help us out with such motor mixer system? If like the A2 DJI it would help many designers of purpose drones, Cheers Winfried

I don’t know the best way to do this, but to get you started take a look at how the multicopter mixers are generated here - https://github.com/PX4/Firmware/blob/master/src/modules/systemlib/mixer/multi_tables.py#L58

In particular here’s the hex_t - https://github.com/PX4/Firmware/blob/master/src/modules/systemlib/mixer/multi_tables.py#L127
which generates this table.

const MultirotorMixer::Rotor _config_hex_t[] = {
{ -0.684674,  0.728849,  1.000000,  1.000000 },
{ -0.684674,  0.728849, -1.000000,  1.000000 },
{ -0.000000, -1.000000, -1.000000,  1.000000 },
{ -0.000000, -1.000000,  1.000000,  1.000000 },
{  0.684674,  0.728849, -1.000000,  1.000000 },
{  0.684674,  0.728849,  1.000000,  1.000000 },
};

Dear Dagar, thanks for the hint. Gives me some ideas how to solve the issue. But as I am not familiar with flashing software or programming, will have to consult further. Question: how can I group the motors: If a Y6 version I can make uneeven groups. Can also make it a cross 8 copter with heading point of cross placed back? This might be another way of fooling the system? But if we would take the last approach saying we have a quad with 2 coax motors we should correct the front motors distance to the CofG? Might be interesting? See that there are quite some experts in this forum that have huge experience in this. Hope to hear, best Winfried

I’m not sure if you need to think about it as finding a way to fool the system.

Perhaps if you provide more detail at a high level, and specific detail of where each motor is and why it’s mixed this way then someone could help you generate the mixer table.

I’ve never done a custom multirotor configuration so it’s not clear to me why you have some motors that are dedicated to a specific purpose. Wouldn’t it be better to distribute roll, pitch, yaw to more than 2 or 4 motors?

Here’s the data:

Diameter of props 260 mm = D Then main spar length is: 1.1 x D x 6. Fuselage length between front and rear spar hart to hart is 1.6 D. Motors are all same type. Centre of G is of course on 25% of that distance. This model flies OK with Max take off weight of ca 4.5 kg. The model uses 8pcs MT2312-960KV motors.

For Yaw we did a special inward tilted rear rotors. If increasing one and reducing the other, the horizontal vector in the force is not eliminated any more, but shifts the craft to the left/right. We did this tilting of the back rotors as we did not see another good way of making yaw! Hope this gives sufficient info. But if you need more, let me know. Best Winfried

Dear All, tried to work on the logic of this shape and match the conventional shape numbering (quad V, Octo etc.). It did not bring a logical understanding. So decided to take a motor count as follows.

top of scheme is direction of flight

With this in mind I tried to understand the different codes of all the frames and checked the logic and tried to work my way through the ATAN etc… In the shape of the quad V I saw the extensive version of angle, rotation and relative arm lenght, so thought that is best to use. I used standard prop dimensions so eg the span of the craft is 6 D (or 5 D if between the motors) and the distance between main spar and rear spar is taken as 2D.

Motor no Direction Angles Length Arm length Corrected Max Proportional
1 CCW 0 45 1.414213562 0.5 0.707106781 2.549509757 0.277350098
2 CW 0 71.56505118 1.054092553 1.5 1.58113883 2.549509757 0.620173673
3 CCW 0 78.69006753 1.019803903 2.5 2.549509757 2.549509757 1
4 CCW 0 161.5650512 1.054092553 1.5 1.58113883 2.549509757 0.620173673
5 CW 0 -161.5650512 1.054092553 1.5 1.58113883 2.549509757 0.620173673
6 CW 0 -78.69006753 1.019803903 2.5 2.549509757 2.549509757 1
7 CCW 0 -71.56505118 1.019803903 1.5 1.58113883 2.549509757 0.620173673
8 CW 0 -45 1.019803903 0.5 0.707106781 2.549509757 0.277350098

So the result would be with the motor no in front only for the record:

1 [45,CCW,0.277]
2 [72,CW,0.620]
3 [79,CCW,1.000]
4 [162,CCW,0.620]
5 [-162,CW,0.620]
6 [-79,CW,1.000]
7 [-72,CCW,0.620]
8 [-45,CW,0.277]

As I am not the expert by no means, I hope that some of you can react on this set up in between the brackets and give me a clue if this is likely to be OK. Then I hope we can do some loading and testing with it! The craft is ready

Hope to hear Best regards! Winfried

hi dear @winfriedrijssenbeek1 and @dagar , thank you for your help full post , i have same problem with my multirotor and i have H hexa configuration and i already use pixhawk for my multirotor and i use the hexa plus configuration for this setup , but i have problem here that no matter i do in roll axis the robot is not stable i think this is because the motor configuration i have and the software configuration pixhawk i use is not completely mach , so i need a way to do the motor mixing be myself , so i need your help for find out how should i do that .
thanks mehrdad

@mehrdad_mansouri Here are some good links:

https://dev.px4.io/v1.9.0/en/concept/mixing.html

https://dev.px4.io/v1.9.0/en/airframes/adding_a_new_frame.html

Hopefully with them you will be able to understand how a mixer works :slight_smile:

thank you @RicardoM17 for help full topic