Lodestar
An integrated real-time control package in C++
LunarLanderDemo.hpp
1 //
2 // Created by Hamza El-Kebir on 12/30/2021.
3 //
4 
5 #ifndef LODESTAR_LUNARLANDERDEMO_HPP
6 #define LODESTAR_LUNARLANDERDEMO_HPP
7 
8 
9 #include <Eigen/Dense>
10 
20 // Function automatically generated by Lodestar
21 Eigen::Matrix<double, 13, 13> jac6DOFStates(const double (&x)[13], const double (&u)[13], const double t = 0) {
22  Eigen::Matrix<double, 13, 13> mat;
23  mat << 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
24  0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
25  0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
26  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.2832504447373218e-02*( u[11]+u[8]+u[5]+u[2])*x[7]+9.2832504447373218e-02*x[8]*( u[12]+u[9]+u[6]+u[3]+u[0])+9.2832504447373218e-02*( u[10]+u[7]+u[4]+u[1])*x[6], 9.2832504447373218e-02*x[9]*( u[12]+u[9]+u[6]+u[3]+u[0])+9.2832504447373218e-02*x[6]*( u[11]+u[8]+u[5]+u[2])+-9.2832504447373218e-02*( u[10]+u[7]+u[4]+u[1])*x[7], -9.2832504447373218e-02*x[8]*( u[10]+u[7]+u[4]+u[1])+-9.2832504447373218e-02*x[9]*( u[11]+u[8]+u[5]+u[2])+9.2832504447373218e-02*( u[12]+u[9]+u[6]+u[3]+u[0])*x[6], 9.2832504447373218e-02*( u[10]+u[7]+u[4]+u[1])*x[9]+9.2832504447373218e-02*( u[12]+u[9]+u[6]+u[3]+u[0])*x[7]+-9.2832504447373218e-02*x[8]*( u[11]+u[8]+u[5]+u[2]), 0.0, 0.0, 0.0,
27  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.2832504447373218e-02*x[9]*( u[12]+u[9]+u[6]+u[3]+u[0])+-9.2832504447373218e-02*x[6]*( u[11]+u[8]+u[5]+u[2])+9.2832504447373218e-02*( u[10]+u[7]+u[4]+u[1])*x[7], 9.2832504447373218e-02*( u[11]+u[8]+u[5]+u[2])*x[7]+9.2832504447373218e-02*x[8]*( u[12]+u[9]+u[6]+u[3]+u[0])+9.2832504447373218e-02*( u[10]+u[7]+u[4]+u[1])*x[6], 9.2832504447373218e-02*( u[10]+u[7]+u[4]+u[1])*x[9]+9.2832504447373218e-02*( u[12]+u[9]+u[6]+u[3]+u[0])*x[7]+-9.2832504447373218e-02*x[8]*( u[11]+u[8]+u[5]+u[2]), 9.2832504447373218e-02*x[8]*( u[10]+u[7]+u[4]+u[1])+9.2832504447373218e-02*x[9]*( u[11]+u[8]+u[5]+u[2])+-9.2832504447373218e-02*( u[12]+u[9]+u[6]+u[3]+u[0])*x[6], 0.0, 0.0, 0.0,
28  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.2832504447373218e-02*x[8]*( u[10]+u[7]+u[4]+u[1])+9.2832504447373218e-02*x[9]*( u[11]+u[8]+u[5]+u[2])+-9.2832504447373218e-02*( u[12]+u[9]+u[6]+u[3]+u[0])*x[6], -9.2832504447373218e-02*( u[10]+u[7]+u[4]+u[1])*x[9]+-9.2832504447373218e-02*( u[12]+u[9]+u[6]+u[3]+u[0])*x[7]+9.2832504447373218e-02*x[8]*( u[11]+u[8]+u[5]+u[2]), 9.2832504447373218e-02*( u[11]+u[8]+u[5]+u[2])*x[7]+9.2832504447373218e-02*x[8]*( u[12]+u[9]+u[6]+u[3]+u[0])+9.2832504447373218e-02*( u[10]+u[7]+u[4]+u[1])*x[6], 9.2832504447373218e-02*x[9]*( u[12]+u[9]+u[6]+u[3]+u[0])+9.2832504447373218e-02*x[6]*( u[11]+u[8]+u[5]+u[2])+-9.2832504447373218e-02*( u[10]+u[7]+u[4]+u[1])*x[7], 0.0, 0.0, 0.0,
29  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0000000000000001e-01*(x[6]*x[6])*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0))+-1.0000000000000001e-01*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),(1.0/2.0))+1.0000000000000001e-01, -1.0000000000000001e-01*x[6]*x[7]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0)), x[12]+-1.0000000000000001e-01*x[8]*x[6]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0)), -1.0000000000000001e-01*x[9]*x[6]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0))-x[11], 0.0, -x[9], x[8],
30  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0000000000000001e-01*x[6]*x[7]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0)), -x[12]+-1.0000000000000001e-01*(x[7]*x[7])*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0))+-1.0000000000000001e-01*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),(1.0/2.0))+1.0000000000000001e-01, -1.0000000000000001e-01*x[8]*x[7]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0)), -1.0000000000000001e-01*x[9]*x[7]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0))+x[10], x[9], 0.0, -x[7],
31  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0000000000000001e-01*x[8]*x[6]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0)), x[11]+-1.0000000000000001e-01*x[8]*x[7]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0)), -1.0000000000000001e-01*(x[8]*x[8])*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0))-x[10]+-1.0000000000000001e-01*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),(1.0/2.0))+1.0000000000000001e-01, -1.0000000000000001e-01*x[8]*x[9]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0)), -x[8], x[7], 0.0,
32  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0000000000000001e-01*x[9]*x[6]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0)), -1.0000000000000001e-01*x[9]*x[7]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0))-x[10], -1.0000000000000001e-01*x[8]*x[9]*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0))-x[11], -x[12]+-1.0000000000000001e-01*(x[9]*x[9])*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),-(1.0/2.0))+-1.0000000000000001e-01*pow( (x[6]*x[6])+(x[9]*x[9])+(x[7]*x[7])+(x[8]*x[8]),(1.0/2.0))+1.0000000000000001e-01, -x[7], -x[8], -x[9],
33  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
34  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
35  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0;
36 
37  return mat;
38 }
39 
40 
50 // Function automatically generated by Lodestar
51 Eigen::Matrix<double, 13, 13> jac6DOFInputs(const double (&x)[13], const double (&u)[13], const double t = 0) {
52  Eigen::Matrix<double, 13, 13> mat;
53  mat << 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
54  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
55  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
56  9.2832504447373218e-02*x[8]*x[6]+9.2832504447373218e-02*x[9]*x[7], 4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+-4.6416252223686609e-02*(x[7]*x[7])+-4.6416252223686609e-02*(x[8]*x[8]), 9.2832504447373218e-02*x[6]*x[7]+-9.2832504447373218e-02*x[8]*x[9], 9.2832504447373218e-02*x[8]*x[6]+9.2832504447373218e-02*x[9]*x[7], 4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+-4.6416252223686609e-02*(x[7]*x[7])+-4.6416252223686609e-02*(x[8]*x[8]), 9.2832504447373218e-02*x[6]*x[7]+-9.2832504447373218e-02*x[8]*x[9], 9.2832504447373218e-02*x[8]*x[6]+9.2832504447373218e-02*x[9]*x[7], 4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+-4.6416252223686609e-02*(x[7]*x[7])+-4.6416252223686609e-02*(x[8]*x[8]), 9.2832504447373218e-02*x[6]*x[7]+-9.2832504447373218e-02*x[8]*x[9], 9.2832504447373218e-02*x[8]*x[6]+9.2832504447373218e-02*x[9]*x[7], 4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+-4.6416252223686609e-02*(x[7]*x[7])+-4.6416252223686609e-02*(x[8]*x[8]), 9.2832504447373218e-02*x[6]*x[7]+-9.2832504447373218e-02*x[8]*x[9], 9.2832504447373218e-02*x[8]*x[6]+9.2832504447373218e-02*x[9]*x[7],
57  -9.2832504447373218e-02*x[9]*x[6]+9.2832504447373218e-02*x[8]*x[7], 9.2832504447373218e-02*x[6]*x[7]+9.2832504447373218e-02*x[8]*x[9], -4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+4.6416252223686609e-02*(x[7]*x[7])+-4.6416252223686609e-02*(x[8]*x[8]), -9.2832504447373218e-02*x[9]*x[6]+9.2832504447373218e-02*x[8]*x[7], 9.2832504447373218e-02*x[6]*x[7]+9.2832504447373218e-02*x[8]*x[9], -4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+4.6416252223686609e-02*(x[7]*x[7])+-4.6416252223686609e-02*(x[8]*x[8]), -9.2832504447373218e-02*x[9]*x[6]+9.2832504447373218e-02*x[8]*x[7], 9.2832504447373218e-02*x[6]*x[7]+9.2832504447373218e-02*x[8]*x[9], -4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+4.6416252223686609e-02*(x[7]*x[7])+-4.6416252223686609e-02*(x[8]*x[8]), -9.2832504447373218e-02*x[9]*x[6]+9.2832504447373218e-02*x[8]*x[7], 9.2832504447373218e-02*x[6]*x[7]+9.2832504447373218e-02*x[8]*x[9], -4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+4.6416252223686609e-02*(x[7]*x[7])+-4.6416252223686609e-02*(x[8]*x[8]), -9.2832504447373218e-02*x[9]*x[6]+9.2832504447373218e-02*x[8]*x[7],
58  -4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+-4.6416252223686609e-02*(x[7]*x[7])+4.6416252223686609e-02*(x[8]*x[8]), 9.2832504447373218e-02*x[8]*x[6]+-9.2832504447373218e-02*x[9]*x[7], 9.2832504447373218e-02*x[9]*x[6]+9.2832504447373218e-02*x[8]*x[7], -4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+-4.6416252223686609e-02*(x[7]*x[7])+4.6416252223686609e-02*(x[8]*x[8]), 9.2832504447373218e-02*x[8]*x[6]+-9.2832504447373218e-02*x[9]*x[7], 9.2832504447373218e-02*x[9]*x[6]+9.2832504447373218e-02*x[8]*x[7], -4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+-4.6416252223686609e-02*(x[7]*x[7])+4.6416252223686609e-02*(x[8]*x[8]), 9.2832504447373218e-02*x[8]*x[6]+-9.2832504447373218e-02*x[9]*x[7], 9.2832504447373218e-02*x[9]*x[6]+9.2832504447373218e-02*x[8]*x[7], -4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+-4.6416252223686609e-02*(x[7]*x[7])+4.6416252223686609e-02*(x[8]*x[8]), 9.2832504447373218e-02*x[8]*x[6]+-9.2832504447373218e-02*x[9]*x[7], 9.2832504447373218e-02*x[9]*x[6]+9.2832504447373218e-02*x[8]*x[7], -4.6416252223686609e-02*(x[6]*x[6])+4.6416252223686609e-02*(x[9]*x[9])+-4.6416252223686609e-02*(x[7]*x[7])+4.6416252223686609e-02*(x[8]*x[8]),
59  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
60  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
61  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
62  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
63  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.3456570500425398e+04, 0.0, 0.0, 0.0, 0.0, 0.0, 2.8303592146116702e-01,
64  0.0, 0.0, 0.0, -1.8094457708771880e-01, 0.0, 0.0, 0.0, 0.0, 0.0, 1.8094457708771880e-01, 0.0, 0.0, 0.0,
65  0.0, 0.0, 2.6864109488476967e-01, 0.0, -8.8703494926719286e+04, 0.0, 0.0, 0.0, 2.6864109488476967e-01, 0.0, 2.6864109488476967e-01, 0.0, 0.0;
66 
67  return mat;
68 }
69 
70 
71 #endif //LODESTAR_LUNARLANDERDEMO_HPP