Dual-motor tailsitters

I tried to hover the plane, but the plane was yaw all the time. I tried to adjust the aileron, but it didn’t work. The steering engine was like a fool

If your plane hover and is stable or almost stable but yaw continuously, one possibility is your TX require a yaw rate. TX calibration issue ? Can we have a log or the full parameter list ?

2.param (21.2 KB)
This is my parameter table. Please have a look. I may have neglected some important links in parameter adjustment

I compared your parameter file to one of a former vectored tailsitter (plane 3.9 I think). This is a short list of significative difference.
1- you have arming check disable so you dont know if you have a gps or compass calibraion problem or other problem.
2- you have q_a_rat_yaw_I = 0.005 .This is very low, try 0.3 to 0.6. Also pit_I and rll_I are too low.
3- servo5_trim and servo6_trim are 1500. I set MOTORS servoXX_trim = servoXX_min
4- I do not use safety switch, you have brd_safety_enable=1
5- I have kff_rddrmix and rudd_dt_gain non zero (0.4 and 20)
item 3 to 5 have probably nothing to do with your problem but I would test them…

Thank you very much! For some reasons, I am now working on the dual thrust vector model, i.e. the bicopter model, but I don’t know how to set the parameters of this model. I can’t find the description of setting parameters in arduplot home

I have no experience with bicopter.
I suggest you joint this thread
Bicopter ardupilot firmware

OK, thank you very much.

Hi everyone,

I am sorry if I am going to ask a silly question, but I did not find this information in this blog.

