ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
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 }