VTOL development in ArduPilot

1,022 views
Skip to first unread message

Christian Stewart

unread,
Oct 13, 2014, 5:24:57 PM10/13/14
to drones-...@googlegroups.com
Hi all,

I'm interested in developing the ArduPilot code to be capable of handling the FireFly6: http://birdseyeview.aero and I'd love to discuss this with everyone here. It's a complex project to embark on and I'm sure others have tried before (if so, please link me to any existing work!) but I think it's manageable.

I'd like to avoid creating a new type of craft altogether (ArduVTOL or similar) even though that might be the ideal way to do it (modes appropriate for every state) but I think using as much of the existing code as possible is better.

Here's a few ways I could see this working:
  • A "manager" of sorts to mix between ArduPlane and ArduCopter, in the transition mode running both loops at the same time, and in fully copter or fully plane states run only one loop at once. The servo outputs would always be controlled by the plane module (maybe)? and not be controlled at all in fully quad mode (?) and motor outputs mixed by the manager.
  • Implement all of the helicopter state controls in the plane mode (suboptimal)
I'm not really sure how this would work in terms of autopilot modes. The modes seem to be mostly shared between the two setups (plane and copter) so perhaps every command could be shared with both controllers, and a single input could linearly control the transition between both modes.

Thoughts?

Christian

Christian Stewart

unread,
Oct 20, 2014, 11:17:02 AM10/20/14
to drones-...@googlegroups.com
Hi all,

So here's how I've begun to go about this:

I've created a new git repository with ardupilot as a submodule. I'm writing the manager code which basically calls setup() on both arducopter and arduplane, and then picks between the two (instant toggle, no linear scaling) and runs loop() on one or the other in every frame. Really not sure if this is the best way to go about this. I need to pick one or the other to loop() because I have no mixing of the output servos built in yet.

Ideas?

Christian

Craig Elder

unread,
Oct 20, 2014, 9:46:27 PM10/20/14
to drones-discuss
Hi Christian  

We have a few people who are interested in VTOL aircraft.

Where is your repository located?

Craig

--
You received this message because you are subscribed to the Google Groups "drones-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to drones-discus...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Christian Stewart

unread,
Oct 20, 2014, 10:26:44 PM10/20/14
to drones-...@googlegroups.com
Working on it locally, currently. I'll post updates here when I really get down to the nitty gritty.

--
You received this message because you are subscribed to a topic in the Google Groups "drones-discuss" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/drones-discuss/Bzird-mg4uA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to drones-discus...@googlegroups.com.

David Pawlak

unread,
Oct 21, 2014, 7:10:59 AM10/21/14
to drones-...@googlegroups.com
Hi Christian,

On another thread here I mentioned a design based closely on the FireFly6, and I actually contemplated 2 versions, one being a very short take of and landing vSTOL, and another VTOL..

The idea was to do the vSTOL first, which should be "simpler". A matter of using the plane software, and adding a small fix for the fairly quick transition on takeoff/landing, reducing front motor thrust as forward airspeed increased, and rotating the rear motor to the verticle position. (and reverse on landing)

Later the second version which would use plane code again, with adaptations (adition really of the motor management library to control "lift and attitude control" at low airspeeds.

I guess you will be using an actual Firefly or will you be building something similar?



My guess that it might be less involved to use just "arduplane", and add or copy pieces for motor / attitude control at airspeeds less than stall.

Not having really looked at the code in detail yet, my feel that switching between the two "loops" would start to tangle up in all sorts of complex and conflicting interactions.

Plane relies on aileron / elevator and airspeed. let it do its work. If we are below stall, feed the outputs of those controls to a modified motor control module that creates roll or pitch. You'd have to handle all the airspeed warnings though, or feedback something to plane that keeps it happy.

For my application, I DO need to get something like this working soon, I'll probably start with the vSTOL though.

Christian Stewart

unread,
Oct 21, 2014, 11:34:24 AM10/21/14
to drones-...@googlegroups.com
Currently I'm looking into collaborating with a few other members of the DroneCode community, perhaps using the PX4 code instead as it's a bit more modular and thus probably better applied to what we're trying to do. Will let you know.

Robert Pluijmen

unread,
Dec 25, 2014, 8:21:25 PM12/25/14
to drones-...@googlegroups.com
Hi Christian,

Currently I am working on a merge of arducopter and arduplane. I am trying to find a way to merge these packages together with the necessary modifications to create a switchable ardupilot between the two in mid-air.

At the moment I have almost all code merged, just few items left to do, but had no time to bench test / HIL test anything.
If interested, let me know! I am not a programmer, but managed to get my way around with the arduino code to figure out how to merge.

Greets,

Rob

Team Tiltrotor

unread,
Dec 26, 2014, 1:02:20 AM12/26/14
to drones-...@googlegroups.com
Hi Christian, My friend and I have been working on a tiltrotor VTOL code, and we may be trying it out on a Fire Fly 6. We started with a tiltrotor, here are the details of that project.


We learned quite a bit, but here are some things to think about that might be helpful.

if you merge copter and plane codes (without additional code for the transition) you may be able to fly well when all the propellors are up right (like a standard Y6), and it might fly ok as a plane when the propellors are in airplane, but the transition is complex blend in control strategies. 

You may be able to find a way to quickly force the conversion, but you will have to disable attitude feedback or augment the standard Y6 outputs the second you start moving the thrust vector. The coupling of yaw and roll (and some vertical axis) with the thrust axis change requires some tricky work. I'm not exactly sure how the Fire Fly 6 "bridge" does this now, but either way you will have to cope with commanding a thrust axis change thats not too fast and not too slow. And if you do not phase out the rear motors at the right speed you may get some undesirable effects.

The power of the propellers are much greater than the power of the aerodynamic surfaces. Copter uses an attitude PID that is rate based, and plane uses a PID that is attitude based. Using the rate based PID in the conversion was important for smoother / better attitude control because you can generate very high attitude rates with the power of the propellor. You will want to retain the rate based PID through the conversion until you are an airplane. 

Those are just a few things to consider. Do you have a way to hand off plane L1 waypoint navigation to a copter navigation strategy or were you planning to manually do the conversion/transitions?

Thanks
Trevor

Christian Stewart

unread,
Dec 26, 2014, 1:26:28 PM12/26/14
to drones-...@googlegroups.com

Hi guys,

Thank you very much for the responses. I'm not sure how to proceed best with developing this in ardupilot,  but there is now a team working on a VTOL driver for PX4 on their software stack. They're pretty far along already. It might be better to focus our efforts supporting that work.

Christian


--

Craig Elder

unread,
Dec 26, 2014, 2:21:59 PM12/26/14
to drones-discuss

Christian,
We are supporting both the PX4 VTOL development as well as VTOL development within Ardupilot.  Trevor and Mike from Team Tiltrotor are specifically working on the Fire Fly Y6.  I think if you want to get involved with one of these projects that you should just decide which code base you are more familiar with.
We can get you involved with either effort (or both).
Craig

You received this message because you are subscribed to the Google Groups "drones-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to drones-discus...@googlegroups.com.

Christian Stewart

unread,
Dec 26, 2014, 3:27:02 PM12/26/14
to drones-discuss
Craig,

I'm most interested in working with the FireFly Y6, for sure. I've been included in some of the e-mail conversation of the PX4 team's effort, and while I haven't yet begun to contribute code in that area, I'm looking to start developing there in the next few weeks.

Here's the conversation I believe they have migrated to: https://groups.google.com/forum/#!topic/px4users/6MRWf84sk1c

Thank you very much for offering to get me more involved with the development effort. I'd much appreciate being included in any discussions you guys have towards future development of this project.

Best,
Christian
 
To unsubscribe from this group and all its topics, send an email to drones-discuss+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "drones-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to drones-discuss+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "drones-discuss" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/drones-discuss/Bzird-mg4uA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to drones-discuss+unsubscribe@googlegroups.com.

Robert Pluijmen

unread,
Dec 28, 2014, 7:17:38 PM12/28/14
to drones-...@googlegroups.com
Hi all,

So far I managed to merge all code, and with a simple int switch I can switch between the plane or copter code in real time.
The init is made almost same for both worlds, just here and there needs some work.

Initially I built this for a quad/plane, but I guess with this setup you can use it with tri or y6 as well, the copter code is fully intact. Just still need to do some output channel separation so the plane/copter don't use same output rc channels.

My idea was to have the copter code running from takeoff till a stable hover.
The transition I figured might work quite well by tilting front motors, either in quad or tri config, 45 degree-ish keeping the copter code running in stabilize and/or alt hold mode. Tilting the front motors but leaving the copter in Stabilize I guess will result in the front motors just delivering more and more power, to deal with the power loss due to thrust angle. In this way, the copter will try to maintain level flight and allows the copter to freely increase speed.

As airspeed picks up, the wings would start doing its work, where the full transition to plane would be accomplished by simultaneously
- rotating front motors full 90 degree forward
- redirecting throttle out from plane to both front motors
- switching off read motors
- switch instantly from copter code to plane code letting the plane code stabilize the craft with its own control surfaces.

I think it is quite possible to make the transition controlled by airspeed, thus leaving the copter code running until enough speed has been gained for the wings to work.
By a simple Variable that is switching the code, I think it can easily be programmed to be done by a RC switch, or even a mission command.
The mission should be readable by both codes as they are using the same or similar code to read the mission.

Just at the moment the code is not completely finished and tested, and still a little too big for the APM, but that's just because I am not a good programmer. Maybe someone has more skills in doing such.

Any thoughts anyone?

Avidh bavkar

unread,
Jan 2, 2015, 12:13:46 AM1/2/15
to drones-...@googlegroups.com
Ok, i am the dummy here, I have not joined the ardupilot developer group yet( ardupilot board is still on the way!)
Anyway, i do not think that this is a great idea because many vtol aircraft have two rotors and the software is meant to manage single bladed and triple bladed vehicles so flying like this might work, might not.
agian this is just what popped into my head and it may not work( i am only 12 years)

fredriksen

unread,
Jan 18, 2015, 6:30:13 PM1/18/15
to drones-...@googlegroups.com
hi Robert!

i am newbie in this field and now i am making quad/plane type drone by using APM 2.6(pixhawk next time)
and telemetry of joystick. but the problem is how i can control the two type's aviation in the same time by 1 person.

how about your output of the copter code? is it possible to adapt the arduplane mode of APM?

awaiting your reply.

brgds/fredrik
 

2014년 12월 29일 월요일 오전 9시 17분 38초 UTC+9, Robert Pluijmen 님의 말:

Vertigo

unread,
Feb 5, 2015, 10:57:37 AM2/5/15
to drones-...@googlegroups.com


On Monday, December 29, 2014 at 1:17:38 AM UTC+1, Robert Pluijmen wrote


My idea was to have the copter code running from takeoff till a stable hover.
The transition I figured might work quite well by tilting front motors, either in quad or tri config, 45 degree-ish keeping the copter code running in stabilize and/or alt hold mode. Tilting the front motors but leaving the copter in Stabilize I guess will result in the front motors just delivering more and more power, to deal with the power loss due to thrust angle. In this way, the copter will try to maintain level flight and allows the copter to freely increase speed.

As airspeed picks up, the wings would start doing its work, where the full transition to plane would be accomplished by simultaneously
- rotating front motors full 90 degree forward
- redirecting throttle out from plane to both front motors
- switching off read motors
- switch instantly from copter code to plane code letting the plane code stabilize the craft with its own control surfaces.
.. 
Any thoughts anyone?


You pretty much described my thoughts, so Im just hoping someone can make it work :). One  thing Id do differently is not switching from one to the other mode "instantly", but gradually fade in the airplane controls. The rear propeller isnt going to stop immediately and if elevator deflection is activated instantly, its not going to make a for smooth transition. Why not fade it in over the course of a few seconds? Or make it a function of airspeed (or tilt angle of the rotors if you dont have an airspeed sensor)

