How to implement compound heli boost control into velocity command and auto flight modes?

The incorporation of the compound heli frame type into traditional helicopter brings with it a fifth control axis. This allows independent control of the X axis acceleration, termed boost in the code. For manual modes like stabilize, acro, and althold, the thrust on the propellers is controlled through a slider on the transmitter. This gives the pilot the ability to set speed with the thrust on the propellers similar to an airplane but unlike an airplane, the combinationo of thrust on the propellers and thrust of the main rotor system, controlled by collective pitch, can be used to set the pitch attitude of the compound helicopter for forward flight.
So with this independent controller of X axis acceleration, how is it incorporated into the other highly augmented flight modes like loiter or the autonomous flight modes? What does the slider and TX elevator stick now control for each of the flight modes?

Loiter: current copter implementation has the TX elevator stick commanding a velocity and when it is centered the aircraft holds position.
For a compound heli, should the slider be disabled and the TX elevator stick control operate how it currently does with copter? So the propellers will cause drag in this mode if they are not adjusted to match the speed and the aircraft will required more pitch attitude for a given speed. Thus the flight controller can automatically add boost control to keep a pitch attitude at zero.

Auto: Similar to how this is implemented in Copter now, the boost control will automatically be adjusted for target speed and to maintain zero pitch attitude. A parameter could be added to set the forward flight pitch attitude.

I think this would be a good start for loiter and auto modes. My thought on incorporating this into the code would be to add it into the accel_to_lean_angles and lean_angles_to_accel methods. Instead of a pitch attitude being set for x acceleration, the x acceleration would be passed to an accel controller PID that operated on the boost control. I think this would be less intrusive for now. I think the future would be to incorporate a TECS and L1 NAV controller like Plane.
Comments and suggestions are welcomed.

I think the start point is to create ap_motors_heli_compound. ap_motors6dof might be a place to borrow some code from: it implements a forward thruster, which is conceptually similar.
Designing the mixer is going to be interesting. I’d suggest a tuneable parameter to ramp in the thruster, as at very low speed it may be an unnecessary complication. With loiter and guided, the key is not demanding lean angle/attitude for the forward direction (so New Loiter and guided_nogps wouldn’t work as-is for this frame).

I have already created the motors library that handles the electronic mixing in this PR

I hadn’t thought about this but I had already created a motors library for compound Heli for AC 3.3.3. So I built the 3.5 version based on that one.

So in my AC3.3.3 version I didn’t have anything like this. It was straight control input mixed to symmetric thrust output. I was considering in loiter or auto mode to have pitch and thrusters mixed where the thruster would be lagged to provide more of the trim or average acceleration and the pitch attitude changes would provide the more instantaneous changes. However I think the thrusters would be responsive enough to handle this without requiring pitch changes. This is something I have to look at.

Is this desirable for manual flight modes? My X3 build is going to have wings on it. And maintaining the specific pitch attitude for the AoA of the wing to function correctly and create lift is important. Why couldn’t the boost be mixed with the elevator in the manual modes as well? By using the dynamic flight flag? So the heli is a normal heli at less than 5 m/s with the thrusters providing only yaw control.

But once we are in dynamic flight (where the wing can start becoming a lifting airfoil) the elevator control is passed to the boost control, level (zero) pitch attitude is commanded with the cyclic. As we transition out of dynamic flight normal cyclic response is returned and thrusters go back to just yaw control.

It should be a fairly simple mixer using the dynamic flight flag to turn it on and off, and should work with all flight modes.

I don’t think New Loiter is going to work all that well for regular helicopters because the frame angle changes are too subtle. I think we will have to look at implementing a different GPS position hold mode for heli’s that will work for both compound and traditional.

DDVP thrusters will be more than responsive enough. Again, using the dynamic flight flag, I think, works here. If the thrusters are ramped up in pitch at the same time the heli leans for acceleration, when it enters dynamic flight and goes into translational lift the thrusters can take over 100% and let the heli go to zero pitch attitude. Since not all thrusters will be the same, have an adjustable ramp-in of the collective pitch on the thrusters so the heli can make a smooth transition from acceleration attitude to cruise attitude. All helicopters do this anyway as they go into translational lift. Some recent measurements I took on my 696 for testing New Loiter show that it accelerates at ~ .4G @ 10 degrees nose down, and cruises at 2-5 degrees nose-down @ 15 m/s (depending on wind).

The acceleration in Auto (and thereby the lean acceleration angle of the frame) is limited by the WPNAV_ACCEL param. In current Loiter the speed is rarely above 5 m/s for heli’s. New Loiter is not going to work anyway. If we modify Postion Hold for heli’s for a heli-specific GPS “hold mode” it will be just like Stabilize or Acro (or Alt Hold). All that needs to be fixed for heli’s in Pos Hold is the braking, which is again lean angle based. But the thrusters can handle braking quite nicely by going to reverse thrust.

Yes it is desirable for manual modes as well. [quote=“ChrisOlson, post:4, topic:23463”]
Why couldn’t the boost be mixed with the elevator in the manual modes as well? By using the dynamic flight flag? So the heli is a normal heli at less than 5 m/s with the thrusters providing only yaw control.
So I don’t think elevator needs to be mixed with boost per se. I think that a cruise attitude needs to be specified and the elevator (rotor cyclic pitch) is adjusts for the pilot or autopilot when the aircraft is in forward flight to maintain the that attitude. I think the dynamic flight flag would be a good trigger to transition between the target pitch attitudes. For manual flight the target attitudes would be held only if the elevator stick is centered.

Ok, I see what you’re saying. So the boost thrust is adjusted based on what it takes to maintain the cruise attitude setting, independent of pitch input from the cyclic. From a hover, the heli inititally leans to accelerate, levels out naturally as it goes to translational lift. The pilot holds a pitch input, with the cyclic setting the target speed. As boost thrust increases the control system reduces the cyclic pitch on the main rotor to achieve the cruise attitude setting.

Sorry I am not making myself clear.

What I meant here is that any deck attitude that is desired for efficient cruise flight can be set. I believe that being able to set this for manual modes is necessary but it would be done for the pilot when the cyclic stick is centered and the attitude that the controlller would target would be specified through a parameter named cruise attitude.
I believe that in manual modes the booster control would not be mixed in any way with the cyclic pitch control to control speed except for maybe some loiter mode or velocity command mode. In my previous post I was thinking more of a stabilize or althold mode not loiter. So in stabilize or althold, no mixing of boost and cyclic pitch and above the dynamic flight speed, the controller would target the cruise attitude with the cyclic stick centered.
Now in a velocify command mode, this where it depends on how we want to control speed as the aircraft accelerates past the dynamic flight speed. Ultimately I think the controller maintains the target cruise attitude using cyclic pitch and altitude with main rotor collective pitch. What the pilot uses to control the target speed is the question.
It’s late and I think I need to read your posts again to see if I’m grasping what you are saying. I’ll follow up tomorrow.

I think we want boost only used to set the aircraft speed. Then collective and longitudinal cyclic pitch would be used to set attitude and subsequently AOA.

What is interesting with the AirBus X3, once they transition to forward flight, the collective is set at some position and left there. The aircraft is controlled similar to a fixed wing aircraft. So for the compound aircraft, I think we need to start defining what each transmitter control will control for low speed/hover and forward flight. Certainly we can keep stabilize and althold modes and even a rate command mode like acro but there would be a special mode for the compound configuration like Fly by wire in ArduPlane. We should make use of the TECS. Once in forward flight the pilot only uses long and lat cyclic stick for pitch and roll control and yaw of course. But only boost is use and collective is fixed to correspond with the desired AOA for cruise flight.