a

Dependencies:   mbed mbed-rtos

Revision:
1:ceee5a608e7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/include/Examples/SystemModels/ackermanntypes.hpp	Thu Mar 28 07:44:42 2019 +0000
@@ -0,0 +1,109 @@
+/**
+  ******************************************************************************
+  * @file    AckermannTypes.hpp
+  * @author  RBRO/PJ-IU
+  * @version V1.0.0
+  * @date    day-month-year
+  * @brief   This file contains the class declaration and implementation for the
+             Ackermann types.
+  ******************************************************************************
+ */
+
+/* Include guard */
+#ifndef ACKERMANN_TYPES_HPP
+#define ACKERMANN_TYPES_HPP
+
+#include <Linalg/linalg.h>
+
+namespace examples
+{
+    namespace systemmodels
+    {
+        namespace ackermannmodel
+        {
+            class CState: public linalg::CMatrix<double,10,1>
+            {
+                public:
+                    CState():linalg::CMatrix<double,10,1>(){}
+                    CState(const linalg::CMatrix<double,10,1>& f_matrix):linalg::CMatrix<double,10,1>(f_matrix){}
+                    double& x(){return m_data[0][0];}
+                    const double& x() const {return m_data[0][0];}
+                    
+                    double& y(){return m_data[1][0];}
+                    const double& y() const {return m_data[1][0];}
+                    
+                    double& x_dot(){return m_data[2][0];}
+                    const double& x_dot() const {return m_data[2][0];}
+
+                    double& y_dot(){return m_data[3][0];}
+                    const double& y_dot() const{return m_data[3][0];}
+
+                    double& x_dot_prev(){return m_data[4][0];}
+                    const double& x_dot_prev() const{return m_data[4][0];}
+
+                    double& y_dot_prev(){return m_data[5][0];}
+                    const double& y_dot_prev() const{return m_data[5][0];}
+
+                    double& teta_rad(){return m_data[6][0];}
+                    const double& teta_rad() const{return m_data[6][0];}
+
+                    double& teta_rad_dot(){return m_data[7][0];}
+                    const double& teta_rad_dot() const{return m_data[7][0];}
+                    
+                    double& omega(){ return m_data[8][0];}
+                    const double& omega() const{return m_data[8][0];}
+
+                    double& i(){return m_data[9][0];}
+                    const double& i() const{return m_data[9][0];}
+
+                    // CState& operator=(const linalg::CMatrix<double,10,1>& f_matrix){
+                    //     for (uint32_t l_row = 0; l_row < 10; ++l_row)
+                    //     {
+                    //         for (uint32_t l_col = 0; l_col < 1; ++l_col)
+                    //         {
+                    //             this->m_data[l_row][l_col] = f_matrix[l_row][l_col];
+                    //         }
+                    //     }
+                    //     return *this;
+                    // }
+            };
+
+            class CInput:public linalg::CMatrix<double,2,1>
+            {
+                public:
+                    CInput():linalg::CMatrix<double,2,1>(){}
+                    CInput(const linalg::CMatrix<double,2,1>& f_matrix):linalg::CMatrix<double,2,1>(f_matrix){} 
+                    double& v(){return m_data[0][0];}
+                    const double& v()const{return m_data[0][0];}
+                    double& alpha(){return m_data[1][0];}
+                    const double& alpha()const{return m_data[1][0];}
+            };
+
+            class COutput:public linalg::CMatrix<double,5,1>
+            {
+                public:
+                    COutput():linalg::CMatrix<double,5,1>(){}
+                    COutput(const linalg::CMatrix<double,5,1>& f_matrix):linalg::CMatrix<double,5,1>(f_matrix){}
+                    double& x_ddot(){return m_data[0][0];}
+                    const double& x_ddot() const{return m_data[0][0];}
+                    double& y_ddot(){return m_data[1][0];}
+                    const double& y_ddot()const {return m_data[1][0];}
+                    double& teta_rad_dot(){return m_data[2][0];}
+                    const double& teta_rad_dot()const{return m_data[2][0];}
+                    double& speed(){return m_data[3][0];}
+                    const double& speed()const {return m_data[3][0];}
+                    
+                    // double& alpha(){
+                    //     return m_data[4][0];
+                    // }
+                    // const double& alpha()const{
+                    //     return m_data[4][0];
+                    // }
+                    double& i(){return m_data[4][0];}
+                    const double& i()const{return m_data[4][0];}
+            };
+        };
+    };
+};
+
+#endif