How to make APM work for tricopters so the tail doesn't "wobble"?

Donnut

Member
I've got a trifecta frame with APM 3.2.1 and digital tail servo.
As soon as you throttle it up a little the tail starts wobbling left and right really violently. It becomes totally uncontrollable in the air. I've experimented with various PID values to no effect. The most I could achieve is to make the tail stiff which is no solution either :)

Interesting thing I noticed today is this only happens with the RC7_REV parameter is set to -1 (default is 1). This is done as per the APM instructions and is made so when the yaw stick is left, the tail turns right as it should be.
With the default setting of 1 the tail turns left when the yaw stick is left.
I immediatelly reversed the yaw channel on the radio thinking I've found a solution, well it doesn't wobble but just rotates around itself rapidly.


So after days of experimenting and second APM board, I can't find a way to make APM works with a tri. Which is odd because i've seen plenty of videos of this combination.

At this point looking for advice what else I could try. uh :(
 

makattack

Winter is coming
Moderator
Mentor
Ah yes, the old mini/micro APM and trifecta monster! It works, but it's not pretty, unfortunately. I had to do a lot of extra fiddling to get it working well.

In summary, this is what I did:

1) Find a better digital metal geared servo for the tail yaw assembly and ignore the HK recommended servo: http://www.hobbyking.com/hobbyking/..._Servo_1_8kg_0_10sec_13_4g_AR_Warehouse_.html
2) Shield the GPS receiver with some copper tape underneath it so it would lock on satellites more reliably
3) Twist up all the wiring and add a ferrite ring to the tail servo signal lead to further isolate noise from parts that are sensitive to RF/EMF noise
4) Tidy up all the wiring so that none of it bumps or is touching the APM other than at the connectors. This was part of vibration mitigation.
5) Balance all the props and motors, including with dynamic balancing (using the APM vibration monitor and carefully running up the motors with the props installed, one at a time (I just disconnected the motors I wasn't balancing)
6) Tune the PID's to pitch, roll, and yaw manually. This probably took the most time. I didn't even try auto-tune: Rate P: .114, I: .05, D: .004

All the details of the above, I documented on a different forum, just because there were more APM/trifecta users on it:
http://www.rcgroups.com/forums/search.php?searchid=57310190&query=

You've already discovered that you can't setup channel reversing, etc on your TX, because all of those functions are essentially moved to the APM which is actually what controls the ESCs, servos, etc. The twitching is probably from a combination of vibrations, slop on the tail assembly, and PID values being out of whack. Always not only verify that the servos and motors behave as you command from your TX sticks, but also, CAREFULLY, run up the motors (ideally without props for safety, but that makes it harder since you need to observe closely to see what motors spin faster) and move the airframe on the pitch, roll, and yaw axis while in stabilize mode and verify that the APM tries to correct in the opposite direction.
 
Last edited:

LitterBug

Troll Spammer
Also make sure your Trifecta tail pivot operates smoothly. If it binds at all, you will have all sorts of problems. The soft aluminum gear pivoting on the steel shaft is a binding nightmare. I had to take 800/1500 grit sandpaper to the parts and then lube them to keep the binding from occurring. Currently using a light coating of white lithium grease, but am going to test using graphite powder if I have any more problems.

Cheers!
LitterBug
 

RGJameson

New member
Also make sure your Trifecta tail pivot operates smoothly. If it binds at all, you will have all sorts of problems. The soft aluminum gear pivoting on the steel shaft is a binding nightmare... Currently using a light coating of white lithium grease, but am going to test using graphite powder if I have any more problems.
Not a good choice.
Graphite archaically referred to as plumbago, is a crystalline form of carbon, a semimetal, ... The fourth electron is free to migrate in the plane, making graphite ... For this reason, the US Air Force banned its use as a lubricant in aluminium aircraft, and discouraged its use in aluminium-containing automatic weapons.
 

makattack

Winter is coming
Moderator
Mentor
Oh yeah, I had forgotten that... I also used a parafin based (wax) lubricant on that tail shaft: Boeshield T-9 which I also use on my brushless motors ;)

I had that stuff for lubing my bicycle chains, so I figured it would do for these purposes. Probably the best thing to use would be just a simple light machine oil, which I didn't have handy.

Funny enough, that stuff seems to be used in the aviation industry too (I guess that explains the name):

http://boeshield.com/why-boeshield/
http://www.experimentalaircraft.info/articles/aircraft-corrosion-protection.php

Haha, EAA seem to suggest it's use as a covering/rust inhibitor.
 
Last edited:

LitterBug

Troll Spammer
Oh yeah, I had forgotten that... I also used a parafin based (wax) lubricant on that tail shaft: Boeshield T-9 which I also use on my brushless motors ;)

I had that stuff for lubing my bicycle chains, so I figured it would do for these purposes. Probably the best thing to use would be just a simple light machine oil, which I didn't have handy.

