Support for special (unusual) frames?

Hi, Id like to use Arducopter to fly a Joyance frame. This frame has the motors located in an unusual way. Is there a way to configure the arducopter to work with this frame?

This is the frame


So it’s a hex with two motors on two of the arms?

I suspect it would be sufficient to simply configure it as a hex and then set the extra 2 motors channels to receive the same output as the other motor on the same arm with SERVOx_FUNCTION parameters.

I bet they could also be configured as boost motors, where they would only be used together to provide extra lift and won’t participate in controlling roll or pitch.

A more general answer to unusual frame support is that you can create a custom frame type by defining the number of motors and their relative location. This is a firmware-level change, but isn’t terribly complicated.


I don’t think assigning the two motors to the same channel is possible since this will cause the yaw actuation to also generate roll torque.

Thanks for the answer!

I belive op was not referring to set motors to the same channel´s…

[quote=“Anubis, post:2, topic:34942”]
set the extra 2 motors channels to receive the same output as the other motor on the same arm with SERVOx_FUNCTION parameters.
[/quote] :slight_smile:

We don’t (yet) support arbitrary frames although we have talked about adding it several times. Until then it’s possible someone could extend the AP_MotorsMatrix class to support this frame. I can’t volunteer to do that I’m afraid though as my plate is already quite full.

Ah, you’re right - I was thinking of octos, where opposite motors spin the same direction.

In that case, using them as boosters would work without modification, since they spin in opposite directions.

Set SERVOx_FUNCTION to 81 for those two motor channels and I’d guess you would set MOT_BOOST_SCALE to 1. This way, they will just put out a constant thrust equal to the throttle setting.

No, I don’t think that will work either… a hexa need all the motors to be in the same distance from the center (actually, all of them need to be on a circle), and in this configuration the motors on the lateral arm are either farther away or closer. This will cause coupling between yaw and roll actuation.

Thanks anyway!

Ah, it looked to me that the inner motors were the same distance as the motors on the other arms.

If they’re not too far off, I expect it should still fly reasonably well, if you just want to get in the air. But yeah, for optimal performance you’ll have to make a firmware change.

I looked at the motors matrix, and unfortunately it looks like it won’t be as easy as I thought. I thought the add_motor() function allowed you to specify the motor’s relative distance from center of gravity, but it doesn’t look like it does, so it is not so simple as copying the hex frame and changing some numbers.

1 Like