Also, you will want to perform the transition while in a slightly nose high attitude so the wings actually generate lift. By default, when flying as a multirotor, forward flight is achieved by tilting the craft forward. This is never going to work very well on something like the firefly, because the wing will generate a massive amount of negative lift. It also doesnt make sense to even try. Nose down just means lots of drag and negative lift. If we have a wing, lets use it, even when in multirotor mode,  like you said, just rotate the forward props to achieve forward velocity, keep the entire craft slightly nose *up* so the wings actually help instead of being a problem. Of course this is not going to help when flying sideways at speed, but I think thats something most of us can live with.

Are you trying this with a Firefly Robert? 

Ricardo Bencatel

unread,
Feb 6, 2015, 1:50:52 PM2/6/15
to drones-...@googlegroups.com

Hi Craig,

Could you also get me involved in this efforts?

I have a Pixhawk and am planning to buy a Fire Fly. I would probably be working more on the APM code base, but would not mind contributing to both.

 

By the way, my background is fixed-wing flight control.

 

Cheers,

Ricardo

Craig Elder

unread,
Feb 6, 2015, 3:16:15 PM2/6/15
to drones-discuss
Hi Ricardo

I will definitely get you involved in this project and see how you can work with Team Tiltrotor.

Expect a PM shortly


 

Felix

unread,
May 1, 2015, 12:13:41 PM5/1/15
to drones-...@googlegroups.com

Hi guys!

At the moment I'm working on a huge VTOL-aircraft and also have the problem to merge arducopter and arduplane. How did you manage to switch between the two codes?

I don't have any mutual controls between copter and plane. So I don't have the problem with tilting propellers etc. Just switching (or maybe fading) between the codes would work for me.

And the second problem: I'm planning to fly in Y4 configuration (one coaxial propeller in the front and two normal ones in the rear). Do you think, using the normal quadcopter code and deleting the roll elements for the two front motors in the AP_Motors file would work for that?

Thanks, would be really great, if you could help me with that!!!

Craig Elder

unread,
May 1, 2015, 12:32:32 PM5/1/15
to drones-discuss
Hi Felix

My suggestion is that you get in contact with Trevor and Mike from Team Tilt Rotor and help them with their VTOL project 

It is the most viable VTOL effort we have going




--
Reply all
Reply to author
Forward
0 new messages