ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
00001 00007 #include "ci_positioning_sensor.h" 00008 00009 #ifdef ARGOS_WITH_LUA 00010 #include <argos3/core/wrappers/lua/lua_utility.h> 00011 #endif 00012 00013 namespace argos { 00014 00015 /****************************************/ 00016 /****************************************/ 00017 00018 #ifdef ARGOS_WITH_LUA 00019 void CCI_PositioningSensor::CreateLuaState(lua_State* pt_lua_state) { 00020 CLuaUtility::StartTable(pt_lua_state, "positioning"); 00021 CLuaUtility::AddToTable(pt_lua_state, "position", m_sReading.Position); 00022 CLuaUtility::AddToTable(pt_lua_state, "orientation", m_sReading.Orientation); 00023 CLuaUtility::EndTable(pt_lua_state); 00024 } 00025 #endif 00026 00027 /****************************************/ 00028 /****************************************/ 00029 00030 #ifdef ARGOS_WITH_LUA 00031 void CCI_PositioningSensor::ReadingsToLuaState(lua_State* pt_lua_state) { 00032 lua_getfield(pt_lua_state, -1, "positioning"); 00033 lua_getfield(pt_lua_state, -1, "position"); 00034 lua_pushnumber(pt_lua_state, m_sReading.Position.GetX()); 00035 lua_setfield(pt_lua_state, -2, "x"); 00036 lua_pushnumber(pt_lua_state, m_sReading.Position.GetY()); 00037 lua_setfield(pt_lua_state, -2, "y"); 00038 lua_pushnumber(pt_lua_state, m_sReading.Position.GetZ()); 00039 lua_setfield(pt_lua_state, -2, "z"); 00040 m_sReading.Orientation.ToAngleAxis(m_cAngle, m_cAxis); 00041 lua_getfield (pt_lua_state, -2, "orientation"); 00042 lua_pushnumber(pt_lua_state, m_cAngle.GetValue()); 00043 lua_setfield (pt_lua_state, -2, "angle"); 00044 lua_getfield (pt_lua_state, -1, "axis"); 00045 lua_pushnumber(pt_lua_state, m_cAxis.GetX()); 00046 lua_setfield (pt_lua_state, -2, "x"); 00047 lua_pushnumber(pt_lua_state, m_cAxis.GetY()); 00048 lua_setfield (pt_lua_state, -2, "y"); 00049 lua_pushnumber(pt_lua_state, m_cAxis.GetZ()); 00050 lua_setfield (pt_lua_state, -2, "z"); 00051 lua_pop(pt_lua_state, 4); 00052 } 00053 #endif 00054 00055 00056 /****************************************/ 00057 /****************************************/ 00058 00059 }