00001 #include "uvsim/utilities/utilities.h"
00002 #include "boost/numeric/ublas/matrix.hpp"
00003 #include "boost/numeric/ublas/matrix_proxy.hpp"
00004 #include "boost/numeric/ublas/io.hpp"
00005 #include <iomanip>
00006 #include <iostream>
00007 #include <cmath>
00008 #include <cstdlib>
00009
00010 using namespace boost::numeric::ublas;
00011
00012
00013 int main (int argc, char const* argv[])
00014 {
00015
00016
00017 matrix<double> Ac, Bc, Ad, Bd ;
00018 double m=1573;
00019 double lf=1.1;
00020 double lr=1.58;
00021 double Iz=2873;
00022 double C_alphaR=80000;
00023 double C_alphaF=80000;
00024 double Vx=30;
00025 double R=1000;
00026 double g=9.81;
00027
00028
00029 Ac = zero_matrix<double>(4,4) ;
00030 Ac(0,1) = 1;
00031 Ac(1,1) = (-2*C_alphaF+2*C_alphaR)/(m*Vx);
00032 Ac(1,2) = (2*C_alphaF+2*C_alphaR)/(m);
00033 Ac(1,3) = (-2*C_alphaF*lf+2*C_alphaR*lr)/(m*Vx);
00034 Ac(2,2) = 1;
00035 Ac(3,1) = (-2*C_alphaF*lf-2*C_alphaR*lr)/(Iz*Vx);
00036 Ac(3,2) = (2*C_alphaF*lf-2*C_alphaR*lr)/(Iz);
00037 Ac(3,3) = (pow(-2*C_alphaF*lf,2)+pow(2*C_alphaR*lr,2))/(Iz*Vx);
00038 Bc = zero_matrix<double>(4,3);
00039 Bc(1,0) = (2*C_alphaF)/m;
00040 Bc(1,1) = (((-2*C_alphaF*lf+2*C_alphaR*lr)/(m*Vx))-Vx);
00041 Bc(1,2) = g;
00042 Bc(3,0) = (2*C_alphaF*lf)/Iz;
00043 Bc(3,1) = (pow(-2*C_alphaF*lf,2)+pow(2*C_alphaR*lr,2))/(Iz*Vx);
00044
00045
00046 Ad = zero_matrix<double>(Ac.size1(), Ac.size2());
00047 Bd = zero_matrix<double>(Bc.size1(),Bc.size2());
00048
00049
00050 uvsim::discretize(Ac, Bc, Ad, Bd, atof(argv[1]), atoi(argv[2]));
00051
00052 std::cout<<std::setprecision(10);
00053 std::cout<<"Ac- "<<Ac<<std::endl;
00054 std::cout<<"Bc- "<<Bc<<std::endl;
00055 std::cout<<"Ad- "<<Ad<<std::endl;
00056 std::cout<<"Bd- "<<Bd<<std::endl;
00057 return 0;
00058 }
00059
00060