Funny enough, that stuff seems to be used in the aviation industry too (I guess that explains the name):

http://boeshield.com/why-boeshield/
http://www.experimentalaircraft.info/articles/aircraft-corrosion-protection.php

Haha, EAA seem to suggest it's use as a covering/rust inhibitor.

Good stuff Guys! Thanks for the ideas! Guessing the white lithium should be OK for the time being?

Cheers!
LitterBug
 

Donnut

Member
Thank you all! Seems like there is a lot of work ahead of me but those are great suggestions.

Yesterday I played with just the yaw stabilize and yaw rate PIDs and MANAGED to completely eliminate the tail shake. Well now it rotates around itself to the right and is still unflyable but I consider this major progress, lol :)
 

LitterBug

Troll Spammer
Keep us posted with all your fixes! I'll be going through much the same in the next week or so on my Trifecta.

Cheers!
LitterBug
 

Donnut

Member
Ok my RC7_TRIM value (it applies until apm 3.2.1 then it's another value) was at the default of 992.
I set it at the middle at 1500 and that seems to fix most of the yaw to the right, it was actually flyable for a bit, but then it started oscillating quite a lot.
So that seems to be very important :)
 

Donnut

Member
- I tidied up cables around the APM so nothing touches it.
- mounted it better so it doesn't move at all
- twisted the tail servo cables
- re-calibrated accel
- i'm with digital servo from before

it still yaws to the right and oscillation a lot when with low throttle. Oscillation goes away when you push it up.

However the yaw to the right is too much to fly it.
It was way worse when RC7_TRIM was to the default of 993. I set it arbitrary to 1500 since this is kinda in the middle, but how to find the perfect value? I have a feeling this might be causing the yaw to the right.

The oscillation I'll fix after that with PIDs experimenting.


20160812_094441.jpg 20160812_094336.jpg 20160812_094344.jpg 20160812_094358.jpg 20160812_094408.jpg
 

LitterBug

Troll Spammer
- I tidied up cables around the APM so nothing touches it.
- mounted it better so it doesn't move at all
- twisted the tail servo cables
- re-calibrated accel
- i'm with digital servo from before

it still yaws to the right and oscillation a lot when with low throttle. Oscillation goes away when you push it up.

However the yaw to the right is too much to fly it.
It was way worse when RC7_TRIM was to the default of 993. I set it arbitrary to 1500 since this is kinda in the middle, but how to find the perfect value? I have a feeling this might be causing the yaw to the right.

I would double check your radio calibration to make sure the center and end points are correct.

The RC#_TRIM parameters are for the radio channel Center points. They should be set to the value that you see in the [Radio Calibration] tab under [Initial setup] when your sticks are centered. I just went through something similar with my APM quads when I switched from PWM to PPM RX input. I had to remap the Throttle, Roll, and Pitch channels since Spektrum uses different channels for those functions compared to APM. Unfortunately for me, when Mission planner stores the center points after calibration, it does not remap the RC#_TRIM channels to match the RCMAP_#### channels. First time I tried to take off, Roll center was at 1001 (since it was swapped with throttle) and I had to use full roll to keep it from flipping.

I'm not familiar with the tricopter tail servo in APM. Where in the APM config do you configure the center and endpoints for the servo? I'm using TriFlight on an RCExplorer F3FC Racing controller.

Cheers!
LitterBug
 

makattack

Winter is coming
Moderator
Mentor
Thanks for those pictures. That's really helpful. I would suggest that rather than use electrical tape over the flight controller to secure it, maybe buy/use some double sided foam tape like they use for insulation. I would use a stack of multiple pieces for further vibration isolation. APM sensors really don't like vibrations.

I've never had to change / adjust the RC7 trim, but I would only suggest that if it yaws on it's own, something isn't right. It could be the PIDs are still way too high, and if that's the case, it will never fly correctly. I wouldn't fly with the default PID's.

I would look to ensure that the yaw servo control is set correctly. It needs to behave correctly from TX commands (e.g. you give left yaw on TX, the rear motor should point the top of the motor to the right) and via FC commands (e.g. arm, throttle up w/o props, pickup tricopter and yaw left, motor top should point to LEFT to counteract left yaw. Same with opposite/right yaw)
 

LitterBug

Troll Spammer
From the Arducopter configuration page: http://ardupilot.org/copter/docs/tricopter.html

Copter 3.3 (and higher)
MOT_YAW_SV_MIN: yaw servo’s lowest PWM value before binding occurs.
MOT_YAW_SV_MAX: yaw servo’s highest PWM value before binding occurs.
MOT_YAW_SV_TRIM: yaw servo’s PWM value close to what is required to keep the tail from spinning.
MOT_YAW_SV_REV: yaw servo’s reverse setting. +1 = servo moves in default direction, -1 to reverse direction of movement.

