I wanted to open a new topic to announce that I am beginning to work with AC3.4 for TradHeli finally. I am reviewing the code, and will be posting my findings and updates here. As you may or may not be aware, I had to stop doing development work on the software last spring as I was mainly busy developing a new commercial UAV helicopter which is using Ardupilot, the Procyon 800E.
This is mostly done now and going into limited volume production. This system is still using AC3.3, but the time has come to start preparing to move to AC3.4, and with that, Iām conducting a fairly thorough review of the helicopter code. In this thread, I will bring up any important findings. And we can talk about fixes, Iāll give links to my patches, etc.
Also connected with this, Iām announcing that I am installing a PixRacer onto a Blade 250CFX RTF helicopter. This will be my main āhackingā machine, and I will also offer it for sale to Procyon customers as a ātrainerā. I will also be open sourcing the system so that anybody who wants an RTF system to play with Ardupilot for Heli can build their own. I will open a new thread just for this shortly, so please donāt post questions about it here.
So far, due to this work, I want to state that I have found a bug in the Direct-Drive Fixed Pitch tail control code. Basically, you canāt assign it to an output on the Pixracer, and also the math for the control output is completely wrong. I donāt advise using this right now. Iām working on a patch for it now. Iāve also added a new feature for trailing edge pitch control required for the 250CFX or any heli that has trailing edge pitch links.
every FBL-unit I use returns the swash plate in about 4-5 seconds after a full stick input back to neutral (something like 1/2 value after every second), the current code needs about 5 times longer. Could you please implement this faster leaking or can we have a parameter to set it ourselves.
Interesting. We already do leak the I-term quite quickly. Should be about 4-5 seconds. I think what might be causing what you see, is that when you push the stick, the target attitude moves up to 10 degrees, and holds indefinitely. So that will permanently offset the swash a bit.
Now, besides ābecause the others are doing itā is there a functional reason to make a change like this? I donāt have any issue with our current system due to this.
So, another issue that has just cropped up. Thereās an issue with PosHold, where if you take off in Stabilize or Acro before the Motor Runup is Complete, then switch to PosHold, it will jump to full down collective. Basically, because it wonāt try to fly until Runup is complete in any auto-throttle modes.
Alt_Hold and Loiter will actually fail the mode change if you try this. But the check was missed in PosHold. I donāt use PosHold, havenāt tested it, and donāt plan to. I had wanted to simply completely disable these modes for TradHeli. Same goes for Flip, Drift, and maybe a few others.
Oh, another issue, and this is actually a pretty big one:
If your LAND_COL_MIN is set too high, such that the helicopter has trouble descending for a landing, then during an RTL or Land Mode, it can think that it has landed, and disarm in the air. I had a bad crash because of this. This also affects large efficient multirotors.
For helicopters, making sure you have sufficient negative pitch to descend will avoid the problem. In my case, I had set LAND_COL_MIN to give nearly zero pitch because I had a ground resonance problem. I fixed that with stiffer landing gear, but forgot to change this to a more reasonable negative pitch value (-3 or -4 degrees should be enough). During an RTL on a windy day, it disarmed and fell from 30 feet.
However, Iām working on a patch that will add a check for the Motor Interlock to be False before accepting a Land Complete. This is a double edged sword. It prevents any chance of a mid-air disarm because of a false-positive Land Complete. But it also means that after an RTL, etc. the copter will not disarm until the pilot drops the Motor Interlock. This will be an optional feature.
We actually depend on PosHold mode, so Iād prefer it to remain in the code. Iād be happy to help with testing and make any changes necessary to keep that file up to date with other modes for the heli. I was planing on using/modifying Drift mode for TradHeli also, so maybe I can test and update that file too.
This sound like a great idea as we had a problem with this too.
However, Iām working on a patch that will add a check for the Motor Interlock to be False before accepting a Land Complete. This is a double edged sword. It prevents any chance of a mid-air disarm because of a false-positive Land Complete. But it also means that after an RTL, etc. the copter will not disarm until the pilot drops the Motor Interlock. This will be an optional feature.
Iāve been flying various versions of 3.4 for sometime now and I have a few potential issues to add to the list. Iāll summarize them in another post later.
I will then leave PosHold in if you are using it and are sure itās not going to crash the helicopter. I will add the check required so that it will fail the mode change if the rotor isnāt up to speed, same as AltHold and Loiter do currently. It can sometimes be an annoyance, but at least itās safe.
Hello, I also have this problem. Firmware AC 3.3.3 in the RTL mode, fell from a height of 25 meters. So it was 3 times the RTL mode. This is a problem, it would be good to solve it.
Yes, itās not a 3.4-only problem. It can happen in 3.3 as well. The root cause is having LAND_COL set too high, but it should not happen in any case.
Though H_COL_MIN would play a role as well. The two combine to give you the minimum collective while trying to land. If it doesnāt descend while on H_LAND_COL_MIN, then it assumes it is on the ground and disarms.
Basically, if you are in Loiter mode while disarmed, you should have at least -3 deg pitch on the blades.
I changed all my helis to Pixhawk + FBL-unit because of this. If I try to launch a Pixhawk only setup on rough terrain I get in trouble, while any standard FBL-unit doesnāt present the slightest problem in the same situation, because the swash is neutral.
What sort of terrain are you launching from? Iāve never had an issue. Are you launching from Stabilize or Acro? Stabilize will always push the swashplate over, I canāt stop that while still having it stabilize. Have you ever tried to take off on rough terrain with an FBL in self-level mode, and how does it behave? If you are taking off from rough terrain in Acro mode, when you arm it, it should accept āwhatever angle itās currently atā as the neutral point and wonāt try to pull it level.
Most of my helis are tail-draggers, and Iāve not had an issue. So just trying to get a full understanding here.
I am flying in the mountains after hiking up above the treeline to get to the area of interest. The launch and landing āareaā is usually a very small spot with lots of gradient and there is no hard and even space for the skids. This means the heli will rock no matter how smooth the rpm goes up. Because of the swash inclination I am forced to do a little bit of countersteering with the sticks and the whole launch process is getting āvery interestingā. āOfcourseā I can launch and land only in Acro mode, using ACRO_TRAINER = 0 in this terrain. Launching / landing at the local club I have no problem to use the higher modes, but on the slopes Acro is king (PosHold, RTL and Auto for flying missions).
Using a VBar or whatever else in the same situation I do the stick movement test, check the reaction of the FBL, walk back, start the motor, look more or less relaxed how strong the heli rocks and lift off. For the same reason I am on ACRO_TRAINER = 0 I do not use any self leveling mode with VBar for launch and landing. Any kind of self-level mode would yield to another one bites the dust (actually rocks) as the blades would strike on the hill side.
The heli code is way more sensitive on the PID settings than any FBL-unit I have and - sorry to say - it doesnāt feel as good for me and some others.
I am willing to help as much as I can (but my spare time is limited).
I donāt know what the situation is for ultrafuge, but we also use FBL in conjunction with Pixhawk, mostly because our heli pilots are used to FBL (I personally like helis with good old stabilizers, but thatās another topic) and itās much easier and quicker to set up and get it in the air. FBL also seem to be able to handle harsh vibrations without much care given to isolation/dampening or tuning. Another reason is that we have a switching system as a failsafe so we can bypass the FC completely if anything goes horribly wrong and still be able to fly the heli manually using FBL.
Anyways, in our setup, we needed to reset the FBLās swash control everytime before taking off so that the swash returns to neutral, especially when the surface is neither perfectly level nor smooth, which we expect most of our use case to be.
We are using Futaba CGY750, and when we initially tried to use Futabaās AVCS mode which has almost no I-term leakage, the heli would tilt and drag itās feet and tips over or fly off in random direction when taking off. The situation is worse for experienced pilots as they unconsciously react and move the stick around and tilt the swash even more. The way to reset the swash (and rudder gyro) on CGY750 with AVCS mode engaged is to give full right and full left repeatedly within one second so thatās what we did right before taking off.
Now we only use āNormalā gyro mode on CGY750 and it seems to be working fine.
Nice to see your return here Rob.
Just checked my H_LAND_COL_MIN and it is zero, seems that was the default when upping to 3.3.3
With that I have about -7°
But I donāt understand the point of adjusting (upwards in my case) this if I set LAND_SPEED appropriately?