I am using PixHawk Cube 2 on a flying wing with two tilt motors.
Are there any specific parameters to configure a VTOL aircraft to take off and land on its belly in QSTAB flight modes (like this one: https://youtu.be/exVv_al7iFI?list=PLGPeJBcn_X34LpYbV1FCjS389GC2tYKSL) or does it only depends on the pilot’s hability to fly?

Thank you in advance for any help :wink:

David Melo

Welcome @David_Melo
Check out the wiki page for info on setting up “vectored” tailsitters.
A Tilt Vectored Belly-Sitter (TVBS) should take off in qstabilize as shown in the video with the recommended parameter settings and relatively little pilot skill; just raise the throttle gradually and let the autopilot contol roll, pitch and yaw.

If you find that the wiki needs improvement, please raise an issue or comment here.

1 Like

Thank you very much for your input! I will check the wiki page!

I forgot to include the link… in case you haven’t found it already:
https://ardupilot.org/plane/docs/guide-tailsitter.html#vectored-and-non-vectored

Thank you very much! I was trying to find the right one. This is perfect :+1:

Hi!

TLDR: Tuning my dual motor tail sitter flying wing in hover mode, ATT vs PIQx? What PID parameters go with which axis? Does the reference frame change from NED when going into hover (copter?) mode? What are the PIQx units? Radians?

I’ve built a VTOL flying wing Tail sitter made for crashing, which I’ve named FlyWood, this thing can take a beating! (Which comes in handy trying new code…). Once this works I will transition the electronics onto a much more fragile, efficient and overall nice flying wing which is the goal of this project.
Tuning again is of course needed on the other aircraft, but by then I hope to have more experience to limit the number of crashes.

First autonomous flight had big oscillations in hover mode. No manual input was made until almost crash where I switched into manual mode to shut the engines off.
I’ve looked at both ATT and PIQx logs. They both display oscillations in certain axis but differ quite a lot.
To tune one of the axis, which one should I look at and what PID parameters correspond to each?

Heres a video of the flight.


I’ve attached the log as well:
https://drive.google.com/drive/folders/1ujAigbvz45x7s01LSj9TqH5C9R22aZgj?usp=sharing

Here’s the PIQx logs:

Am I correct that ATT displays the attitude in plane mode, and PIQx (e.g. PIQP for pitch) display the copter mode? So when hovering and not flying like plane I should only look at the PIQ logs?
And I should also only tune PIQ related parameters from that data?

In case I’m wrong, here are the ATT logs:

Also, In hover mode (nose straight up), pitch is the same, but roll is no longer in normal body frame, correct? Roll is body fram yaw (i.e. roll is controlled by differential thrust?).
Yaw is then controller by differential elevon deflection in hover mode, correct?

If so, then according to PIQx logs, roll has nice reference tracking, but pitch has oscillations and yaw is all over the place.
The pitch oscillations seem to be on the order of 1-2 radians in amplitude which does not agree with video. Am I missing something on the unit here?

Any help and/or pointers is greatly appreciated!

Curiosa:
I built this for my masters thesis (finished now) where I developed my own non linear attitude controller that worked nicely, but for reasons I am abandoning it. I’d like to see if I can get at least acceptable results with arduplane, and from what I read it looks like I can achieve great results given the proper tuning!

2 Likes

Correct

correct

Yeah roll is doing well, this is because the roll angle has the most powerful actuators and they are better suited to the default pids, ie like a copter.
The PID’s work on the rates not the angles, so it would be rad/s I think.

2 Likes

Welcome, Robert, to what may well be the longest topic in the entire forum.

The PIQx log records refer to the multicopter frame Roll, Pitch and Yaw axes. So for a tailsitter, Roll is body-frame yaw and Yaw is body-frame roll.

Your log shows that you were actually in AUTO mode. That adds many variables to the equation…

I suggest that you first try QSTABILIZE mode, using manual control of throttle, roll, pitch and yaw. There are many posts early in this thread on the topic of initial tuning, so a little time (ok, maybe a lot :slight_smile: ) searching this topic should be well worth the effort.

One way to more safely do the initial tuning is shown in this video. This is QSTABILIZE mode with the vehicle suspended on a tether:

1 Like

@Trobolit, Thanks a lot for the video.
From post 1453, you will find video, photo, log, parameter list and construction details of a non vectored tailsitter. This configuration is not easiest one.
It seems to me your tailsitter is almost stable for yaw and roll but not with pitch. I would begin increase q_a_rat_pitch_p and set elevons throw to 45° if not already done. As soon as your wing will fly safely you will take advantage to proceed q_autotune.
The CG location is the most critical parameter. Keep in mind that only the wing section submitted to propeller wash is able to produce a force and a pitching moment when hovering.

@Trobolit This page describes the angle and rate controllers for Copter.
https://ardupilot.org/dev/docs/apmcopter-programming-attitude-control-2.html?#copter-attitude-control
Angles and rates are generally in radians and rad/sec, but the rate controller outputs control motor thrust which ranges from [-1,1].

@kd0aij Hi! Thank you for welcoming me!
I looked at the controller, things are more clear now, thanks!
I took your advice and went up to the field this morning without changing my last tune (not the one in my post above, I did a few iterations in AUTO before you guys replied) in QSTABILIZE mode, and it works! :smiley:
Here are some graphs from that flight!

I see in the log that tracking is not perfect, but it was very acceptable to fly. :smiley:
Current changed settings:

The binary log is here: https://drive.google.com/open?id=17oLH076e0F0H12sN7NXs30-ikscxwQGM
Time interval I’ve plotted: 670-802

@losawing I did adjust the throw to ±45 degrees before I did the flight above, and it is clear that it was def needed! Thanks! (I may have had only ~25 degrees in one direction before…)

@iampete Thanks for clarifying!

A big thanks to all of you! I am so far loving this forum!

A few further questions:

  • The tune above has all rate P settings set to their maximum allowed value (without force writing params). Is that maybe not needed? Or does the non optimal tracking in pitch and yaw rates indicate I need more you think?

  • The end goal is to get this fully AUTO, what are my next steps? I feel that the reason AUTO didn’t work with this tune might be too fast rate demands? Do I need to enable Q_A_RATE_[P,R,Y]_MAX? Whats a good starting value? I tried that on slow, and it crashed pretty quickly.

  • Should I start by trying to transition into flight mode by changing to a stabilized flying mode, or try a transition in AUTO first?* update: I tried flying in QSTABILIZED and switched to FBWA as per the documentation, and the motor power was so reduced the plane essentially fell out of the sky. After repairs I upped the Q_ANGLE_MAX to its max 80 degrees and when flying in QSTABILIZE at 80 degrees it handles acceptably. I tried switching at full power close to 80 degrees, and the thing crashed pretty quickly upon flipping the switch. It looks like roll control is to blame. All ideas on what the problem was are welcome! Here is the log:
    https://drive.google.com/open?id=14K1nYG4D92NqOrLIaTq2jL2dtow4sU8-
    Update It looks like maybe it was my RC inputs that crashed it. I was very slow in releasing the stick upon transition. I did, however, think that FBWA would not allow roll angles to become large enough to risk crashing. Ideas?

  • I do most of my plotting in Matlab, the MODE log has values that seem to correspond to 10-Armed, 11-Disarmed, etc But I haven’t been able to find a full list anywhere. I figured out that 17-QSTABILIZE, but I still have a bunch that I don’t know what they are. Where should I look?
    * Q_ANGLE_MAX I assume can be turned up if I want higher speeds forward in hover mode? Any experiences tuning this? See point above.

* Remember that this is a FlyBoard, there is no way I can fly this manually, I’ve tried and it is just too difficult for me. I have successfully flown a single engined FlyBoard in a custom FBW controller I made, probably very similar to FBWA.
Heres a not too recent photo if it:

3 Likes

Don’t care about maximum values, just hover your wing and increase P gains until oscillations. You will have also to tune D gain. D gain around 0.01 is a good point to start. Higher gain may also produce oscillations but a tailsitter usually does not need high D gain as the wing itself produce a lot of drag that dampen the motion.

To begin, just forgot all q_modes that use GPS, you already have more than one hundred of parameters to play with. First step is to get a very stable hover with q_hover mode and q_angle _max up to 50°. If you are not very familiar with PID tuning, q_autotune is a good option. Second step will be to tune transition parameters and fixed wing parameter. Do not try transition if your wing is not able to recover from angle max around 50°. This is where CG is very very important…
Q_m_thst_hover and q_m_spin_min are critical parameters for transition, remember that your wing need airflow to be controlled.
As soon as you wing is in plane mode, yaw is not any more controlled by differential thrust. Stability must be given by the airframe itself.

google search for arduplane full parameter list, FLTMODE parameter

2 Likes

@Trobolit Congratulations on achieving flight in qstabilize mode.
For log analysis, you might also find MAVExplorer to be useful:
https://ardupilot.org/dev/docs/using-mavexplorer-for-log-analysis.html

Also, MAVProxy, APMPlanner2 and MissionPlanner can display live plots of telemetry when connected by either USB or wireless modem. I also use APMPlanner2 to generate KML files (showing vehicle attitude and flight path) from dataflash logs for display in Google Earth. example:

This is where flight modes are defined in the source code: