# Implementing control system to track position and velocity references simultaneously

I've been trying to implement a PI (proportional-integral) controller to allow a launch vehicle to track 2 reference states simultaneous, namely position and velocity, so that the launch vehicle will end its ascent burn in a stable circular orbit at a 600km orbital altitude. I tried doing this by first solving an optimal guidance problem which provides the required reference position, reference velocity and reference control input (which is used as feedforward control) for the rocket to follow along its ascent. The PI controller is then used primarily to reject disturbances, with the feedforward control providing the bulk of the control input.

What I've noticed is that the PI controller does a good job at tracking 1 reference at a time (i.e. tracking a position reference or a velocity reference), but if I try and track both position and velocity at the same time, it gives disappointing results, with only 1 of the reference states being tracked accurately.

Attached is an example of implementing the controller to track only a position reference. Radial position is given in the left plot, and total velocity is given in the right plot, where the blue plots are the references to follow, and the orange plots are the actual trajectories taken by the rocket. As can be seen, the controller tracks the position reference very well, but isn't able to track the velocity reference with good accuracy.

If we then try to track just the velocity reference, we have the following plots, where the velocity is tracked well, but the position deviates from our desired trajectory. As such, I was wondering if there is a way to accurately track both position and velocity for the launch vehicle's ascent to orbit. How would tracking multiple reference targets be achieved during a real launch event?

• I'm not a control systems person, but I'm wondering if there is any expectation that this can work to begin with. These are not independent parameters, one is based on derivatives of the other, so they can't be controlled independently. Also, is the trajectory between t = 60 and 760 seconds ballistic? It looks like there is no thrust. Just what exactly is the algorithm controlling? I think it would be better if you include a clear, complete list and description of the specific input parameters and output parameters that your algorithm is connected to. – uhoh Dec 30 '17 at 6:24