YANE-Framework Tutorial 1.1.0

examples/mpctcp/src/simplesimulator.h

00001 /***************************************************************************
00002  *                                                                         *
00003  * Copyright (C) 2011 by www.nonlinearmpc.com                              *
00004  *                                                                         *
00005  * Authors:                                                                *
00006  *  Thomas Jahn <thomas.jahn@uni-bayreuth.de>                              *
00007  *  Juergen Pannek <juergen.pannek@googlemail.com>                         *
00008  *                                                                         *
00009  ***************************************************************************/
00010 
00011 #ifndef SIMPLESIMULATOR_H
00012 #define SIMPLESIMULATOR_H
00013 
00014 #include <yane.h>
00015 
00016 namespace yane
00017 {
00018         namespace NetworkedControl
00019         {
00020                 class Cycle;
00021                 class Actuator;
00022                 class ModelHandlerTCP;
00023         }
00024         namespace Model
00025         {
00026                 class Simulator;
00027         }
00028         namespace Utils
00029         {
00030                 class DebugMaster;
00031         }
00032         namespace ExampleModels2
00033         {
00034                 class InvertedPendulum;
00035         }
00036 }
00037 
00038 class SimpleSimulator : public yane::Utils::Thread
00039 {
00040         public:
00041                 SimpleSimulator ( yane::NetworkedControl::Cycle * cycle,
00042                         yane::ExampleModels2::InvertedPendulum * model,
00043                         yane::Utils::DebugMaster * dm );
00044                 ~SimpleSimulator ( );
00045 
00046                 void readState ( double & t, double * state );
00047                 void setModelHandler (
00048                         yane::NetworkedControl::ModelHandlerTCP * handler );
00049 
00050                 bool isOptimal ( );
00051 
00052         protected:
00053 
00054                 virtual void run ( );
00055 
00056                 yane::NetworkedControl::Cycle * _cycle;
00057                 yane::Model::Simulator * _simulator;
00058                 yane::NetworkedControl::ModelHandlerTCP * _handler;
00059                 double * x;
00060                 double u;
00061                 double oldt;
00062 
00063 };
00064 
00065 #endif