There has been a growing problem in the industry for a while now as a company called Nordic has used a patent related to co-axial multi-copter designs to cause considerable problems for some companies.
I have been working with members of the ArduPilot dev team (especially @Leonardthall and @Paul_Riseborough ) to test an alternative motor layout and mixer for X8 co-axial multicopters that avoids the patent. The above video shows an X8 multicopter flying with this new layout.
Background
The problematic patent has variations in quite a few countries. The ones I’ve looked at closely are the US and EU versions. The EU patent is EP2035276B1, the US patent is US8328128. The patents are closely related, but their detailed structure are quite different. Both only have a single independent claim, which means for non-infringement you only need to avoid the first claim. The US patent condenses a lot of required elements into that independent claim, which means it is relatively easy to make non-infringement arguments. The EU patent has fewer elements in the independent claim, making it a bit harder to make non-infringement arguments. There are however quite a few strong non-infringement arguments that could be made on both patents dependent on the details of your vehicle. If you wanted to discuss those with me then please get in touch.
This post describes a different and simpler approach which avoids the issue altogether by running the motors on each arm as co-rotating instead of contra-rotating. The reason this matters is this wording (taken from the EU patent, but with almost the same wording in the US patent):
in a rotation direction which is opposite the rotation direction of the first rotor (40) of the respective drive unit
that wording means if the motors on the arms of the multi-copter are co-rotating and not contra-rotating then the patent does not “read” on your vehicle and the patent is not an issue for you.
Running motors co-rotating in multicopters is not new, it has been around for decades, as has running motors contra-rotating, so I am not at all claiming that this is a new idea, it is just useful to point to this layout type as an approach to avoiding this patent.
There is a nice masters thesis from 2021 by Sung Hyeok Cho analysing co-rotating versus contra-rotating on small hexa and octa vehicles:
and it is not hard to find other examples from much longer ago.
Same Control, Same Redundancy
Running the motors co-rotating gives you the same level of control as contra-rotating, and the same level of redundancy. It is really just a “redundant quad” system.
There are things you need to watch out for though:
- as the torque from the motors on the arms does not cancel with a co-rotating design you can excite frame resonances that may not be an issue in a contra-rotating design
- in larger vehicles you need to get the cant angle of the motors right
- on some vehicles you may lose efficiency, while on others you may gain efficiency (the aerodynamics of co-axial propellers is quite complex!)
- you should run the top and bottom layers at slightly different throttle levels to avoid a low frequency “beat” with the blade passage frequency of the two propellers.
To convert an X8 vehicle from co-rotating to contra-rotating you need to do the following:
- reverse the direction of the bottom layer of motors (on my vehicle I just used the SERVO_BLH_RVMASK parameter to do that).
- swap the left and right propellers on the bottom layer, so you have the same propeller type both top and bottom in each corner
- possibly adjust motor cant angle on the bottom layer (see discussion below)
- set FRAME_CLASS to 17 for “dynamix scripting mixer”
- install a lua script which implements the co-rotating mixer.
Note that this script works with a wide range of ArduPilot firmware versions. I’ve tested it back to 4.2.x (with a one line change for the Parameter() call).
We will be incorporating this co-rotating layout as a standard frame layout in ArduPilot in the near future, but in the meantime the lua script allows you to fly it now, and gives you an easy way to adjust for your vehicle.
Layer Throttle Ratio
We don’t want the top and bottom layers to be at exactly the same throttle level. This is actually true of contra-rotating as well for efficiency reasons, but for co-rotating it is more important as you can get a beat resonance in the blade passage frequency. For most of my tests I’ve been running with the top layer at 90% of the throttle of the bottom layer.
To implement this with the above lua based mixer you use the parameters MOT_X8C_BOTMUL and MOT_X8C_TOPMUL. There are implemented in a way that allows you to change them while flying, so you can adjust to be optimal for your vehicle. To start with I would recommend:
- MOT_X8C_TOPMUL=0.9
- MOT_X8C_BOTMUL=1.0
Frame Resonance
As mentioned above, you may experience a frame resonance which can be quite severe. On the first test flight of the vehicle in the video the copter flipped over within 1.5s of takeoff due to a resonance, although the simple home made design does make it particularly prone to these types of resonances. The issue was fixed by setting up a fixed notch filter at the resonance frequency of 32Hz, like this:
INS_HNTC2_ATT 12
INS_HNTC2_BW 10
INS_HNTC2_ENABLE 1
INS_HNTC2_FM_RAT 1
INS_HNTC2_FREQ 32
INS_HNTC2_HMNCS 1
INS_HNTC2_MODE 0
INS_HNTC2_OPTS 0
INS_HNTC2_REF 1
The resonance frequency (if any) will vary between vehicle designs.
With that addition the copter flies just as well (and with the same tune) with co-rotating as contra-rotating. On some vehicles a re-tune will be needed, especially if you have a tune with less margin.
Motor Cant Angle
As you scale up multicopters the relative amount of yaw authority you get from motor torque decreases relative to the control you get in roll and pitch. To keep getting good yaw control it is common to “cant” the motors to increase yaw authority. A typical cant angle is between 3 and 5 degrees, and the direction to cant the motor depends on the rotation direction of the propeller.
When converting a vehicle from contra-rotating to co-rotating you need to adjust any cant angle on the bottom layer to be opposite of what you have now.
Efficiency
The impact on efficiency (and this flight time) varies between vehicles. On the vehicle in the video it loses about 4% efficiency when changing from contra-rotating to co-rotating. Some vehicles may actually gain efficiency. You will need to test on your vehicle to determine what efficiency change you get.
Expiry
The patents don’t have long to run before they expire (it varies with jurisdiction, but around 2 years more) so in the long term we will be able to ignore this issue. In the meantime you can use the technique in this post to avoid the issue.
Thanks
Many thanks to CubePilot for championing this issue, and to Leonard and Paul for their help working through the technical issues. Also thanks to @MichelleRos and @peterbarker for help with flight testing.