User Stories

Lockheed Martin Space Systems Develops GN&C System for IRIS Satellite with Model-Based Design


Develop the guidance, navigation, and control (GN&C) system for the Interface Region Imaging Spectrograph (IRIS) observatory satellite


Use Model-Based Design with MATLAB and Simulink to model components of the GN&C system and the IRIS satellite, run closed-loop and processor-in-the-loop simulations, and generate production code


  • Development efficiency doubled
  • Efficient, defect-free code generated
  • Design updates completed in a single day

“A team of about four engineers designed, integrated, and tested the GN&C system in just 23 months. We were more efficient because we used the same tools for both analysis and code development, and generated 20,000 lines of defect-free code. For us, that makes a compelling case for Model-Based Design.”

Vincentz Knagenhjelm, GN&C engineer, Lockheed Martin Space Systems
The IRIS observatory.

The Interface Region Imaging Spectrograph (IRIS) observatory is currently in Earth orbit, where it is capturing ultraviolet spectra and high-resolution images of the sun. These images will help scientists better understand the flow of energy and plasma in the lowest levels of the solar atmosphere.

Designed and built by Lockheed Martin Space Systems, IRIS has an effective spatial resolution of 0.33 arcsec, enabling it to deliver unprecedented views of the chromosphere and transition region of the sun. To obtain these high-resolution images, IRIS relies on a precise guidance, navigation, and control (GN&C) system that Lockheed Martin Space Systems developed using Model-Based Design with MATLAB® and Simulink®.

“Model-Based Design enabled our small team to meet an aggressive delivery deadline for flight software,” says Bob Dougherty, lead GN&C engineer at Lockheed Martin. “The software has performed flawlessly in orbit, and the project has highlighted our ability to build low-cost, low-risk spacecraft.”


On similar projects in the past, Lockheed Martin engineers produced extensive algorithm design documents, some more than 1000 pages long. Programmers wrote the code by hand based on their interpretation of these documents. The entire process was slow, and defects were sometimes introduced during the hand coding.

With just 23 months scheduled for software design, integration, and testing, the team needed to accelerate the software delivery process significantly. To meet this goal, they sought to replace the detailed algorithm design document with a self-documenting design, reuse existing plant models for satellite hardware, replace hand coding with automatic code generation, and use a single environment for analysis and software development.


Lockheed Martin engineers accelerated the development of the IRIS GN&C flight software by using Model-Based Design.

Working in MATLAB and Simulink, the engineers developed a basic model of the control system to analyze pointing performance, or how accurately the spacecraft could be reoriented.

To create a plant model, the team reused existing Simulink and Stateflow® models of satellite components developed by the Lockheed Martin Space Vehicle Integration Laboratory (SVIL). They combined models of reaction wheels, magnetic torque rods, a star tracker, sun sensors, and other components with a Simulink model of the environment.

The team exported their Simulink control model, using Simulink Report Generator™ to create an interactive web view that was examined in depth during design reviews.

They verified the initial GN&C design by running closed-loop simulations with the plant model and performing model coverage analysis on the simulations using Simulink Coverage™.

Working with the MathWorks Pilot Engineering Group, they partitioned their initial flight software GN&C model into components, including the attitude controller, reaction wheel controller, and attitude determination module. Each component corresponded to a software unit in the flight code.

They used Embedded Coder® to generate C code for these components, adding a small amount of hand-generated “glue” code for a Moog Broad Reach Engineering radiation-hardened microprocessor and its executive software. Using a custom MATLAB user interface, the team exercised a variety of Simulink test cases for each GN&C flight software unit.

SVIL engineers added an integration layer to the plant model and used Embedded Coder to generate C code, which was deployed to a real-time computer for processor-in-the-loop testing.

After running real-time tests and optimizing the design in Simulink, the team generated approximately 20,000 lines of code for the production RAD750 processor. The GN&C system is in operation aboard IRIS, which is already delivering high-resolution images and spectral data.


  • Development efficiency doubled. “We measured equivalent source lines of code per developer hour and found that Model-Based Design was two to three times more efficient than hand coding for flight software,” says Phil Boyle, GN&C software engineer. “That was true not only for the IRIS project but for other projects on which we used Model-Based Design.”

  • Efficient, defect-free code generated. “We tried to use automatic code generation 10 years ago, but the code had to be heavily reworked before it could be used,” says Boyle. “In contrast, the code we generated for IRIS using Embedded Coder was not only free of defects, it was also efficient.”

  • Design updates completed in a single day. “After IRIS was put into operation, we discovered some peculiarities with the hardware that were unknown before launch,” Boyle says. “To account for this hardware behavior, we simply updated our Simulink models, re-generated code, and reran our unit tests and software item qualification tests. In one day, we were ready with an updated system.”