ECE 602 Final Project
Paper: Minimum-Landing-Error Powered-Descent Guidance for Mars Landing Using Convex Optimization
Contents
Objective: Reproduce experimental results
Authors: Adam Gomes, Stanislav Bochkarev, and Ryan MacDonald
Date: March 30, 2016
Problem Formulation
The main purpose of the paper "Minimum-Landing-Error Powered-Descent Guidance for Mars Landing Using Convex Optimization" is to generate the minimum-landing-error trajectory, which is the trajectory that minimizes the distance to prescribed target while using the available fuel optimally. By posing the problem as a convex optimization problem, the authors claim the global optimal solution of the problem can be solved onboard with known bounds on convergence time.
Proposed Solution
By posing the Minimum-Landing-Error problem as a discrete time, relaxed convex optimization problem, a globally minimal solution can be found. The discretized relaxed minimum-landing-error guidance problem can be written as a second-order-cone program in the following way:
subject to
The definitions of the symbols from the above minimization problem can be found on the first page of the paper.
Data sources
The authors specified the problem parameters in the paper. We used identical parameters in our simulations. These parameters are defined here.
:gravitational vector
:dry mass
:wet mass
:fuel conversion coefficient
:lower bound for thrust
:upper bound for thrust
:initial position of the lander
:initial velocity profile for lander in Case 1
:initial velocity profile for lander in Case 2
Additionally, a number of matrices were defined to form the appropriate structure in the problem formulation. These matrices are defined here.
System parameters for Mars Landing Problem
%constant acceleration due to gravity gravity = [-3.1444 0 0]'; %dry mass of lander mass_dry = 1505; %kg %wet mass of lander mass_wet = 1905; %kg %constant of proportionality between thrust magnitude and mass consumption alph = 4.53e-4; %s/m %lower bound on thrust magnitude rho_1 = 4972; %N %upper bound on thrust magnitude rho_2 = 13260; %N %Convex Linear Operators E = [eye(3) zeros(3,4)]; F = [0 0 0 0 0 0 1]; E_u = [eye(3) zeros(3,1)]; E_v = [zeros(3,3) eye(3) zeros(3,1)]; %vector of zeros with unity at index i e_1 = [1 0 0]'; e_2 = [0 1 0]'; e_3 = [0 0 1]'; %glide-slope constraint angle gamma = pi*(4/180); %rad %matrix component of cone constraint S = [e_2';e_3']; %vector component of cone constraint c = e_1/tan(gamma); %number of discrete time steps N = 55; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Case 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Case 1: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % %initial position of lander position_0 = [1500 500 2000]'; %m %initial velocity of lander velocity_0 = [-75 0 100]'; %m/s %optimal final time tf_opt = 78.4; %s %time increment time_step = tf_opt/N; %Define the State transition matrices (Reference [3] of paper) A_c = [zeros(3,3) eye(3) zeros(3,1);zeros(4,7)]; B_c = [[zeros(3,3);eye(3);0 0 0] [0 0 0 0 0 0 -alph]']; A = expm(A_c*time_step); %continuous time A matrix B = A*(eye(7)*time_step - A_c*time_step^2/2)*B_c; %continuous time B matrix Lambda_k = zeros(N*7,4); Lambda_k(1:7,1:4) = B; for k = 2:N %Next time step of gravities effect is dependent on the state %transition matrix and the previous time step Lambda_k((k-1)*7+1:k*7,:) = A*Lambda_k((k-2)*7+1:(k-1)*7,:) + B; end Psi_k = zeros(N*7,4*(N+1)); for k = 2:(N) %Next time step of gravities effect is dependent on the state %transition matrix and the previous time step Psi_k((k-1)*7+1:k*7,:) = A*Psi_k((k-2)*7+1:(k-1)*7,:); Psi_k((k-1)*7+1:k*7,((k*4-7):(4*k-4))) = B; end % Mass after the change of variables z0 = log(mass_wet-alph*rho_2*time_step*(0:N)'); % Initial state vector y0 = [position_0; velocity_0; log(mass_wet)]; s(1:N,7) = 0; for i = 1:N s(i,:) = (7*i-6):(7*i); end cvx_begin variable eta((N+1)*4) variable y(N*7) % Objective function minimize(norm(y(end-6:end-4),2)) subject to % Convexified thrust constraint for k = 0:N norm(E_u*eta(4*k+1:4*k+4), 2) <= eta(4*k+4); end % Thrust constraint 1 eta(4) <= rho_2*exp(-z0(1)).*(1-(F*y0-z0(1))); rho_1*exp(-z0(1))*(1-(F*y0-z0(1))+0.5*(F*y0-z0(1)).^2) <= eta(4); for k = 1:N % Cone constraints norm(S*E*(y(s(k, :))-y(s(N, :))), 2)-c'*(E*(y(s(k, :)))) <= 0; % Thrust constraints eta(4*(k)+4) <= rho_2*exp(-z0(k+1)).*(1-(F*y(s(k, :))-z0(k+1))); rho_1*exp(-z0(k+1))*(1-(F*y(s(k, :))-z0(k+1))+... 0.5*(F*y(s(k, :))-z0(k+1)).^2) <= eta(4*k+4); % System dynamics constraint y(s(k, :)) == A^k*y0+Lambda_k(s(k, :), :)*[gravity; 0]+... Psi_k(s(k, :), :)*eta; end % Fuel mass constraint y(end) >= log(mass_dry); % Final height is 0 constraint y(end-6) == 0; % Final velocity constraint for i = 1:3 y(end-i) == 0; end cvx_end % Converting output into manageable format dist(1:3, N+1) = 0; dist(1:3, 1) = position_0; mass(1) = mass_wet; for i = 1:N dist(1:3, i+1) = y((7*i-6):(7*i-4)); mass(i+1) = y(7*i); end %Graphing close all conenum = [0:100:1500]; radii = conenum./tan(gamma); [Z, Y, X] = cylinder(radii); m = surf(Z, Y, 1500*X); alpha(0.4) colormap(gray(256)); set(m, 'edgecolor', 'none'); hold on plot3(dist(3, :), dist(2, :), dist(1, :), '.'); xlabel('z (meters)') ylabel('y (meters)') zlabel('x (meters)') title('Case 1: 3D Trajectory') figure plot(0:time_step:tf_opt,dist) legend('x','y','z'); xlabel('Time (seconds)') ylabel('Position (meters)') title('Case 1: Trajectory vs. Time') figure plot(0:time_step:tf_opt,exp(mass)) xlabel('Time (seconds)') ylabel('Mass (kg)') title('Case 1: Mass vs. Time')
Calling SDPT3 4.0: 831 variables, 445 equality constraints ------------------------------------------------------------ num. of constraints = 445 dim. of sdp var = 110, num. of sdp blk = 55 dim. of socp var = 390, num. of socp blk = 111 dim. of linear var = 224 dim. of free var = 52 *** convert ublk to lblk ******************************************************************* SDPT3: Infeasible path-following algorithms ******************************************************************* version predcorr gam expon scale_data HKM 1 0.000 1 0 it pstep dstep pinfeas dinfeas gap prim-obj dual-obj cputime ------------------------------------------------------------------- 0|0.000|0.000|4.1e+01|2.5e+03|2.4e+10| 1.987744e+04 0.000000e+00| 0:0:00| chol 1 1 1|0.487|0.745|2.1e+01|6.4e+02|2.3e+09| 2.334667e+04 -6.921212e+05| 0:0:00| chol 1 1 2|0.841|0.949|3.3e+00|3.3e+01|1.6e+08| 2.492502e+04 -5.925256e+05| 0:0:00| chol 1 1 3|0.831|0.863|5.6e-01|4.6e+00|2.6e+07| 2.175852e+04 -2.545534e+05| 0:0:00| chol 1 1 4|0.729|0.902|1.5e-01|4.8e-01|7.4e+06| 1.265277e+04 -8.694024e+04| 0:0:00| chol 1 1 5|0.775|0.281|3.4e-02|3.5e-01|1.9e+06| 4.392802e+03 -7.479223e+04| 0:0:00| chol 1 1 6|0.707|0.285|1.0e-02|2.6e-01|7.3e+05| 2.098484e+03 -6.616263e+04| 0:0:00| chol 1 1 7|0.743|0.442|2.6e-03|1.5e-01|2.6e+05| 8.374794e+02 -5.501369e+04| 0:0:00| chol 1 1 8|0.647|0.438|9.1e-04|8.3e-02|1.2e+05| 4.709377e+02 -4.479317e+04| 0:0:00| chol 2 1 9|0.572|0.319|3.9e-04|5.7e-02|7.0e+04| 4.754979e+02 -3.677288e+04| 0:0:01| chol 2 2 10|0.688|0.286|1.2e-04|4.1e-02|4.1e+04| 7.769945e+02 -2.968569e+04| 0:0:01| chol 2 2 11|0.918|0.366|9.9e-06|2.6e-02|2.4e+04| 7.945215e+02 -2.103917e+04| 0:0:01| chol 2 2 12|0.485|0.338|5.1e-06|1.7e-02|1.7e+04| 4.599674e+02 -1.536268e+04| 0:0:01| chol 2 2 13|0.189|0.202|4.1e-06|1.4e-02|1.4e+04| 4.181912e+02 -1.249464e+04| 0:0:01| chol 1 2 14|0.925|0.069|3.1e-07|1.4e-02|1.3e+04| 4.096288e+02 -1.205311e+04| 0:0:01| chol 2 2 15|0.890|0.592|3.3e-08|5.5e-03|6.6e+03| 2.419056e+01 -6.296285e+03| 0:0:01| chol 2 2 16|0.924|0.574|2.2e-09|2.4e-03|3.1e+03| 2.046731e+02 -2.773917e+03| 0:0:01| chol 2 2 17|0.936|0.752|2.4e-10|5.9e-04|7.5e+02| 5.933283e+00 -7.234622e+02| 0:0:01| chol 2 2 18|0.981|0.975|3.7e-11|1.8e-05|1.9e+01| 1.437850e-01 -1.808433e+01| 0:0:01| chol 2 2 19|0.989|0.984|1.6e-12|2.1e-06|3.0e-01| 1.650734e-03 -2.363760e-01| 0:0:01| chol 1 1 20|0.986|0.959|5.9e-11|2.7e-07|1.2e-02| 2.246955e-05 -5.160945e-03| 0:0:01| chol 1 1 21|0.687|0.076|1.8e-11|9.5e-07|1.2e-02| 1.220497e-05 -4.994581e-03| 0:0:01| chol 1 1 22|1.000|0.519|1.1e-12|2.0e-06|8.2e-03| 8.137136e-06 -4.221707e-03| 0:0:01| chol 1 1 23|1.000|0.497|8.1e-13|3.3e-06|5.4e-03| 5.216633e-06 -3.270417e-03| 0:0:01| chol 1 1 24|1.000|0.492|1.0e-12|5.7e-06|3.6e-03| 3.442317e-06 -2.429920e-03| 0:0:01| chol 1 1 25|1.000|0.497|1.3e-12|8.3e-06|2.3e-03| 2.278119e-06 -1.754252e-03| 0:0:01| chol 1 1 26|1.000|0.503|5.2e-12|5.6e-06|1.5e-03| 1.485395e-06 -1.231815e-03| 0:0:01| chol 1 1 27|1.000|0.510|2.2e-13|3.7e-06|9.5e-04| 9.454939e-07 -8.373111e-04| 0:0:01| chol 1 1 28|1.000|0.519|6.9e-13|2.4e-06|6.1e-04| 6.046785e-07 -5.552285e-04| 0:0:01| chol 1 1 29|1.000|0.529|1.1e-12|1.6e-06|3.8e-04| 3.843846e-07 -3.601681e-04| 0:0:01| chol 1 1 30|1.000|0.542|8.2e-13|1.0e-06|2.4e-04| 2.416933e-07 -2.287083e-04| 0:0:01| chol 1 1 31|1.000|0.555|5.1e-12|6.4e-07|1.4e-04| 1.499169e-07 -1.421380e-04| 0:0:01| chol 1 1 32|1.000|0.571|2.8e-12|3.9e-07|8.7e-05| 9.153553e-08 -8.641511e-05| 0:0:01| chol 1 1 33|1.000|0.586|3.9e-12|2.4e-07|5.1e-05| 5.491900e-08 -5.138922e-05| 0:0:01| chol 1 1 34|1.000|0.602|1.8e-12|1.4e-07|3.0e-05| 3.234435e-08 -2.991683e-05| 0:0:01| chol 1 1 35|1.000|0.616|2.7e-12|8.1e-08|1.7e-05| 1.870290e-08 -1.709183e-05| 0:0:01| chol 1 1 36|1.000|0.626|6.5e-12|4.6e-08|9.5e-06| 1.064043e-08 -9.627273e-06| 0:0:01| chol 1 1 37|1.000|0.632|9.5e-13|2.6e-08|5.3e-06| 5.995288e-09 -5.385636e-06| 0:0:01| chol 1 1 38|1.000|0.626|5.4e-13|1.5e-08|3.0e-06| 3.362087e-09 -3.036010e-06| 0:0:01| chol 1 1 39|1.000|0.618|3.6e-12|8.2e-09|1.7e-06| 1.903313e-09 -1.732303e-06| 0:0:01| chol 1 1 40|1.000|0.600|8.6e-12|4.8e-09|1.0e-06| 1.096467e-09 -1.012134e-06| 0:0:01| chol 1 1 41|1.000|0.578|5.9e-12|2.8e-09|6.5e-07| 6.521610e-10 -6.105292e-07| 0:0:01| chol 1 1 42|1.000|0.543|5.0e-12|1.8e-09|4.4e-07| 4.136173e-10 -3.881224e-07| 0:0:01| chol 1 1 43|1.000|0.526|3.8e-13|1.2e-09|3.0e-07| 2.768392e-10 -2.546153e-07| 0:0:01| chol 1 1 44|1.000|0.516|5.8e-12|8.2e-10|2.1e-07| 1.922183e-10 -1.714855e-07| 0:0:01| chol 1 1 45|1.000|0.510|1.4e-12|5.8e-10|1.5e-07| 1.357243e-10 -1.176817e-07| 0:0:02| chol 1 1 46|1.000|0.506|4.1e-12|4.1e-10|1.1e-07| 9.645866e-11 -8.181239e-08| 0:0:02| chol 1 1 47|1.000|0.504|3.2e-12|2.9e-10|7.7e-08| 6.879350e-11 -5.739999e-08| 0:0:02| chol 1 1 48|1.000|0.503|1.9e-12|2.1e-10|5.5e-08| 4.916846e-11 -4.053657e-08| 0:0:02| chol 1 1 49|1.000|0.502|9.9e-12|1.5e-10|4.0e-08| 3.519071e-11 -2.876177e-08| 0:0:02| chol 1 1 50|1.000|0.502|8.0e-12|1.1e-10|2.8e-08| 2.520985e-11 -2.047568e-08| 0:0:02| chol 1 1 51|1.000|0.501|9.8e-12|7.6e-11|2.0e-08| 1.807111e-11 -1.461169e-08| 0:0:02| chol 1 1 52|1.000|0.501|2.6e-12|5.5e-11|1.5e-08| 1.295946e-11 -1.044491e-08| 0:0:02| stop: max(relative gap, infeasibilities) < 1.49e-08 ------------------------------------------------------------------- number of iterations = 52 primal objective value = 1.29594581e-11 dual objective value = -1.04449121e-08 gap := trace(XZ) = 1.46e-08 relative gap = 1.46e-08 actual relative gap = 1.05e-08 rel. primal infeas (scaled problem) = 2.60e-12 rel. dual " " " = 5.53e-11 rel. primal infeas (unscaled problem) = 0.00e+00 rel. dual " " " = 0.00e+00 norm(X), norm(y), norm(Z) = 4.3e+04, 1.2e+05, 8.5e+03 norm(A), norm(b), norm(C) = 3.1e+03, 7.9e+04, 2.0e+00 Total CPU time (secs) = 1.72 CPU time per iteration = 0.03 termination code = 0 DIMACS: 1.0e-11 0.0e+00 5.5e-11 0.0e+00 1.0e-08 1.5e-08 ------------------------------------------------------------------- ------------------------------------------------------------ Status: Solved Optimal value (cvx_optval): +1.29595e-11