Copter 3.2.1 (and earlier)
RC7_MIN: yaw servo’s lowest PWM value before binding occurs.
RC7_MAX: yaw servo’s highest PWM value before binding occurs.
RC7_TRIM: yaw servo’s PWM value close to what is required to keep the tail from spinning.
RC7_REV: yaw servo’s reverse setting. +1 = servo moves in default direction, -1 to reverse direction of movement.

So adjusting RC7_TRIM would be the correct way to center the tail servo yaw.

Cheers!
LitterBug
 
Last edited:

Donnut

Member
- I did reset the accel and radio calibration after setting the TRIM to 1504. That's what the radio calibration shows when stick is in center.
- RATE_YAW_P was at 0.150 when I managed to eliminate the tail wobble. This is the minimum. Well I used the full parameter list to set it to everything to 0.00
The lower I go the less the tail would move left and right. At 0.00 it wasn't moving at all. Yawing to the right wasn't elimanted at all. I decided to try with higher values, at 0.260 it seems to stop yawing to the right. The tail is rotated to the right enough to counter the rotation. But the violent tail wobbling appears again.

Well I managed to calm it down by raising the D value from 0.00 to 0.008.
Now it just rolls to the right, lol

This all seems like a lot of shooting in the dark with kinda educated guesses :)
Isn't there some automatic way to do it better?


- the board has double sided sticky foam underneath. The electrical tape is just to set it tight so it doesn't unstick before it's cured.
It's few MMs so I imagine vibration isolation isn't great but there isn't much space for anything else really :(



RC7_MIN: yaw servo’s lowest PWM value before binding occurs.
RC7_MAX: yaw servo’s highest PWM value before binding occurs.
seems to have been auto set by the FC after I calibrated the radio cause they were matching the lower and higher point of the yaw
RC7_TRIM I set to 1504, it was set to 900+ something by default wow

RC7_REV i set to -1, that's needed to behave correctly. When you roll the stick to the right, the servo moves the motor to the left. Same happens when I move the copter by hand to the right. So that works correctly as directions.
 

makattack

Winter is coming
Moderator
Mentor
Err... That sounds like your problem there. If you pick up the tricopter, yaw it to the right/clockwise, the motor should oppose that by also pointing it's nose to the right to give it left yaw thrust.
 

Donnut

Member
Err... That sounds like your problem there. If you pick up the tricopter, yaw it to the right/clockwise, the motor should oppose that by also pointing it's nose to the right to give it left yaw thrust.

You sure?
I read that when you move the yaw stick right, the tail motor should tilt to the left.
And it seems to work that way, it rotates to the right when the tail motor is tilted left.
 

makattack

Winter is coming
Moderator
Mentor
No, read the above instructions more carefully. In addition to testing with your rc transmitter, you need to ensure the apm will OPPOSE an uncommanded yaw action. So if you pick it up with the motors running and no props, and yaw it, it should oppose that action in stabilize mode. If not, it will just keep spinning in circles no matter what.

Also, it doesn't hurt to verify your RC calibration and TX configuration with this:

http://ardupilot.org/copter/docs/common-radio-control-calibration.html

Make sure the below is true:
The green bars should move in the same direction as the
transmitter sticks (except for Pitch where the bars move opposite to stick movements - low values are forward, high values are back). If the green bars move in the wrong direction, reverse them using your RC transmitter’s channel-reverse function (see your RC gear’s manual for guidance).

If that is setup properly, then you do the test without the props and by picking up the tricopter while it's armed and the motors are running in stabilized mode to verify the yaw servo reversal RC7_REV is correct:

http://ardupilot.org/copter/docs/tricopter.html

In addition to yaw, I would check the roll and pitch just to be safe as well... If you pitch forward, the front motors should spin faster to compensate. If you roll left, the left motor should speed up.

I made a quick video demoing what I'm talking about:
https://dl.dropboxusercontent.com/u/25601637/apmTricopterYawDemo.AVI

This gentleman talks about this in this video at the 3:50 minute mark:
https://youtu.be/dVX4R8iJTq4?t=3m50s
 
Last edited:

Donnut

Member
Thank you!

It does try to compensate when I rotate it by hand.

Also when I move the yaw stick to the right, the tail motor top moves to the left, but it yaws to the right as expected.
All the movement seems correct actually.
huh :(
 

makattack

Winter is coming
Moderator
Mentor
Well, that's certainly unusual. So it opposes all the movements on the yaw, pitch, roll axis as desired? Have you checked that with it connected to mission/apm planner as well? The artificial horizon ball/bubble should match the movement of your tricopter correctly.

What are your pid constants/values? At this point, I would put on the props and very carefully arm, securely hold the aircraft in hand and run up the motors to 1/4 throttle and feel what is doing with both stick commands and also by rotating it on all the axis' (heh, wind command) to see what it does. Definitely keep all body parts away, including eyes, wear safety/protective gear, keep loose objects clear.

If it all behaves as it should, it really should be stable and points to either a tuning problem or a completely defective system somehow.

Just to cover the basics, how did you calibrate your esc's?
 
Last edited: