Preparing for Autonomous Takeoff and Landing with TradHeli

Hey there…

So, with help from the Wiki, the tuning guide, and @Leonardthall I’ve got my 700E flying very well in AltHold, Stab, Loiter, and Auto. I’ve got Auto missions running at 25m/s very well now with a head speed of I think ~1800rpm.

I am hoping for some pointers, gotchas, things to look at and things to expect when it comes time to do an Auto mission from start to finish, rather than taking off and recovering myself. I’m happy to provide my latest log if someone wants to have a look, but any comments in general on things to just sort of “double check” before I attempt these things would be very helpful and appreciated. I’m running latest release of ArduCopter, btw, not the L1 branch that looks very exciting.

Thanks in advance!

edit: I should have mentioned, I’ve got plenty of experience in Auto with Plane and Copter, this is merely my first dive in to full auto with Heli.

Hi Josh! @Leonardthall had told me that he was working with you to tune your Heli. I would be interested in seeing your param file and a log file with stabilize and loiter.

I don’t have anything specific regarding issues with auto takeoff and landing. Do your run up in stabilize and wait for the run-up timer to complete. However it should not allow you to change into auto until run-up is complete. Just remember in stabilize that the integrator is working and the ghost is released once you flip your throttle hold switch off. So any input you make into the cyclic on the ground will try to make the aircraft seek that new attitude.
That’s all I have. I’m sure there’s others that are more experienced with auto takeoff and landings than I am and may have some nuggets of wisdom.

Hey Bill, thanks for your reply!

So, here is my log file: 00000055.BIN

and here is my param file: 00000055.BIN.param (14.5 KB)

Definitely appreciate you taking a look. There isn’t much STABILIZE flight mode in this one, just because LOITER is so awesome. I’m actually very happy with it in LOITER and only use STABILIZE to take off and land, and that is because when I land in Loiter, the copter never disarms, just tries harder and harder to descend in to the dirt until I hit the interlock. This is actually the root of my concern with auto landing… knowing that the copter will successfully and safely disarm when landed vs integrate itself in to oblivion but I may be just over thinking that. I also want to make sure I have an set the spool-up time appropriately such that the copter won’t try to take off until the rotor is at speed. It takes maybe 4-5 seconds for that to occur?

Anyways, very much appreciate you having a look, thanks again for your reply!

What does your COL_MIN, MID and MAX correspond to in degrees of collective pitch? that will probably go a lot further to answer my next question. What does H_LAND_COL_MIN correspond to in collective pitch in deg? This parameter sets how low the autopilot can lower the collective when landed.

It is not designed to disarm by itself in loiter. It should sit there and not try to self destruct by putting the collective too low. the min collective allowed by the autopilot when landed is the land_col_min parameter. we need to get that working properly before trying auto landings. At the end of an auto landing it should disable the motor interlock and disarm.

You have the runup timer set to 10 seconds so that should cover your estimated time to achieve operational RPM.

10 deg in both directions

I’m not sure but I think like -2 or -3. I feel like we had a little confusion on this because it isn’t angle, it is a percentage of the COL_MIN and we just sort of swagged it. I can try to check this tonight, but this is the kind of question I was looking for. Can you suggest a target angle for this? I’m assuming somewhere in that -1 to -3 range?

Can you confirm this is not going to be hit if the autopilot sees the helicopter still descending? I imagined this as a 2-part process, where altitude wasn’t decreasing AND Collective was at H_LAN_COL_MIN, but I may be mistaken?

Very helpful, thank you!

Ok I remember seeing that value. I will look at/verify my seconds between arm and when I raise collective in a normal flight and make any changes deemed necessary.

Chris has recently pushed a change to master that removes the land collective min parameter and that is replaced by the collective mid parameter for the landing swashplate minimum value. It uses the land collective min value when it is no longer in dynamic flight which is defined by the velocity being less than 5 m/s. So if your collective range is set for plus or -10° then I think you should set your land collective man value to 400 initially. Then start the aircraft up in loiter and see if it’s appropriate without causing ground resonance. On the bench you can always put the aircraft into loiter and see what your collective pitch is at.

By the way, generally for UAV helicopters we do not set up collective pitch like that. Typically it’s -2° to 10°. Is your aircraft set up more like a sports helicopter or a UAV helicopter. The reason I ask is that UAV helicopters typically run almost twice the weight of a sport helicopter for that size. I just mention that because it may affect the tuning technique that Leonard has you’re doing.

Josh, the only other thing I was suggest regards to your tune. I would set your ILMI parameter higher for pitch and roll. Currently The controller will not have enough authority to hold attitude if you have high ambient winds in a hover.

You have it set to -6.5 degrees. With symmetric airfoils it should be set to feather pitch, with asymmetric airfoils to zero thrust pitch. You can pull maybe -1 or -2 on the ground but any more than that is a problem. Even 3D helicopters are not set up with negative pitch in Condition Normal for takeoff and landing. The idleups will have negative pitch setup with corresponding change in headspeed, curves and mixes. But ArduPilot doesn’t have any of that.

Great question, and I am glad you asked as it is obviously a very relevant point that I should have covered in my initial post. So, the heli is a sport helicopter that has been pulled back a bit (mostly by my skill level) to be able to perform UAV type missions but also do some mild to medium acro eventually. I intend to use it as a fun/training platform and potentially a POC platform down the road if I do more with Heli in the commercial sense. @Leonardthall was aware of this all along and I am able to confirm knowledge of that fact was a factor in all discussions around how I wanted the tune to perform. Truth be told, I’ve flown this with BeastX in the past and love it, but I never developed my 3D Heli skills beyond some back flips, maybe a front flip or roll, and maybe a couple seconds upside down, so the safety of ArduCopter available to me as I practice that kind of stuff more, as well as perform some FPV, is very very attractive. I could always fly it scale well enough, but the idea of the extra safety blanket is just too awesome to pass up!

on the surface, this strikes me as less safe, but maybe I am reading it incorrectly… I suppose the part I’m missing is that at mid collective I’m producing no lift with assymetric blades, so I’m probably falling. The question becomes - am I falling at a speed less than or greater than 5m/s. I suppose the logs will help me feel more comfortable with this one.

Can you confirm which param you meant there? land collective man?

Thanks Bill, I’ll have a look at the tuning guide for these specifically and see what makes sense. I appreciate you calling that out! I’ll get a new value there and then come back and see if it is closer to what you’d expect.

Oh my. Thanks Chris, I’ll set it to the same value then as COL_MID as I am running symmetric blades.

Sounds like I should go for neutral here, will adjust

I agree with this, generally speaking, but I’ve gotten procedurally solid with bringing the collective up when I idle up. Perhaps I should do a curve on the Collective like you’re mentioning to further the safety here. I saw your other post about having curves for Acro, and that is on my list of things to eventually try as well, but at the point i’m at now if I leave Loiter with the Collective dead center and go to Stab, the copter holds altitude perfect and just begins to drift if there is any wind, but in no wind it will actually hold station reasonably well considering it isn’t actively trying. If I am off-center on Collective in the slightest when switching from Loiter to Stab, the helicopter lets me know immediately. A switched-on curve to have mid-band expo here would probably help with that. Do you agree?

If you are only using Stabilize then the four-point curve built into ArduPilot should work to line it up. The benefit of using custom expo and collective curve in the RC is only really seen in acro using the new virtual flybar acro we developed. Getting rid of all the negative pitch you don’t need makes the collective much smoother to begin with. All basic sport maneuvers, including loops, rolls, Immelman, etc do not require negative pitch as they are all positive G maneuvers. The only reason to have any at all is to recover lost headspeed in autorotation in the event of in-flight power loss. And even then negative pitch is not required as long as you have decent airspeed over 20kts or so.

