Differential thrust plank flying wing


Since a while I wanted to try a plank flying wing with no rudder or vertical stabilizer, using differential thrust for yaw stabilization.

After I saw the video from Ran D. St. Clair and his twin engine plank I was convinced it was indeed possible.

I started only recently to build a similar flying wing, using salvaged components and failed foam cores.

The wing is 1.2m (~4ft) span and 42cm (16.5in) chord, and weights around 1kg (2.2lb).
The motors are 2207.5 1750kv from race quad, turning 5" propellers. Not the most efficient but perfect to give a try.
ESC’s are old Turnigy Plush’s. I might change them for more recent BL_Heli esc’s.

The flight controller is the Mamba F405 board that is currently being added to Ardupilot.
I’ve based my firmware on ArduPlane-4.0.5.

Everything is set up and I plan to fly it tomorrow. For the firsts flights I will add vertical fins.
Once I am confident enough with the pitch and roll tuning I will start to remove the fins.

I’ve set up differential thrust using ThrottleLeft and ThrottleRight for the motors.
Then I’ve set RUDD_DT_GAIN to 100% to have full control with the motors on this axis.
I’ve also set KFF_RDDRMIX and YAW2SRV_SLIP to 0 to remove any mixing with the ailerons.
I’m wondering how YAW2SRV_RLL needs to be set, but I guess the default value is a good start.
The tuning will mostly be made using YAW2SRV_DAMP and YAW2SRV_INT.
It might be useful to set those parameters via an RC Input on this particular use case, but for now there is no option to do that.

Crossing fingers for tomorrow :slight_smile:



I’d recommend you first get it flying with some vertical stabilizers and get it tuned up really well with that setup. Then progressively reduce the size of the vertical stabilizer surfaces as you get the yaw tuned up.

Thanks @tridge ! I’ve added a vertical fin until the settings are acceptable.

With the motors at the wing tips it is impossible to fly in manual mode.
Even a slight discrepancy in thrust make the wing turn in an uncontrollable manner.
I quickly switched to FBWA.

At first I mostly tuned the pitch oscillation by reducing the p term.
I was soon satisfied with the yaw stabilization. There are still overshoots and oscillations but the result in straight line is not really bad.

The turns are the difficult part. The wing seems to fly often at high AOA, and most of the time the roll axis is inefficient and the yaw is locked in.
So to make a turn I have use the yaw input, and this is where the rodeo start !

If the roll is not level, the stabilization will deflect one elevon up and the other down.
But the elevons are 2~3 times more efficient for pitch correction than for the roll.
Usually the yaw will start to slip as well.
At this moment, one motor will increase while the other reduce, and as a result either the upward or the downward deflected elevon will be blown.
The result is that instead of correcting the roll and yaw axis, the wing is sometimes uncontrollably pitching up or down.
On the last flight I’ve put a little bit of KFF_RDDRMIX, but it seems to have worsen the situation.

I noticed that the plank wing of Ran D. St. Clair uses small elevons toward the wingtips.
On my wing I built almost full span elevons.
Maybe part of the answer is here, by reducing the span of the elevons I might restore the “equilibrium” between pitch and roll authority … by reducing their pitch efficiency !

Maybe the pitch needs to be tuned much better, also.

Here is a video of the firsts flights. It was windy, 5kt with 15kt gusts.


First finless flights !

This afternoon I spent some time continuing the tuning of the plank.
I managed to get the pitch tuned better.
First I moved the C.G. back a little bit and set the servos trim.
Now it flies at a smaller AOA and faster.
The pitch responsiveness is more predictable and I managed to get a basic tune.
I could then switch to autotune which greatly helped me to dampen the pitch oscillation at higher speed / throttle.

There is still a setting that adds pitch by pulling back the elevator when the throttle is off.
KFF_THR2PTCH and STAB_PITCH_DOWN are set to zero and I don’t really know where to look.

Since the last flight I moved the motors more inward, mostly for “structural” reason.
I had to reduce the YAW2SRV_DAMP term a lot, from 0.9 to 0.08. Maybe it was not so well tuned before.
YAW2SRV_DAMP could be called YAW2SRV_P to be more consistent with the Pitch and Roll parameters (IMHO)

