ARGoS  3
A parallel, multi-engine simulator for swarm robotics
plugins/robots/generic/control_interface/ci_positioning_sensor.cpp
Go to the documentation of this file.
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 }