ARGoS  3
A parallel, multi-engine simulator for swarm robotics
core/wrappers/lua/lua_controller.h
Go to the documentation of this file.
00001 
00007 #include <argos3/core/control_interface/ci_controller.h>
00008 #include <argos3/core/utility/math/rng.h>
00009 
00010 extern "C" {
00011 #include <lua.h>
00012 }
00013 
00014 namespace argos {
00015 
00016    class CLuaController : public CCI_Controller {
00017 
00018    public:
00019 
00020       CLuaController();
00021 
00022       virtual ~CLuaController();
00023 
00024       virtual void Init(TConfigurationNode& t_tree);
00025 
00026       virtual void ControlStep();
00027 
00028       virtual void Reset();
00029 
00030       virtual void Destroy();
00031 
00032       inline lua_State* GetLuaState() {
00033          return m_ptLuaState;
00034       }
00035 
00036       virtual void SetLuaScript(const std::string& str_script);
00037 
00038       virtual void CreateLuaState();
00039 
00040       virtual void SensorReadingsToLuaState();
00041 
00042       inline bool IsOK() const {
00043          return m_bIsOK;
00044       }
00045 
00046       std::string GetErrorMessage();
00047 
00048    private:
00049 
00050       lua_State* m_ptLuaState;
00051       std::string m_strScriptFileName;
00052       bool m_bScriptActive;
00053       bool m_bIsOK;
00054       CRandom::CRNG* m_pcRNG;
00055 
00056    };
00057 
00058 }