Dual-motor tailsitters

Thank you for advice. Feels ok in flight now. Now checking many logs after many successful flights.

Thrust Vectored Belly Sitter with extra, third pusher motor - Help Please
Hi everyone…
I’m building a Thrust Vectored Belly Sitter with a twist… I have a third, non-thrust-vectored motor pushing from the rear for unnecessary speed. The Left and Right wing mounted motors are thrust vectored and have enough clearance to avoid prop strike. The REAR motor, however, does not vector and I do NOT want it active for VTOL modes and only for forward flight. Right now, I cannot seem to find a way to NOT use it in VTOL Q modes but only in forward flight modes. A few reasons for having the third motor on this airframe (AR Wing Pro) is not just because I had the motor lying around but it was an easy way to get a good CG without having dead weight.

Everything else seems to be working in my config except the rear motor spins in Q flight modes.
(If this is unsolvable with existing codebase I will just add landing gear to get the clearance but I don’t want the added weight).

Thanks You for any guidance.

Not possible in code directly, you could do it with scripting if your flight controller is capable.

Thanks for the quick response @iampete. I will look into scripting. I am using a Matek F765 WSE… hopefully this will suffice. Worst case is added landing gear or give up on the Belly sitting and go to conventional Tail Sitter format.

Thanks again.

@iampete … Thanks again, your tip forced me to learn how the Lua scripting worked.,. Got it working perfectly. Here’s the script I made that works perfectly.

function update () -- periodic function that will be called

    local mode_number = vehicle:get_mode()                                                          --get flight mode number
    local K_THROTTLE = 70                                                                           --Throttle function (centre only)
    local PWM = 900                                                                                 --Servo function disabled
    local throttle_channel = SRV_Channels:find_channel(K_THROTTLE)                                  --Looks for the Servo channel controlling THROTTLE
    local TIMEOUT = 1000                                                                            --Delay of 1 second

    if mode_number > 16 then
        gcs:send_text(6, 'Pusher Throttle Disabled in QModes. ')                                     --modes 17 and higher are Qmodes for VTOL only
        SRV_Channels:set_output_pwm_chan_timeout(throttle_channel, PWM, TIMEOUT)                    --disable throttle by a timeout
                                                                                                    --Other flight modes are for Plane forward flight only
    end   
    return update, 1000  
end
return update, 1000   -- request "update" to be the first time 1000 milliseconds (1 second) after script is loaded

Nice!

I recommend using this

quadplane:in_vtol_mode()

note that is only in 4.2, It is more robust than:

vehicle:get_mode()  > 16

All your other locals should not be inside the loop. That would leave you with something like:


local K_THROTTLE = 70                                                                           --Throttle function (centre only)
local throttle_channel = SRV_Channels:find_channel(K_THROTTLE)                                  --Looks for the Servo channel controlling THROTTLE
local PWM = 900                                                                                 --Servo function disabled
local TIMEOUT = 100

function update () -- periodic function that will be called
    if quadplane:in_vtol_mode() then
        SRV_Channels:set_output_pwm_chan_timeout(throttle_channel, PWM, TIMEOUT)                    --disable throttle by a timeout
    end   
    return update, TIMEOUT * 0.5
end
return update, 1000 

I bumped up the loop rate, that will make more responsive. If your feeling fancy you could also read the min pwm out of the param for that servo output.

Thanks for that @iampete

That tightens it up nicely. This is the first code I’ve written since 2004 when I did coding for a living… definitely going to play more and exercise this old brain. I’m using v4.2.0 Dev so I will make changes suggested.

Thanks again…

Martin

1 Like

I just fixed a few bugs i spotted on the second look, still not tested of course…

Tested and works great. Thanks for your help.

Hi Evreybody,

I just proced to autotune the Roll Axis ( precisons by @hwurzburg & @Satoru_Sasaki some days ago) with the function Q_AUTOTUNE_AXIS = 1
In my case, the AUTOTUNE sequence was succesful, but the values founded by autopilot was not good . If somebody are interesting , this is the logs :
https://drive.google.com/file/d/1swKC0D8tUUxk7rL1c9HtE5658vzDQP1u/view?usp=sharing
If somebody can help to understand why the news values are not good , I’ll take it :slight_smile:

Thanks

Hello Evreybody !

After update to with V4.2.0dev (2251293e) version, made a manual tune, find and set Q_TAILSIT_DSKLD value, yesterday I made :
the first sucesfull sequence QSTABILIZE > FBWA > QHOVER > LANDING
THANKS TO ALL COTRIBUTORS, GREAT JOB :slight_smile:

About flight,this is the result of PIQP.P+PIQP.D+PIQP.FF PIQP.Act BARO.Alt ARSP.Airspeed

