Pushing the boundaries – the X-15 story

Suborbital flight with the X-15

Going to the edge of space… and back!

Operational history of the X-15

The North American X-15 was a rocket-powered, hypersonic research aircraft operated from 1959 to 1968 by the US Airforce and NASA. During that time, it set a number of records and greatly expanded the knowledge about conditions in the upper atmosphere and in hypersonic flight, thus ultimately laying the foundations upon which the Space Shuttle was built.

The X-15 reached Mach 6.72 on October 3, 1967, which is still today the official world record for the highest speed ever reached by a manned aircraft. In ballistic flight, it reached a top altitude of 354,200 feet (107.8 km) on August 22, 1963, crossing the boundary of space as defined by the Fédération Aéronautique International and making the X-15 the worlds first spaceplane. The 100 km altitude was only crossed on one other flight, but since the USAF defined the criterion for spaceflight by reaching an altitude of 50 miles, 13 different flights met this criterion and qualified the pilots for astronaut status.

Technical data

The X-15 is powered by the XLR-99 using ammonia and liquid oxygen as propellants, giving the plane a thrust of 70,400 lb and a thrust/weight ratio of 2.07. The rocket engine would only burn for about 80 seconds, the smallest part of the whole flight profile, but this would be sufficient to fling the plane on a high reaching ballistic trajectory or to accelerate it to tremendous velocities. It was the first man-rated rocket engine that could be throttled.

The plane has a thick wedge tail for stability at hypersonic flight conditions, however this produces a lot of drag at lower speeds. This means that the glide slope in the unpowered approach back to base is rather steep, and once back in the lower atmosphere, the X-15 sinks rapidly.

For maneuvering in the upper atmosphere where there is no significant air and the control surfaces do not work, the X-15 is equipped with a reaction control system (RCS) using hydrogen peroxide as propellant.

Flight dynamics of the X-15 in Flightgear is based on NASA-TN-D-2532 ‘Flight Measurements of Stability and Control Derivatives of the X-15 Research Airplane to a Mach Number of 6.02 and an Angle of Attack of 25 degrees’.

The RCS is not modeled in the default version of the X-15 available from the Flightgear download page, however an alternative versions of the X-15 with RCS and 3d cockpit are linked below.

Getting ready for suborbital flight

In reality, the X-15 was dropped from a B-52 aircraft at typically 45,000 ft and 450 kt, and then started its engines. This required a lot of preparation, however we also need to prepare the sim for suborbital flight.


Rendering suborbital flight is nothing Flightgear is designed to do, but as it is a very flexible framework, it can still be made to do it. The main problem is opening up the visibility to values which are plausible from the top of a ballistic arc at the edge of space, which amounts to about 400-600 km. This will require a modern graphics card and lots of system memory (the screenshots below were done on a GeForce GTX 670M with 3 GB GPU memory and another 8 GB system memory, this delivered a framerate of ~20 fps at arc top). Trying to open the visibility to large values can have severe performance impacts to the point that FG becomes unresponsive and can crash FG when memory actually runs out – it is recommended to try suitable settings with the ufo before using the X-15.

Some settings need to be tweaked:

* In order for the terrain to be loaded, the LOD range for terrain needs to be set. In the menu, View->Adjust LOD ranges, and set LOD bare to 500000 in order to allow terrain to be loaded up to 500 km distance.

* Loading terrain doesn’t help if the renderer does not display it. The camera of the renderer needs to be instructed not to clip faraway objects. Open the property browser from the Debug->Property Browser menu, and change into /sim/rendering/camera-group/ and adjust zfar to 500000 (or set the property at startup via commandline).

* Finally the weather system needs to be convinced to produce large visibility at high altitude. For Basic Weather, set the visibility at high altitude accrodingly in the mask. Advanced Weather will do it automatically if Max. Visibility in the Advanced Settings is high enough, however the gui doesn’t allow that, hence use the property browser again to set /local-weather/config/aux-max-vis-range to 13.12 (the slider operates on a log scale which is then converted to the actual value).

Switch randon objects, buildings and vegetation off before the flight – you won’t see them, and they will cost a lot of memory which you badly need otherwise. Launching over islands limits the amount of terrain to be loaded, also World Scenery 1.0 with low polygon count works better than he new World Scenery 2.0.

Finally, in the View->Rendering menu, switch Atmospheric Light Scattering on – this will render the atmosphere visuals.