RC helicopters usually have to have a slight amount of negative pitch as they don’t have the advanced blades that full-size have. Like a Jet Ranger’s blades has 14 degrees of washout root to tip. So at feather pitch the tips are technically at slight negative pitch on the Jet Ranger, but still positive angle of attack in autorotation, and the Jet Ranger can’t be autorotated below 58kts IAS. Your RC blades are simple straight airfoils so to get that same effect you’ll have to set up with like -2 or -2.5.

1 Like

H_LAND_COL_MIN is a value between 0 which corresponds to COL_MIN and 1000 which corresponds to COL_MAX. So you don’t want to set it to the same value as H_COL_MID which is in PWM. In your case a value of H_LAND_COL_MIN of 500 would be 0 deg collective. So you can set it to that value or slightly less.

As far as ILMI, you could probably get away with a value between 0.07 and 0.1. That should be enough integrator to hold 4-5 deg of attitude error for wind compensation.

Hey Chris, not sure why you made that comment, but I’m going to assume it wasn’t meant to be as passive-aggressive as text-on-the-internet can make that sound and clarify something: One of my stated intents is to learn more acro with a heli while also being able to do other activities like Scale flying, potentially FPV and SUAS POC (survey, run out to a spot take a pic and run back, etc etc.) Acro is much more than loops and rolls, but I wonder here if you confused what I said I’m capable of comfortably today with what I intend to be better at tomorrow, things like rainbows, tic-tocs, inverted hover, inverted flight, inverted pogo, etc. The list can go on as you know. The negative collective is needed, and staying, so let’s move past that.

This reminds me another question I was hoping to get your and Bill’s thoughts on: Am I correct in assuming this scheme assumes throttle (H_RSC_MODE) is in 1:CH8 Input vs 3:Throttle Curve? I ask because I went with 3 assuming that would be the safest case if the RC receiver entered failsafe and was configured to drop packets. Perhaps I’ve misunderstood? I don’t want there ever to be an RC Failsafe event wherein the Receiver inadvertantly commands a throttle value of zero while attempting to return to home. I’m quite happy right now with the way that is configured and working, even though it doesn’t let me go to max head speed for the acro stuff, so I’ve settled on a head speed I feel is a decent compromise between wanting scale behavior but also being able to play around. If you have advice here, or questions to ask that will help you give better advice, I am all ears!

Sounds interesting, where can I read more about this? Is this in stable release, or in master currently?

This actually makes perfect sense, thanks for catching that - I knew it but it slipped my mind. Thank you again!!

Got it, thanks Bill!

Acknowledged. I did go check the wiki and found myself wondering how I’d know if I got it right vs too much vs not enough. Mind walking me through the log analysis step in your leisure so I can be more self-sufficient on this?

You will need a different system for these types of flight maneuvers. ArduPilot is primarily an autopilot system. ArduPilot’s acro is not a replacement, nor any kind of match, for a commercial FBL unit. So I would suggest one of the commercial FBL units for more serious aerobatics. There are many of them, my wife has a HeliCommand (Bavarian Demon) AXON in her 700 gasser which I have become quite fond of. ArduPilot’s new acro can match her AXON for scale-quality handling. But it is no way shape or form a match for the AXON in 3D aerobatics.

I suspect that isn’t true, especially considering two of the things I want to do are things the autopilot itself can do. I respect that you have an opinion on this but I’m going to go forward with what I have and see how it goes. It may not perform as well as other controllers but I think it will still actually perform.
But, we’ve gotten way off topic. This thread was meant to be about auto take off and landing, not Acro aside from explaining why I have symmetrical collective configured. You’ve provided a lot of insight to that goal and I do appreciate it. Wish me luck for the next few flights!

In all fairness the “virtual flybar acro” only leaks the attitude error so it actually relies on a bad or incomplete tune to have any impact on the handling of the aircraft. If the aircraft is tuned and setup correctly the “virtual flybar acro” is no different to the standard multi acro.

So until someone actually has a fully setup and tuned aircraft combined with a pilot capable of 3d aerobatic maneuvers we don’t know how capable ArduHeli is at full 3d.