After all these improvements in tuning I was confident enough to remove the vertical stabilizer :


Huge congratulations! It looks like it is still a bit of a wild ride, but it is flying a lot better than I expected for first flight with no vertical stab.
One thing I would caution against is trusting autotune for this plane. I think autotune is likely to do a terrible job. This system is likely to be a better choice:
I’d need to see the log, but I would guess you need a fair bit more D term on pitch at least.
This is a great project, congratulations again and please keep posting status updates. Could you also post a photo of the plane I could use in the monthly developer update?
Cheers, Tridge

1 Like

Whoa thanks @tridge ! This is very nice I appreciate your words !
I’ll definitely keep the updates coming.

Tonight I made more flights. The wind was calm and it flew quite well.
I didn’t change any setting except the CoG, which I’ve set forward again.
Narrowing the optimal CoG is critical on this kind of model, and I might have underestimated the task.
Since FBW can stabilize an unstable craft I had no reference to let me feel the handling.
Now the wing is more gentle when it departs from straight symmetrical flight, with the effect of using less flaperon correction.
This helps in recovering stable flight faster.
I could now trigger a quick 45° yaw turn, the wing would roll 60~80 degree then stabilize horizontally after having changed route ~90°.
With the previous rearward CoG setting it would have pitched up 90° while rolling and taken more time to recover.

I have to pilot the yaw to keep it symmetrical, otherwise the wing would slip during turns.
I will set up the transmitter based tuning. But I have to say it is quite busy on the sticks, definitely not a beginners airplane.

I’m sorry I haven’t got time to set the correct logging component on the Mamba F405 board yet, so no logs for now.

Below are some frames out of the GoPro. I might ask someone to take better pictures.




lovely, thanks! Logs will be very worthwhile to help improve the performance


After setting in my hwdef.dat the definitions for the Dataflash of the MambaF405 I didn’t understand why the logs would not work.
What was missing was to change the LOG_BACKEND_TYPE parameter to 4 - Block

Now the logs are working !

Happy with this added functionality I went to make two flights.
There was slight wind and some turbulence on the leeward of a small dike.
On the second flight I’ve triggered some yaw movements in that area, and unlike with the previous trials the following stall was too large to recover.
The wing crashed, but it is quickly fixable.

Hi, sorry for the long silence on this topic.

Not much progress to share, just a brief trial of an kind of ambitious flying wing.
The aim of this model was to test the roll and yaw stability of a higher aspect ratio wing.
Also I decided to use dihedral to control induced roll like many 2-axis gliders and planes.
I’ve eliminated the flaperons for roll control, but kept a central flap for the pitch axis.
In fact the geometry and proportions are the same as the NASA Centurion, except the airfoil.
The wing is made of CNC’ed foam core and flat carbon rod and is a bit flexible spanwise.
In flight condition there is a high dihedral of around 10°~20°.

I’ve installed 4 motors because I planned to experiment with them for pitch control.
The idea was to use differential thrust between the inboard and outboard motors to create a pitching moment.
Since the outboard motors are situated higher than the inboard, accelerating them would create a nose down moment, and vice-versa.
If necessary this effect could be accentuated by setting the motor with an offset angle when viewed from the side.

Unfortunately the flights did not went well.
To gain time and mass I decided not to install wheels.
The flexible, 2.5 meter wing had to be launched by hand.
Somehow a friend managed this complicated task by gently releasing the two rudders while running.
But in flight the pitch axis was extremely unstable (again !).
For these trials no autopilot was installed, and I had to control the poorly tuned wing manually.
The pitch (flap) and yaw (differential thrust) axis were too sensitive and I didn’t manage to keep it in the air for very long.

However I could observe that the induced roll worked well. The combination of differential thrust and dihedral on a flying wing was a first for me.

Since I still want to see an automatic mission with Arduplane on a differential thrust flying wing, I consider this project still on the to-do list.

I could build a less complicated model out of flat depron sheets, using a KfM airfoil
Now I have a big Centurion mockup in my wokshop :slight_smile:


Also the beautiful Mehari car is unfortunately not mine :slight_smile:

I suggest starting with a simulation model, either xplane11 or RealFlight9. Do your experiments there with ArduPilot in control then apply what you learn to the real vehicle.