About transition, this is the result of PIQP.P+PIQP.D+PIQP.FF PIQP.Act

Need to set another value of Q_A_RAT_PIT_FF ?

About tune process, anybody can suggest me other graph template who need to generate to optimize the different process of the tune ?

I remark in the log the presence of the MSG : “Transition VTOL done, timeout”. How ca I remediate this process ?

logs & settings: https://drive.google.com/file/d/1Eu41Moi4UEBfFhR_sDHNrwBNs0HFHWm4/view?usp=sharing

Thanks Again !

your transition angle is 45deg, with a target rate of 50deg/s of up pitch for the transition which you are not getting ,so it times out after ~1.4sec when you have only reached <20 deg up pitch…it then goes into QHOVER and drops the throttle a bit since you are still coasting up in alt a bit…this compounds the problem of getting the nose up to 90deg…you start to drop in alt so QHOVER raises the throttle to stop the drop, while you raise the stick demanding even more climb rate…this creates enough airflow that the elevons now get effective and pull the nose to 90deg and you hover…my guess is that your elevons are too small…
issues: your control effectiveness is low raising the nose to 90deg for VTOL and can only command a low up pitch rate in the initial part of the transition, so it times out…
you can lower the backtransition angle to 20 degs, but you will still be in the same boat…I think you need to increase the area of the elevons…for a non vectored tailsitter they are usually 33-50% of the wing chord to obtain sufficient control effectiveness…you can also fly much faster in fixed wing before the transition, but that will also create zooming…and not having enough control authority will bite you when you try to move in VTOL modes…pitch is especially susceptible to getting the “leans” in hove where you pitch it forward or back to move and it gets “stuck” and cant be brought back to 90 deg unless you give it high throttle to increase the airflow over the control surfaces…this is why vectored thrust is popular since it gets a lot of direct control for pitch and yaw

Great Thanks for this Analysis !

Hello,
I modify Q_TAILSIT_RAT_VT, from 50 - > 25 and I made two videos from today with good transitions:

Logs :
https://drive.google.com/file/d/13EkZxcLNrJm1wTV89qfIcz8Sw-Go_ri6/view?usp=sharing, https://drive.google.com/file/d/1KtmWd8suUnNMCk2Xqxm021VS0cSY1u1l/view?usp=sharing

Thanks Again

Hi @melc good to see the progress. Looks like you lost control during QHover descend in the second flight. Log shows elevon saturated and AP cannot correct then.


Aside from elevon area and deflection is not enough, I am advised 2 parameters will help.

Thanks For you replay !

I apply today the settings and test just after, some wind : It’s really great :slight_smile:

I try to survey more the Eclipson E VTOL thread

Video of the result , sorry , I don’t see the presence of a part of my COVID MASK on my gopro !!! :slight_smile: :frowning: :slight_smile: !!!

Logs Tailsiter test with big COVID Protection !!!
https://drive.google.com/file/d/1gj4ddkusPKXCDpBki9INr7OPj1Ze5qYx/view?usp=sharing

If any idea for optimize, I take !

Thanks

1 Like

Good to see the progress. I see you had scary moment in the first 15 seconds until you exit to FBWA. Noticed you have very PWM range set for RCOUT.C4, 900 to 2200. Does the servo really move to that?
One advice I got that could apply here is to raise q_a_rat_yaw_I and Imax, as high as 1. I see you struggled to point wingtip to the wind a few times?

1 Like

Hi Satoru and thanks for youtr return :slight_smile:

  • I see you had scary moment in the first 15 seconds until you exit to FBWA

yes, strange, but with 4.2dev version, the wing it’s like a spinning-top, it’s a real joke , at the limit of the fun / afreid ! I really think this experience very interesting and Great Thanks of the DEV IMPLEMENTATION EFFORTS

  • Noticed you have very PWM range set for RCOUT.C4, 900 to 2200. Does the servo really move to that?

it’s true, all the range are used

![image|266x500]

  • One advice I got that could apply here is to raise q_a_rat_yaw_I and Imax, as high as 1
    Thaks, I proced to test in the next flight

I see you struggled to point wingtip to the wind a few times?

  • sorry, I don’t remember

Have a Great Week-end !

HI to everyone!
I’m going to make a Duo Tailsitter with vector thrust, and also is a Belly sitter. I start developing using PX4, I’m new with Ardupilot because this Airframe Configuration is not support by PX4. But I see works almost the same way or exactly the same.

My question is, any recommendation related to parameters of this configuration, what are the most important ones, I already read all the documentation from the Ardupilot related to Tailsitters, but the expertise of you devs sometimes is more important that the documentation.

Here I attached an image of my setup:

Hope someone can help me!

2 Likes