Can the center of gravity for a tricopter be adjusted

I know that i have to move the weight on the hardware and this is also my intention. But in the documentation it says to fly properly we have to put the cog of the hardware to right place for the autopilot to function properly. And that is exactly what I would like to change.

So for example for a take of the autopilot will know due to the change of the cog, it has to give 60% thurst to front rotors and 40% to rear. This might work now for simple moves but i think it would not fly very safe with complex turns and movements.

You will have to make sure the CoT is at the same place as the CoG. If you want to have the CoG further forward, make sure the front motors have more thrust and/or the rear motor less (bigger props/smaller props). There is nothing the autopilot can do to achieve this. It will be difficult to get a result which is balanced over the full throttle range. I have built something like this years ago as a T-pentacopter. Four motors on the front arm and one in the rear. This moves the CoT forward and therefor the required CoG further forward as well. It was quite flyable, because all motors/props were the same. No imbalance over the throttle range.

1 Like

Hey Sebastian,
I am currently working on a capstone project and we are trying to do a copter design with 4 Motors in the front and one motor in the rear. We are using Pixhawk as our flight controller and in Ardupilot we have set the copter up as a “Y tricopter” with the front four motors connected in parallel and one motor in the rear with a servo mechanism to stabilize yaw. When conducting flight tests of our configuration we are having major roll issues and are now wondering if that is due to our configuration itself.

I found your post here and it sounds like you have some experience with something along the lines of what we are trying to do. I was wondering if you could provide some specifics on how you got your T-pentacopter to have stable flight.

  • Is the roll issue something we can account for by tuning such as changing the PID values/gain values or is this not possible due to our configuration?

  • Would we have to tell the pixhawk that there are five motors somehow or is it fine that we have two pairs of motors connected together in the front like our configuration?

  • Has anyone ever done anything like this that someone could point us to?

Any help is greatly appreciated!

Hi Jack @Jack_M1,

first, if you say “four front motors in parallel”, I guess you mean in pairs of two, left and right, correct?

I build my pentacopter years ago and I used an openpilot coptercontrol board for it. Openpilot had some unique features, like a freely configurable mixer. I can not remember it all, but I think, I used the front inner motors and the rear motor for pitch control and the front outer motors for roll control. Lift throttle on all five motors and rear tilt servo for yaw, of course.
I did try to build a tricopter with ardupilot once, but never could get the rear servo to stop oscillating, so my tricopter knowledge with ardupilot is a bit outdated.
Nowadays you can program your own mixer using a lua script. This would have the benefit of being able to experiment with different mixer setups, like I did with the seperated roll/pitch motors. I do not know the exact layout of your copter, but if it looks like a “T” with the front motors in one line, the motors on one side will need different throttle scaling for roll input, because the outer motors have to travel further than the inner motors. This will not work with an y-cable.
I got my pentacopter to fly really stable. The control seperation was a noticable improvement over the “all front motors do roll control” mixer setup. With the seperated setup each of the front motors had only two tasks to work on ( lift/roll, lift/pitch), instead of three. Sadly one of the ESCs burnt out and those ESCs were not available anymore. So instead of buying five new ESCs, I converted it back to a regular tricopter.

Thank you so much for the response!

Yes, when I said “four front motors in parallel”, I meant that they are connected in pairs, two left and two right. The front four motors are in one line and there is a rear motor for pitch and yaw control attached to a servo in the rear.

This setup would not work even if we tuned the PIDs correctly because of the need for different throttle scaling for roll input on the outer motors?

This is our first time designing a copter like this. Keeping that in mind, how hard would it be for a beginner with no prior experience with programming using lua script to develop their own mixer?

This is a duplicated post of Adding two motors to tricopter script

Please stop posting duplicated posts


IIRC Ardupilot mixer is limited to thr=1.

What are you refering to?

Unlike for example betaflight ardupilot mixes assumes throttle mix to be 1.

How does this affect someone trying to set up a configuration like the one described in the post? Is it feasible?

It’s all feasible, but you do need to start learning lua scripting.

It makes it slightly harder because motors seem not to respect channel settings for whatever reason. You need to physically balance the thrust instead of tuning down some motors.

Though AFAIK Arducopter isn’t bad at dealing with minor COT displacement.

Can you suggest any resources for learning lua scripting? I have some coding experience but nothing like this type of project.

I have started learning about Lua scripting. A lot of the scripts I have seen for custom copter configurations simply define the motors orientation and yaw control. But for my configuration, since it has an odd number of motors the rear motor needs a servo for yaw control. Is this something I need to account for in the Lua script? I originally thought that I could start with a tricopter configuration and then write a script to just add two independent motors but it seems like I need to completely define a custom configuration. Is this accurate?

You can probably use the standard tricopter configuration with two scripted outputs for the extra motors, scaling their outputs based on position and the output values of the other motors. That’s where I’d start.

Actually, I’d just solve a hardware problem with hardware. I know you’re trying to do your best within a limited budget, but time is money, and this kludge of just adding motors seems like an awful waste of time (and likely, airframe efficiency) by comparison to simply right-sizing tricopter components for thrust required.

I think I’m watching your “ArduPilot Lua Scripting” YouTube video right now, it’s very helpful.

As for the hardware solution. I agree this would probably would have been a better solution, unfortunately my team did not discover this problem until recently and we are now essentially out of money, and have a little less than a month left of the semester. So we are trying to do our best with what we have.

So going with the standard tricopter configuration, I was thinking I would add the two motor outputs, positioning the added motors inboard and setting their roll control to zero and outputs slightly scaled down from the two existing front motors. The two existing front motors would then be outboard with full roll control.
Does this plan make sense?

Here is an idea maybe no crazier than what you have. Move the inboard wing motors to the bottom/rear of the wing coaxial with the outboard front motors.

1 Like

In very basic terms, I think that’s reasonable.

For the scaling function, I think you’d want to calculate a slope and intercept from the outboard motors (using lateral position as X and output value as Y) and calculate the inboard motor values using that. As a brief example:


Use the scaled output bindings in Lua rather than raw PWM values.

@dkemxr, I also thought of a coaxial design, but it seems they’ve already modified their craft with the inboard/outboard solution. The coaxial route would definitely be simpler, though, if it’s possible to make further physical mods!

Yes, perhaps not enough time for a re-build and there would still be issues to solve. It occurs to me that if you had a coaxial rear motor also it would be a Y6 TriPlane. Not that you would need additional thrust there just interesting.

1 Like