# Geometry of odd shaped vehicle

Does Arducopter (or plane, vtol etc) have a way or place to enter in the geometry of my setup? I have a prototype vehicle I’ve designed that is a wide (from two motors are further out than the rear, like a dead car but much bigger) setup by also has several degrees of angle in the front motors as well as being about 20-25mm higher than the rear motors. It’s a quad but is there a mixer or python script etc? How do I take this into account?

Thanks!

No script, but have a look here: https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_Motors/AP_MotorsMatrix.cpp

Arm length is ignored, as it can’t be generalised: the moment is obviously a variable, so basically just controlling the force (thrust) with a tunable gain accounts for any arm length.
The V-Tail and A-Tail mixers (https://github.com/ArduPilot/ardupilot/blob/fb53e354c0c004882956b2fcd6ce612f7e934ebf/libraries/AP_Motors/AP_MotorsMatrix.cpp#L508) are the closest to what I think you’re describing. There has been thoughts/partial attempts to implement a scripted mixer in the past, but never developed into something that was both good and simple enough to make it into mainline.
I guess the key thing is that the controller isn’t model-based, so specific geometry isn’t important, beyond knowing the direction from which the force acts, and the controller is robust enough that the mixer doesn’t have to be perfect/precise in order to get good results.
I don’t think I explained that very well, but hope it makes some sort of sense.

This is sort of a helper function, for some frames it is easier to add based on angle and distance, for just the (x,y,z) moments from the motor you can use add_motor_raw() directly.

There are a few online mixer calculators that can help you find the x,y and z values.

https://www.iforce2d.net/mixercalc/