Tagged: F4 flight controller
15 August, 2015 at 11:57 #18157
Create superiour racing mini tricopter that can compete in the AGP 250 or 330 class closed course races.
Must be a tricopter. (Y4, Y6 are not tricopters). 3 motors – no more, no less. Must be durable enough to do races.
If possible base it on the RCExplorer parts – but don’t be afraid to think out of the box.
Traditional tricopters depend solely on the tail motor and servo to control yaw. Traditional tricopters are supposed to fly equally well in all directions and must be able to maintain a stable hover.
Racing tricopters have one objective: Fly first person view through a course – fast (and do crowd pleasing flips and rolls). It does not need to be able to maintain a stable hover, go backwards or sideways. It should fly more or less like an aeroplane. That means we do want it to bank when yawing – and yaw when banking. On a traditional tricopter layout the front left motor spins clockwise and the front right motor spins counterclockwise. This means when banking left, the right motor spins faster and the rotational force of the motor pulls the tricopter to the right on the yaw axis. The tail servo and motor have to work overtime to compensate. On a traditional tricopter this makes sense because the tricopter shouldn’t yaw when banking. But we WANT it to turn.
So my first proposal is: Change the hardware layout of the racing tricopter to: Left motor CCW, right motor CW. Tail: CCW (for self tightening effect on the bolts). – This will no doubt affect the ability to do perfect rolls in a negative way.
Now the Naze32 software needs to be able to use the hardware optimally. It needs to know which direction the motors are spinning in order to utilize the mass of the spinning motors to somewhat control yaw and take some of the workload off the tail servo.
My first five cents worth….15 August, 2015 at 12:53 #18158
I’m just a noob so I might say something stupid. I like this topic, if it can help @david for the mini. I think I’ve seen what you describe whil flying my mini, I was banking left and the tri dis yaw right. It might be a good idea to swipe the motor, even without changing the cleanflight code just to see if it help yawing.
I wish I could try right now but I’m still waiting for my new motor to arrive…
Also I’ve seen a comment on home page and the personne (I don’t remember who) propose to put 5inch prop on the front and 6inch on the back to have more thrust and therefore, more yaw. I’ll try to find back the video where my tricopter banking left and yawing right 🙂15 August, 2015 at 18:36 #18164
I like Terje’s proposal to better utilize the “hardware” of the tricopter to let the copter yaw naturally to the direction it is banking.
Rather than implementing the awareness of the turn direction of the motors in the Cleanflight, I think it would be sufficient at first to test implement it as a custom mixer on a radio. Add a portion of roll input to yaw. This would produce almost same effect than implementing it in software. We would tell the FC that it is okay to yaw to the direction we are banking to and that the yaw PID doesn’t have to correct it. The custom mixer does not however take into account the the forward tilt angle of the copter that I feel is important factor in the amount that it should let it yaw “naturally”. Also we would lose some range from the yaw input to the bank direction, but I think that is negligible effect.
In Cleanflight this could be implemented so that the I parameter of the yaw is dampened as a portion of the roll angle set point. This should in theory let the yaw axis to drift naturally by the rotational force of the faster turning propeller. In Cleanflight we could also take the forward tilt angle into account if needed. IMO Cleanflight wouldn’t even have to be aware of the rotation direction of the motors, as long as they are set up like Terje proposed. I would be interested in implementing something like this if I just had the time to do it :).16 August, 2015 at 10:55 #18177
I did find the time to implement the change to Cleanflight. The I term in yaw PID controller is dampened as a linear curve from 0 – 100%, when the roll angle increases between 0 – 45 degrees. At angles over 45 the dampening is always at 100%. When the copter is upside down the I term is not dampened.
I don’t know if this what Terje was after at all, but I’m liking it. Here’s a quick LOS test at my yard trying to show how it is working, in the video I’m not touching the yaw stick at all. It was hard to capture the effect in such a small space. So far I’m liking it, it does feel more like a plane now, just that a plane doesn’t do this while not going forward :).
I will test later today how it is working in FPV flight.16 August, 2015 at 11:02 #18178
Wow it works very well ! How you did program that ? I want to try with a mini, a soon as I get my new parts 🙂16 August, 2015 at 11:57 #18179
It is implemented based on 1.9.0 but it’s easy to cherry-pick to any version of Cleanflight. It uses the same method than TPA uses for reducing PID gains at configured throttle level. Instead of throttle level, this one dampens based on the roll axis inclination. TPA doesn’t touch the yaw axis at all so it is safe to use the same method for this purpose. I also broke down the TPA to individual PID controller terms in order to be able to control only the I term, currently it is a common value for all the terms. As it uses the TPA method, it also means that it only works on luxfloat and multiwii rewrite PID controllers.
I can share the HEX files later after I have done more testing. Currently it is only compiled for the standalone naze32 board. I can also compile it for the naze32 frame, just need to find out what changes have been made to the code, is there a commit in github that I could cherry-pick?16 August, 2015 at 14:28 #18180
RCExplorer – DavidKeymaster
Fantastic initiative on the thread Terje!
The last parts for the limited run of tricopters have been ordered. Now it’s 2-3 weeks until they arrive.
@Lauka great work! Interesting idea with decreasing the I term while banking. I’ll have to try that code when you get it done 😀
Just sent you an email regarding the max I term. That is the biggest issue at the moment. While diving the tricopter looses it’s tail after hitting the I term limit. It flies pretty good otherwise.
I could get it to fly even better if I had a separate TPA for the tail as well. I wonder how hard that would be to make happen?16 August, 2015 at 14:40 #18181
After FPV flight I’m impressed on how well it works, although the effect could be more aggressive. Maybe I’ll try to lower the angle in the next version, or even make it configurable in the CLI.
The tricopter now behaves even more like a plane, I’m liking it very much! It feels like it also helps in faster turns. Rolls are unaffected as can be seen from the video. I don’t believe this is the solution for the tail wag in the mini tri, but it would be nice if someone tested it out. I have attached the HEX files for naze32 standalone board and cc3d targets.
If someone wants to test this out, I have attached HEX files for naze32 and cc3d targets. I will compile a version for the naze32 frame later. Please first check that the thing is working properly on your board. In Cleanflight configurator, go to the Sensors page and tick the checkbox for debug values. Debug should represent the roll inclination of the copter in deci degrees. Debug is the applied reduction for I yaw axis I term, it should go down to 0% when copter is tilted to 45 degrees or over. Debug shows the I term values, try turning the copter on yaw axis on different roll angles. At 45 degrees roll angle the I term shouldn’t change at all. The last debug variable is the P term of yaw axis, this is just to check that it is unaffected to retain the yaw control when banking.
And remember switch the rotation direction on the front motors as Terje mentioned in the first post!
Attachments:16 August, 2015 at 14:45 #18184
@david I sent you the modified cleanflight with increased I term range for yaw axis on luxfloat.
The separate TPA for tail is not hard to implement once we have the concept of how should it work. I think it would be easiest just to try different approaches. Should it for example up the PID gains for yaw when it is getting rc input for roll/yaw axis?16 August, 2015 at 14:58 #18185
Sorry for flooding this thread, but I learned from David that the MPU6050 bug doesn’t apply in acro mode, so feel free to try it on naze32 frame as well. I forgot to mention in previous post that for this to work you should use either luxfloat or multi rewrite PID controllers for the TPA to work.16 August, 2015 at 19:24 #18186
Hi @lauka, great work – and fast! 🙂
I have reversed my motors on my 3S mini and loaded your firmware. I am not able to restore my backup settings onto your firmware version and am not able to change the servo settings in the servo tab. It seem you might have based your hex on the buggy original cleanflight 1.9.0 firmware or something? I can’t believe Dominic hasn’t fixed that bug yet, it is reported as being fixed 🙁16 August, 2015 at 20:07 #18188
@Terje: Unfortunately it is based on the official 1.9.0 release. I didn’t want to take any chances. That’s the issue with these unofficial releases, if the branch or the list of included commits is not available anywhere, it’s impossible for someone else to continue the work. At least I could not find a branch in github from SteveArmor. That’s the guy who made the custom firmware right? Here’s Steve’s branch of Cleanflight but lot has happened in that one after the rcexplorer firmware release.
If someone knows the list of included pull requests/commits, I can merge them in this version. At least this one is in, but that only touches the PID0 tail handling.
Hopefully it’s not too big work for you to take this firmware in to use. At least the CLI dump should be transferable from the rcexplorer firmware.16 August, 2015 at 21:05 #18191
On the subject of TPA (Tail PID attenuation :)); If I understood correctly from the issue posted by David at github, the I term of yaw PID maxes out when diving. When the copter is diving the thrust differential created by the faster spinning tail rotor requires more work from the servo. The normally working I gain is not enough to fight the force in this scenario.
In theory (again) it would help if TPA increased the yaw I gain during a dive, i.e. a pitch input based amplification. Would be worth to try.16 August, 2015 at 21:52 #18192
RCExplorer – DavidKeymaster
@Lauka Wow you do work fast! Got your email with the code. Testing it out tomorrow. Will report back as soon as I can.
Yes the I term maxes out during vertical dives with little throttle. As soon as it hits the max, the tail flairs out to one side. Hope the new code with double the max I term will do the trick. Thank you for the very quick work Lauka 🙂
It would be very useful to have the TPA on the tail as it would make it possible to have higher I and P during low throttle (low thrust) situations. But it’s not really optimal to have 80% TPA on the pitch and roll, so I’m currently running TPA that kind of works for both the tail and the P&R. I can post a dump for the settings I’m running as a few people have been asking. This thread seems like the right place to post it 🙂
Really cool idea with the “auto banking”. I believe some quad flyers mix some yaw coupling when racing to make things faster for them, but they usually do it through the radio 😀
@Terje: Should I make a forum for the Mini Tricopter? What do you think?16 August, 2015 at 21:57 #18193
You must be logged in to reply to this topic.