Case 2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Case 2: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % %initial position of lander position_0 = [1500 500 2000]'; %m %initial velocity of lander velocity_0 = [-75 40 100]'; %m/s %optimal final time tf_opt = 77.7; %s %time increment time_step = tf_opt/N; %Define the State transition matrices (Reference [3] of paper) A_c = [zeros(3,3) eye(3) zeros(3,1);zeros(4,7)]; B_c = [[zeros(3,3);eye(3);0 0 0] [0 0 0 0 0 0 -alph]']; A = expm(A_c*time_step); %continuous time A matrix B = A*(eye(7)*time_step - A_c*time_step^2/2)*B_c; %continuous time B matrix Lambda_k = zeros(N*7,4); Lambda_k(1:7,1:4) = B; for k = 2:N %Next time step of gravities effect is dependent on the state %transition matrix and the previous time step Lambda_k((k-1)*7+1:k*7,:) = A*Lambda_k((k-2)*7+1:(k-1)*7,:) + B; end Psi_k = zeros(N*7,4*(N+1)); for k = 2:(N) %Next time step of gravities effect is dependent on the state %transition matrix and the previous time step Psi_k((k-1)*7+1:k*7,:) = A*Psi_k((k-2)*7+1:(k-1)*7,:); Psi_k((k-1)*7+1:k*7,((k*4-7):(4*k-4))) = B; end % State vector after change in variables z0 = log(mass_wet-alph*rho_2*time_step*(0:N)'); % Initial state vector y0 = [position_0; velocity_0; log(mass_wet)]; s(1:N,7) = 0; for i = 1:N s(i,:) = (7*i-6):(7*i); end cvx_begin variable eta((N+1)*4) variable y(N*7) % Objective function minimize(norm(y(end-6:end-4),2)) subject to % Convexified thrust constraint for k = 0:N norm(E_u*eta(4*k+1:4*k+4), 2) <= eta(4*k+4); end % Thrust constraint 1 eta(4) <= rho_2*exp(-z0(1)).*(1-(F*y0-z0(1))); rho_1*exp(-z0(1))*(1-(F*y0-z0(1))+0.5*(F*y0-z0(1)).^2) <= eta(4); for k = 1:N % Cone constraints norm(S*E*(y(s(k, :))-y(s(N, :))), 2)-c'*(E*(y(s(k, :)))) <= 0; % Thrust constraints eta(4*(k)+4) <= rho_2*exp(-z0(k+1)).*(1-(F*y(s(k, :))-z0(k+1))); rho_1*exp(-z0(k+1))*(1-(F*y(s(k, :))-z0(k+1))+... 0.5*(F*y(s(k, :))-z0(k+1)).^2) <= eta(4*k+4); % System dynamics constraint y(s(k, :)) == A^k*y0+Lambda_k(s(k, :), :)*[gravity; 0]+... Psi_k(s(k, :), :)*eta; end % Fuel mass constraint y(end) >= log(mass_dry); % Final height is 0 constraint y(end-6) == 0; % Final velocity constraint for i = 1:3 y(end-i) == 0; end cvx_end % Converting output into manageable format dist(1:3, N+1) = 0; dist(1:3, 1) = position_0; mass(1) = mass_wet; for i = 1:N dist(1:3, i+1) = y((7*i-6):(7*i-4)); mass(i+1) = y(7*i); end % Graphing conenum = [0:100:1500]; radii = conenum./tan(gamma); [Z, Y, X] = cylinder(radii); m = surf(Z, Y, 1500*X); alpha(0.4) colormap(gray(256)); set(m, 'edgecolor', 'none'); hold on plot3(dist(3, :), dist(2, :), dist(1, :), '.'); xlabel('z (meters)') ylabel('y (meters)') zlabel('x (meters)') title('Case 2: 3D Trajectory') figure plot(0:time_step:tf_opt,dist) legend('x','y','z'); xlabel('Time (seconds)') ylabel('Position (meters)') title('Case 2: Trajectory vs. Time') figure plot(0:time_step:tf_opt,exp(mass)) xlabel('Time (seconds)') ylabel('Mass (kg)') title('Case 2: Mass vs. Time')
Calling SDPT3 4.0: 831 variables, 445 equality constraints ------------------------------------------------------------ num. of constraints = 445 dim. of sdp var = 110, num. of sdp blk = 55 dim. of socp var = 390, num. of socp blk = 111 dim. of linear var = 224 dim. of free var = 52 *** convert ublk to lblk ******************************************************************* SDPT3: Infeasible path-following algorithms ******************************************************************* version predcorr gam expon scale_data HKM 1 0.000 1 0 it pstep dstep pinfeas dinfeas gap prim-obj dual-obj cputime ------------------------------------------------------------------- 0|0.000|0.000|3.9e+01|2.5e+03|2.4e+10| 1.989191e+04 0.000000e+00| 0:0:00| chol 1 1 1|0.485|0.743|2.0e+01|6.4e+02|2.3e+09| 2.340265e+04 -6.969013e+05| 0:0:00| chol 1 1 2|0.840|0.949|3.3e+00|3.3e+01|1.6e+08| 2.498722e+04 -5.961825e+05| 0:0:00| chol 1 1 3|0.831|0.862|5.5e-01|4.6e+00|2.6e+07| 2.180606e+04 -2.560213e+05| 0:0:00| chol 1 1 4|0.726|0.896|1.5e-01|5.1e-01|7.5e+06| 1.278048e+04 -8.903988e+04| 0:0:00| chol 1 1 5|0.770|0.281|3.5e-02|3.7e-01|2.0e+06| 4.542983e+03 -7.649935e+04| 0:0:00| chol 1 1 6|0.708|0.286|1.0e-02|2.7e-01|7.5e+05| 2.182057e+03 -6.750664e+04| 0:0:00| chol 1 1 7|0.743|0.442|2.6e-03|1.5e-01|2.7e+05| 8.737988e+02 -5.594412e+04| 0:0:00| chol 1 1 8|0.642|0.437|9.3e-04|8.7e-02|1.3e+05| 5.119571e+02 -4.548464e+04| 0:0:00| chol 1 1 9|0.564|0.315|4.1e-04|6.1e-02|7.3e+04| 5.837237e+02 -3.737153e+04| 0:0:00| chol 2 2 10|0.683|0.281|1.3e-04|4.4e-02|4.3e+04| 1.209920e+03 -3.023571e+04| 0:0:00| chol 2 2 11|0.923|0.350|9.9e-06|2.9e-02|2.5e+04| 1.440645e+03 -2.186073e+04| 0:0:00| chol 2 2 12|0.542|0.354|4.5e-06|1.9e-02|1.8e+04| 9.948711e+02 -1.557222e+04| 0:0:00| chol 2 2 13|0.131|0.211|3.9e-06|1.5e-02|1.5e+04| 9.361008e+02 -1.265425e+04| 0:0:00| chol 2 2 14|0.918|0.058|3.2e-07|1.4e-02|1.4e+04| 9.123526e+02 -1.228993e+04| 0:0:00| chol 2 2 15|0.720|0.680|8.9e-08|4.6e-03|5.6e+03| 3.323786e+02 -5.033466e+03| 0:0:00| chol 2 2 16|0.825|0.255|1.5e-08|3.5e-03|4.2e+03| 1.764351e+01 -4.036218e+03| 0:0:00| chol 2 2 17|0.917|0.216|2.5e-09|2.7e-03|4.0e+03| 7.850340e+02 -3.096211e+03| 0:0:00| chol 2 4 18|0.984|0.569|6.2e-10|1.2e-03|2.0e+03| 1.314356e+02 -1.782703e+03| 0:0:00| chol 2 2 19|0.964|0.585|2.7e-10|4.9e-04|8.4e+02| 9.194329e+00 -8.080644e+02| 0:0:01| chol 2 3 20|0.970|0.880|1.5e-10|5.8e-05|1.0e+02| 8.073025e-01 -9.940404e+01| 0:0:01| chol 2 3 21|0.986|0.985|2.7e-11|8.9e-07|1.5e+00| 1.193031e-02 -1.488317e+00| 0:0:01| chol 2 2 22|0.989|0.989|5.6e-12|1.1e-08|1.7e-02| 1.319072e-04 -1.645190e-02| 0:0:01| chol 2 1 23|0.984|0.004|4.3e-12|2.5e-08|1.8e-02| 1.229017e-05 -1.640549e-02| 0:0:01| chol 2 1 24|1.000|0.527|3.6e-12|5.5e-08|1.2e-02| 1.186458e-05 -1.052946e-02| 0:0:01| chol 2 2 25|1.000|0.503|1.3e-12|1.1e-07|7.8e-03| 7.525621e-06 -6.909095e-03| 0:0:01| chol 2 2 26|1.000|0.497|4.7e-13|2.0e-07|5.1e-03| 4.934387e-06 -4.559813e-03| 0:0:01| chol 2 2 27|1.000|0.504|1.3e-13|3.7e-07|3.3e-03| 3.246242e-06 -2.986411e-03| 0:0:01| chol 1 1 28|1.000|0.512|1.4e-11|6.5e-07|2.2e-03| 2.120950e-06 -1.938623e-03| 0:0:01| chol 1 1 29|1.000|0.522|1.1e-11|1.1e-06|1.4e-03| 1.374000e-06 -1.246967e-03| 0:0:01| chol 1 1 30|1.000|0.534|1.8e-11|1.8e-06|8.8e-04| 8.808251e-07 -7.963169e-04| 0:0:01| chol 1 1 31|1.000|0.548|1.6e-11|2.1e-06|5.4e-04| 5.575656e-07 -5.047078e-04| 0:0:01| chol 1 1 32|1.000|0.562|1.5e-11|1.3e-06|3.2e-04| 3.411211e-07 -3.137541e-04| 0:0:01| chol 1 1 33|1.000|0.576|2.4e-11|8.2e-07|1.9e-04| 2.042360e-07 -1.901679e-04| 0:0:01| chol 1 1 34|1.000|0.591|2.9e-12|5.0e-07|1.1e-04| 1.214220e-07 -1.126267e-04| 0:0:01| chol 1 1 35|1.000|0.605|4.2e-12|3.0e-07|6.5e-05| 7.110492e-08 -6.536627e-05| 0:0:01| chol 1 1 36|1.000|0.620|2.7e-12|1.7e-07|3.7e-05| 4.092482e-08 -3.717847e-05| 0:0:01| chol 1 1 37|1.000|0.632|8.7e-12|9.8e-08|2.1e-05| 2.314607e-08 -2.080059e-05| 0:0:01| chol 1 1 38|1.000|0.639|9.6e-12|5.5e-08|1.1e-05| 1.290605e-08 -1.150962e-05| 0:0:01| chol 1 1 39|1.000|0.639|1.1e-12|3.1e-08|6.3e-06| 7.154724e-09 -6.374238e-06| 0:0:01| chol 1 1 40|1.000|0.627|1.4e-12|1.7e-08|3.6e-06| 3.979350e-09 -3.591074e-06| 0:0:01| chol 1 1 41|1.000|0.621|1.7e-11|9.7e-09|2.0e-06| 2.247696e-09 -2.039967e-06| 0:0:01| chol 1 1 42|1.000|0.606|1.2e-11|5.6e-09|1.2e-06| 1.285952e-09 -1.182538e-06| 0:0:01| chol 1 1 43|1.000|0.572|2.6e-13|3.3e-09|7.8e-07| 7.639361e-10 -7.181886e-07| 0:0:01| chol 1 1 44|1.000|0.535|2.6e-11|2.1e-09|5.1e-07| 4.938690e-10 -4.625311e-07| 0:0:01| chol 1 1 45|1.000|0.528|1.3e-11|1.4e-09|3.6e-07| 3.260517e-10 -3.020060e-07| 0:0:01| chol 1 1 46|1.000|0.515|6.7e-12|9.7e-10|2.5e-07| 2.266618e-10 -2.032621e-07| 0:0:01| chol 1 1 47|1.000|0.508|8.2e-12|6.9e-10|1.8e-07| 1.602661e-10 -1.394925e-07| 0:0:01| chol 1 1 48|1.000|0.505|9.5e-12|4.9e-10|1.3e-07| 1.140611e-10 -9.701821e-08| 0:0:01| chol 1 1 49|1.000|0.503|2.2e-11|3.5e-10|9.2e-08| 8.146863e-11 -6.811861e-08| 0:0:01| chol 1 1 50|1.000|0.502|1.0e-12|2.8e-10|6.6e-08| 5.831627e-11 -4.815203e-08| 0:0:01| chol 1 1 51|1.000|0.501|1.9e-11|1.9e-10|4.7e-08| 4.180197e-11 -3.420315e-08| 0:0:01| chol 1 1 52|1.000|0.500|7.1e-12|1.3e-10|3.4e-08| 2.999211e-11 -2.437940e-08| 0:0:01| chol 1 1 53|1.000|0.500|1.2e-11|1.7e-10|2.4e-08| 2.153231e-11 -1.742034e-08| 0:0:01| chol 1 1 54|1.000|0.500|2.1e-11|1.0e-10|1.7e-08| 1.546543e-11 -1.246981e-08| 0:0:01| chol 1 1 55|1.000|0.499|1.8e-12|6.7e-11|1.3e-08| 1.111129e-11 -8.937415e-09| 0:0:01| stop: max(relative gap, infeasibilities) < 1.49e-08 ------------------------------------------------------------------- number of iterations = 55 primal objective value = 1.11112853e-11 dual objective value = -8.93741514e-09 gap := trace(XZ) = 1.25e-08 relative gap = 1.25e-08 actual relative gap = 8.95e-09 rel. primal infeas (scaled problem) = 1.81e-12 rel. dual " " " = 6.72e-11 rel. primal infeas (unscaled problem) = 0.00e+00 rel. dual " " " = 0.00e+00 norm(X), norm(y), norm(Z) = 4.3e+04, 1.5e+06, 1.0e+05 norm(A), norm(b), norm(C) = 3.0e+03, 8.1e+04, 2.0e+00 Total CPU time (secs) = 1.44 CPU time per iteration = 0.03 termination code = 0 DIMACS: 7.3e-12 0.0e+00 6.7e-11 0.0e+00 8.9e-09 1.3e-08 ------------------------------------------------------------------- ------------------------------------------------------------ Status: Solved Optimal value (cvx_optval): +1.11113e-11



Conclusion
We have replicated the approach presented in the paper and performed simulations on the data set provided in the paper.
In case 1, our simulation matches the results in the paper. Case 2 presents noticeable differences in the results. From our simulations, the lander is able reach the landing site; whereas the result in the paper indicate that the lander does not have enough fuel to do that. It is difficult to pin point the reason for this discrepancy. One possible explanation relies on the state space equations used to describe the dynamics of the lander. It should be noted that there was a significant typo in the paper regarding the derivation of a matrix Psi. We have fixed this derivation by deriving in the manner that is correct to be the best of our knowledge. It is difficult to tell if author's intentions were the same.