Mixer and Geometry for new Vehicle - Documentation and Help

I’ve been looking through all the mixer and geometry documentation for adding a new vehicle (multicopter, maybe a VTOL later on) and there is a lot that’s to be desired… Only basic instructions present. I went ahead and got through making a toml, etc etc all fine for the basic stuff but how do I get the geometry inputted if I have my front two motors angled out at 3 degrees? I then came across a jupyter notebook (that one was hard to dig up but referenced in a few places) by @jlecoeur which is really dense and perfect. It has it all in there, this should be explained more in detail and in an advanced or dev area of the PX4 guides since you can pretty much do anything with that. BUT. the angled motors in there are set up for all motors in each example and also are setup to generally show a tilt inwards or outwards (so there is tilt on both the x and y axis). I just want to tilt my geometry for my front two motors 3 (or really X) degrees forwards (away from my CG).

Any help or thoughts would be great! There are some cool things you can do with spare parts and this jupyter notebook, it will solve all the complex geometry needed.

Also, anyone ever though of adding 6 dof?

I’ve used that notebook quite extensively. It took a lot of work to break it down but yes, spot on. You can do quite a lot with it. Maybe @hamishwillee could chime in on this. Angled motors are actually quite normal to see, how to implement that in the notebook for geometry and (I presume then normalized mixing etc) is another thing. I’ll take a pass at it today and see as well.

A side note would be how much does a small angled motor make? What’s the threshold before control degradation? Or another way, before control is not what is expected. 1 degree is going to likely be hard to measure but 45 makes sense. Also understanding what effect altering the arm length and the possibility of accentuating the effect becomes more important to see (on paper first).

I believe what is needed here is the undocumented geometry file. I’ve been waiting on @jlecoeur to find time for that for a while, and I’ll ping him again. In any case, he has pulled together some information in various issues:

I hope the Jupyter notebook gets included as a reference in those updates.

Found it:

‘ax’:[0.0, 0.0, 0.0, 0.0 ],
‘ay’:[0.0, 0.0, 0.0, 0.0 ],

To what you need (don’t forget to do it in radians, not degrees)

@hamishwillee thank you. I’ve just read through those now. They are quite informative. @ryanjAA that did the trick! Thanks for that.

Question though to both of you. What mixer numbers should I use then? I get different numbers from the Jupiter notebook and from following the instructions from those two issues and the published docs. The normalized mixer is different depending on which way I process the coordinates which has me confused. I’ve taken the angles out of my mapping to remove that variable but it’s difficukt without any literature on what to follow.

From what I understand and correct me if I’m wrong, I am supposed to:

Create a toml file with my positions in it.
Edit all the relevant cmake files
Create a mixer that is just even split fully mixed (like a standard quad).
Create an airframe file

But does my geometry from my toml get taken into account in my mixer that is simply equally mixed?


If I’m using the jupyter notebook and enter everything there it creates a normalized mix for me. So what do I do with that? Do I still create a toml? Do I enter in those mix values (which are very different) into my mixer instead. I definitely have more control in the julyter notebook than the normal toml.

This is where I’m getting lost since there’s some info but nothing definitive and clear on the matter.

Some insight would be helpful.

Maybe @jlecoeur could give some brief insight? He also seems to have written the python script in the tools folder for the geometry files.

Just not sure on what the process to follow is here.

Thanks everyone.