Dual-motor tailsitters

Cool!
The foam parts of the FX-61 are a good start for a lot of projects. Great design, as is the wing-wing. I like to modify-sometimes radically- the basic airframe.


The drawback here is added complexity, so I solder everything I can, and avoid as many failure points as I can.
The ugly foam goatee is because tailsitters, even with wheels, tend to trip and fall on their faces in real life, and the foam cushions the impact, reducing the shock load on the motor vectoring servos.
Learned the hard way to make servos replaceable.

2 Likes

Thanks very much for the files. do I just download them, then move them to the .log folder in MP, and review them in the usual way|?
Did I tell you I was a newbie?:man_student:
My thinking on the motors was to keep their weight and power penalties to a minimum, as well as their effect on the aerodynamics, since they will just be dead weight in level flight. Perhaps a mistake. Time will tell.

You must not load these parameters into your pixhawh as they include a lot of calibration parameters.
Mandatory calibrations are very important and the compass calibration can be tricky specially with an aircraft which fly vertically and horizontally. I advise you begin with default parameters and try to hover your plane as a dual motor tailsitter , then observe what has to be improved. Only at this stage you can compare my Q_parameters to default ones. In MP/config/full parameter there is a useful compare tool.
Because you begin with ardupilot, I suppose you already read http://ardupilot.org/plane/
Did you read the quadplane support pages ?

Iā€™ve read the plane docs till Iā€™m blue in the face. Iā€™ve read the quadplane section also. I struggle with an ancient memory, so I read again and again, till it sticks.
I will take your advice about hover testing first with near-default parameters, and I would not copy any parameter list ā€œwhole hogā€ (entirely). I still donā€™t know how to do it in any case.
I will need some lift assist from the main motor in order to hover well Iā€™m sure, and Iā€™m not sure of the best way to do that. I could just program it in as a third motor, linked to throttle position along with the wing motors, but then all three will be running at half throttle or so at liftoff and wing motors will be not able to stabilize well enough I fear. All aircraft of this configuration will need a different throttle curve for the wing-mounted motors vs. the main motor, with the wing powering up more strongly early in the curve. New parameter?
For early hover testing, I plan to set up a channel as a pass-through from a knob on my radio, run the main power up to 50% with the knob, and then lift off with throttle, but that seems really crude. A different throttle curve or mix could be easily done in OAVTOL, but Iā€™ve read up on making mixers here, and itā€™s beyond my knowlege at present. I get the concept, but I donā€™t know how to code it.
As for compass, itā€™s internal, but itā€™s in the very front inside the balsa nose, with nothing near it to cause problems except the battery.
Now what I need is a good swivel chair to calibrate the compass better!

5-20-18

@tridge,

What am I missing ?

ā€œThe rudder works fine in Q_Tailsit_Input=1 for both quad flight and plane flight.

However, in Q_Tailsit_Input=0 the rudder reverses after transition from quad flight to plane flight.

Any Ideas ?

Thank you for your help,

Rick

Q_Tailsit_Input=0 is multicopter input mode, which is the mode I normally use. Does your vehicle rotate clockwise (viewed from above) when you apply right rudder in QHOVER mode?

Thanks for the reply Mark,

No, it rotates counterclockwise when I apply right rudder in QHOVER mode (which is wrong). And when the plane is horizontal in FBWA mode, with I apply right rudder, the left motor speeds up (which is right).

So if I simply reverse a servo to fix the QHOVER mode then the FBWA mode will be wrong. Im not sure how to fix one without ruining the other.

Thanks again for your help,

RIck

Strange, can you post a log from a flight which shows the issue?

It sounds like something is reversed somewhereā€¦ but I canā€™t pin it down. Obviously start with your transmitter. Then move to servo reversals, then move to servo functions (and back to servo reversals).

when q_tailsit_input=0, in VTOL modes, rudder stick control plane aileron and roll stick control differential thrust. When your aircraft is hanged to its prop you have to imagine you are flying an helicopter with the nose in the belly position. When fbwa transition is done rudder stick control differential thrust and roll stick control ailerons.
When q_tailsit_input=1 rudder stick always control differential thrust whatever the mode.

This long introduction to say I am not sure whether you have a problem or not !!

hello Mark,
Finally I managed to get rid of this flash overflow error and have compiled your stryker quad code with the sign correction and differential thrust in ff. I tested it this evening with my modified wing which has now a top and a bottom motor. I also have to mention that I have kept the wing motors vectored. I have tested Q_hover and transition to FBWA. I can say your code works very nicely. Differential thrust works perfect in fbwa when elevator is used and maneuverability is very strong.The only complain is that motors can be spun with the elevator stick when motors are not armed. Back transition is really smooth, the best I have seen up to now.
Q_hover is very stable when the wing is prop hanged. Top and bottom motors respond as expected when the wing is pitched. But when flying fast forward in q_hover there is an uncontrollable tendency to climb whatever the throttle stick position. I have reduced q_m_spin_min from 0.35 to 0.25 but the problem remains. I believe this is because the reduction of control surface is too strong so there is not enough elevon throw at high lean angle. Also I can hear the top motor spinning very fast, (probably too fast). Are top and bottom motor constrained to keep altitude provided the throttle stick is centered?
I hope to post a video soon.
regards
pierre

Great news, Pierre! I wish I hadnā€™t destroyed mine on the second flight.

Iā€™ll take a look at the arming issue. And yes, the top/bottom differential thrust is based only on pitch angle (itā€™s the multicopter attitude controller), so I think youā€™re right about the need for more elevon authority. I guess itā€™s probably worth adding a parameter to control that, now that youā€™ve shown it can fly.