One problem may be that FG can’t load the scenery fast enough. If the OS caches used files, loading the scenery from disk into memory once with an ufo-flight before using the X-15 may help here.

Climbing into space

Start the simulation in air, i.e. using commandline options –altitude=45000 and –vc=450 — this will produce the state of the X-15 just after having been dropped from a B-52. For a semi-historic trajectory, you can start above Nellis AFB (KLSV) and aim at a course of 240 deg which will roughly get you to Edwards AFB and Rogers Dry lake, the historic landing site for the X-15.

Take a few seconds after the drop to stabilize the plane into a shallow descent, double-check all settings and make sure you’re ready. If all looks well, push the throttle forward till the rocket engine ignites.

The XLR-99 delivers significant thrust, and speed will build up rapidly. We’re far too low for this, so pull gently on the stick till the plane goes into a 45 degree climb out of the lower atmosphere.

After a bit more than a minute, the main engine will cut out, but the X-15 will climb on. With increasing altitude, pressure based airspeed and altitude gauge become unreliable, so take a look at their inertial counterparts on the right side of the instrument panel now.

As the ballistic climb continues, the airfoils are losing effectiveness rapidly – time to switch on the RCS! Operate the BAL switch on the right side of the panel, press ‘i’ to grab the stick for RCS control (which in reality would be located on the left side of the cockpit). Think spacecraft now – there’s no damping force left, so operate the thrusters with carefully controlled bursts to stabilize the X-15. Once you have time to look out, you should see a lot of California. And Edwards AFB is really far, far down!

Back to Earth

Now comes the dangerous part — we’re falling down from 330.000 ft, we’re going to be really fast and the deceleration will be hard. The good news is that the view from the cockpit is now quite a bit more spectacular as the planet comes into view.

Stabilize the attitude using the RCS thrusters while high up. If the X-15 enters the atmosphere in a spin or roll condition, you will likely not survive the entry. As the plane gets lower, the airflow should start to build up, and if everything is going well, the X-15 should align its nose with the airflow.

The ailerons may become responsive below 200.000 ft already, start switching back to aerodynamical controls using the ‘u’ key and stabilize roll.

If you’ve been high up, the X-15 is falling really steeply at this point.

As the ground rushes closer, eventually the elevator becomes responsive as well, typically this starts below 80.000 ft. At this point, the plane will be going really fast and the ground approach rapidly. Pull back on the stick gently and watch the g-force. At this speed, even a gentle pull will translate into lots of force. Expect to experience 6-8 g during the pull out and prepare to black out in the worst phase. This is the most dangerous part of the flight.

Of course, if you don’t want to see a blackout simulated, you can always switch it off in the menu.

If everything went well, you should end up somewhere around 30.000 to 40.000 ft in level flight, with Edwards AFB (or whatever your landing site may be) in convenient reach. Now you can start trusting the pressure-based instrumentation again.

From this point, the drag of the stabilizing fins will be felt badly. Glide the plane maintaining about 300 kt. Rogers Dry Lake is a big place, so planning an approach should be reasonably easy.

Skids and gear out for the final approach…

… and a safe landing on the lakebed.

High speed profiles

Historically, the X-15 has not only been flown in high altitude profiles but also in high speed profiles. These are somewhat easier to pilot and control. For a high speed profile, aim at a more shallow climb angle, level off early and try to go horizontal around 100.000 ft, then let the X-15 accelerate and see how fast she will go.

After the engine cuts out, you can simply maintain altitude till the airspeed bleeds off and then slowly descent towards the landing site. Here’s an approach to Edwards AFB from a high speed run, coming in at 60.000 ft now.

Enjoy flying the first spaceplane mankind has built!

Alternative versions of the X-15

B-52 launched X-15 by Enrique Laso Leon (requires startup from historical location and joystick throttle control)

Free launched X-15 based on Enrique’s version, allowing startup at any location and keyboard throttle control, with some sound effects added.

Special thanks

The modelers of the X-15 in Flightgear:

Enrique Laso Leon
Jon S. Berndt

3 thoughts on “Pushing the boundaries – the X-15 story”

  1. Very interesting technical details eg. on zfar, I always wondered why flightgear could not be used like e.g. orbitersim, now I realize how complex this must be and how much work is involved. Keep up good work!

Leave a Reply

Your email address will not be published. Required fields are marked *


9 − three =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>