ArduPilot has been able to use X-Plane as a HIL (hardware in the loop) backend for quite some time, but it never worked particularly well as the limitations of the USB interface to the hardware prevented good sensor timings.

We have recently added the ability to use X-Plane 10 as a SITL backend, which works much better. The SITL (software in the loop) system runs ArduPilot natively on your desktop machine, and talks to X-Plane directly using UDP packets.

The above video demonstrates flying a Boeing 747-400 in X-Plane 10 using ArduPilot SITL. It flies nicely, and does an automatic takeoff and landing quite well. You can use almost any of the fixed wing aircraft in X-Plane with ArduPilot SITL, which opens up a whole world of simulation to explore. Many people create models of their own aircraft in order to test out how they will fly or to test them in conditions (such as very high wind) that may be dangerous to test with a real model.

I have written up some documentation on how to use X-Plane 10 with SITL to help people get started. Right now it only works with X-Plane 10 although I may add support for X-Plane 9 in the future.

Michael Oborne has added nice support for using X-Plane with SITL in the latest beta of MissionPlanner, and does nightly builds of the SITL binary for Windows. That avoids the need to build ArduPilot yourself if you just want to fly the standard code and not modify it yourself.

Limitations

There are some limitations to the X-Plane SITL backend. First off, X-Plane has quite slow network support. On my machine I typically get a sensor data rate of around 27Hz, which is far below the 1200 Hz we normally use for simulation. To overcome this the ArduPilot SITL code does sensor extrapolation to bring the rate up to around 900Hz, which is plenty for SITL to run. That extrapolation introduces small errors which can make the ArduPilot EKF state estimator unhappy. To avoid that problem we run with "EKF type 10" which is a fake AHRS interface that gets all state information directly from the simulator. That means you can't use the X-Plane SITL backend to test EKF settings.

The next limitation is that the simulation fidelity depends somewhat on the CPU load on your machine. That is an unfortunate consequence of X-Plane not supporting lock-step scheduling. So you may notice that simulated aircraft on your machine may not fly identically to the same aircraft on someone elses machine. You can reduce this effect by lowering the graphics settings in X-Plane.

We can currently only get joystick input from X-Plane for aileron, elevator, rudder and throttle. It would be nice to support flight mode switches, flaps and other controls that are normally used with ArduPilot. That is probably possible, but isn't implemented yet. So if you want a full controller then you can instead connect a joystick to SITL directly instead of via X-Plane (for example using the MissionPlanner joystick module or the mavproxy joystick module).

Finally, we only support fixed wing aircraft in X-Plane at the moment. I have been able to fly a helicopter, but I needed to give manual collective control from a joystick as we don't yet have a way to provide collective pitch input over the X-Plane data interface.

Manned AIrcraft and ArduPilot

Please don't assume that because ArduPilot can fly full sized aircraft in a simulator that you should use ArduPilot to fly real manned aircraft. ArduPilot is not suitable for manned applications and the development team would appreciate it if you did not try to use it for manned aircraft.

Happy Flying

I hope you enjoy flying X-Plane 10 with ArduPilot SITL!

Views: 3124


Developer
Comment by Andrew Tridgell on June 30, 2016 at 5:14pm

For anyone who wants to fly the B747-400 themselves I have put a copy of the ArduPilot parameter file and mission file here for you to use:

http://uav.tridgell.net/XPlane/B747-400/

Comment by JB on June 30, 2016 at 7:47pm

Thx Tridge ! Looks good.

Does it also support quadplane modes? Would probably be good to experiment on unconventional layouts.


Developer
Comment by Andrew Tridgell on June 30, 2016 at 8:26pm

@JB,

quadplane aren't supported yet. If we can get the data rate up high enough it might be feasible. Michael has it running at over 100Hz by turning down his graphics options. I haven't gotten above 27Hz yet, which is too low for small quadplanes. It may work for larger ones. We'd also need to work out the channel mapping, which is quite tricky in X-Plane.

Comment by 承德 金 on June 30, 2016 at 8:46pm

Hi Tridge, How about the FlightGear now?


Developer
Comment by Andrew Tridgell on June 30, 2016 at 10:14pm

yes, I would like to do FlightGear as a SITL backend. I have held off doing that previously because it has a very poor frame rate, as (at least last time I tested) the graphics refresh rate was tied to the network data rate. Now that I've added the extrapolation system and EKF-10 support that works around that for X-Plane I should be able to do the same for FlightGear.

I don't know when I'll get time to do it, but if anyone else wants to have a go then please do! Just look at libraries/SITL/SIM_XPlane.cpp for an example.

Comment by naish on June 30, 2016 at 10:47pm

"  Please don't assume that because ArduPilot can fly full sized aircraft in a simulator that you should use ArduPilot to fly real manned aircraft. ArduPilot is not suitable for manned applications and the development team would appreciate it if you did not try to use it for manned aircraft.  "

@ Tridge so what I'm going to do now with the B747 I just bought!? 


Developer
Comment by Andrew Tridgell on June 30, 2016 at 11:32pm

@naish, I know you're joking, but we do get regularly asked about using ArduPilot for manned aircraft, so I put in this disclaimer so that this demo wasn't taken as approval for manned operation.

As to what you will do with it, a 747 would make an awesome shed if you have a big enough back yard!

Comment by Kelly Foster on July 1, 2016 at 5:16am

Nice work Tridge and Michael.  I look forward to modeling some of my e-gliders in X-Plane for use in this new facility.  Tridge, how's the thermal performance of the 747?  ;-)

Kelly


Developer
Comment by Ryan Beall on July 1, 2016 at 8:49am

Perfect timing for some of my research!  Thanks and as usual, great work!

Comment by Ryan on July 4, 2016 at 9:23am

Great work Tridge! I am working on getting this going and seem to have an issue with the throttle not responding properly. I have confirmed that my joystick works correctly while not in SITL. When in SITL the throttle bouncing from target throttle to zero. Any ideas? 

Comment

You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2017   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service