# Pseudospectral Theory Powers DIDO

DIDO’s foundation is pseudospectral theory and is the only pseudospectral solution with mathematically proven convergence properties.  But DIDO is fast and easy – absolutely no knowledge of the underlying pseudosprectral theory is required to generate and validate optimal control results.

DIDO provides an opportunity to test theories in the lab environment in record time. Researchers have broadened perspective and can solve problems faster.  Problems that could take months to solve with other methods can be solved in a matter of hours with DIDO software.

The input is nothing more than the problem formulation.   This generality allows for:

• Fairly complex interior point constraints
• Pre-defined segments
• Differentially-flat segments
• Transition conditions
• Mid-maneuver changes in dynamics
• Multi-dynamical systems
• Mid- maneuver changes in the cost function
• Switches
• Discrete events

# A Minimalist Approach to Solving Optimal Control Problems

DIDO automatically outputs:

• Hamiltonian
• Costates
• Path covectors
• Endpoint covectors

Use the outputs alongside classical tools like Pontryagin’s Principle to instantly verify numerical results.

# SEE IT FOR YOURSELF

All DIDO needs is the problem formulation in a manner … prescribed in a manner that is nearly identical to writing it on a piece of paper.  DIDO’s unique pencil-and-paper-like approach to problem coding is made possible through the use of DIDO’s unique expressions.

# DIDO IS THE FIRST OPTIMAL CONTROL THAT IS PACKAGE:

• Flight tested
• Hardware in-the-loop capable
• Object oriented
• Generate results without user supplied guess
• Implement the covector Mapping Principle (CMP)
• Requires no knowledge of the underlying algorithms

WINDOWS

Matlab

# Code Example

```[cost, primal] = dido(Problem)

Problem is a structure array with fields cost, dynamics, events and path that point to the input files,

Problem.cost = `MyCostFile’; Problem.dynamics = ‘MyDynamicsFile’; Problem.events = ‘MyEventsFile’; Problem.path = ‘MyPathFile’;

The variable, primal, is used in nearly all DIDO files to pass the states, controls, parameters and other useful quantities; thus, for example,

primal.states primal.controls

carry with them the state- and control-trajectory.```

This generality allows for:

• Fairly complex interior point constraints
• Pre-defined segments
• Differentially-flat segments
• Transition conditions
• Mid-maneuver changes in dynamics
• Multi-dynamical systems
• Mid- maneuver changes in the cost function
• Switches
• Discrete events