Looking forward to video :slight_smile:

a first video, only Q_hover mode.

A second video with transitions

I believe the unexpected roll at the end of the video is due to the tendency to climb and too much reduction of control surface. I think I can replace the 0.5f magic attenuation by 1f in tailsitter.cpp . Am I right ?

1 Like

Videos look great; I think the transitions look pretty smooth, and you do them at very low altitudes, too.

Yes, magic_attenuation is the parameter controlling the strength of attenuation when pitch > transition_angle. A value of 1 will result in a gain attenuation of transition_angle/pitch, so the max attenuation would be transition_angle/90. What value do you have for Q_TAILSIT_ANGLE (thatā€™s the parameter which sets transition_angle)? If itā€™s 45 degrees, then attenuation would ramp down from 1.0 at pitch of 45 degrees to 0.5 at 90.

That roll at the end of your second video is something Iā€™ve seen too, and Iā€™m not sure whatā€™s causing it. I assume that was QHOVER mode. Can you post the log from that flight so I can compare it to mine?

I have also seen this funny yaw behaviour, it seems to suddenly not respond to yaw in one direction or yaw round through 180 or more. I have always put it down to the yaw integrator building up to fight wind in one direction then the wind shifts to catch the other side of the wing and the integrator and wind are acting in the same direction.

I havenā€™t had a change to have a more in depth look yet, except to see that the yaw I often reaches IMAX.

The link to the log, I hope it works because this is the first time I try to share with google drive.

https://drive.google.com/file/d/1M9zpuYwEx7MlGQZtqeAOO2q4NIOKisul/view?usp=sharing

This is the log corresponding to both videos but there are more transitions in the log than in the videos and I cant say which one correspond to the video.
Q_tailsit_angle was 30
Q_angle_max was 5000
servo 8 is 89
servo 7 is 90
servos 6 and 5 are wing motors throttle.
From what I have seen, in q_hover, top and bottom motors are constrained by q_m_spin_min which is fine but they often hit the spin_max which explain the tendency to climb. Something which surprise me is the fact that this is the bottom motor that want to spin fast despite my full forward input with the elevator stick. I am pretty sure I have not miss wired top and bottom motors as I have verified top and bottom motor correct in the right direction when the wing is tilted.

@iampete , I totally agree with your remark concerning yaw integrator building and aerodynamic or wind effect. At the beginning of the tailsitter project, the problem was the pitch stability. With tilt motors or quad motor configuration this is no longer a problem. Now the main stability problem is with yaw.

I am back home and I have double checked the behavior of my wing. I can say that everything is in order. In fbwa the elevator stick cause a differential thrust in the right sens. The same in q_hover + self stabilization also in the right sens. So the styker quad code is OK.
So I changed q_tailsit_angle to 60 instead of 30 with q_angle_max still to 5000. If I am correct it should kill the attenuation. I made a test in q_hover and the flight is almost perfect. very very stable !! In that way it confirms the result I got with the Iampete fix in which I ended to set q_tailsit_thmx to 1.

@losawing Iā€™m getting hundreds of errors from MAVExplorer reading your logfile, so I donā€™t think Iā€™m seeing all of your flight. Are you also getting errors like this?

Skipped 530 bad bytes in log at offset 3014668, type=(4, 7, 0)
Skipped 3768825 bad bytes in log at offset 6701068, type=(85, 85, 85)
Skipped 477 bad bytes in log at offset 10485802, type=(32, 16, 255)
Skipped 530 bad bytes in log at offset 10551300, type=(32, 32, 32)

https://youtu.be/wgp4mF_53n4The data I do see shows very good yaw control, with no significant differences between ATT.Yaw and ATT.DesYaw.

So it looks like the elevon gain attenuation may not be necessary for your airframe, although Iā€™m not sure whether elevons are handled differently for tilt-vectored tailsitters.
My pitch-angle-based elevon gain attenuation was intended for tailsitters with large elevons, but those are not necessary with thrust vectoring or 4 motors. So Iā€™m not surprised that you would need less attenuation or none at all.

Hereā€™s a video of my non-vectored tailsitter with tailsit_angle=45 and actual pitch angles of up to 60 degrees:


Pitch control was about right, but roll and yaw were a bit soft. I was lucky that it didnā€™t do any uncommanded 360 degree rolls at low altitude. At higher windspeeds, I was unable to avoid gaining altitude, but the effect wasnā€™t too strong. Of course a soft landing would have been impossible if the wind got any strongerā€¦

I use mission planner / dataflash logs / review a log to analyse logs
I have checked right now and it works. But I am not surprised as I had to change the SD card this evening because of bad logging message.
I did a last test this evening with more speed in q_hover and I saw oscillations so the attenuation is needed but yes it depends on airframe and airspeed. Do you intend to make a parameter ? and to merge your branch ?
A last funny story, during my last test the back transition ended into the water again !! Not a big deal as the water is now over 20Ā°C. The conclusion is : do not try a transition if q_tailsit_angle > q_angle max. It seems there is not a lot of damage, only the 3.3V GPS voltage regulator is burnt.

Hello Mark,
I have had a look at your video. This is a lot of wind for a tailsitter. From what I have seen in my logs, when at high lean angle, the bottom motor spin almost at his maximum. This is at the expense of other motors, so at the expense on airflow on elevons. A simple test would be to reduce propellers size of top and bottom motor. Also I have the feeling this is not a stable situation to get the pull force sum well bellow the CG. A software solution would be to put more constrains on top and bottom motors output.
Pierre