ARGoS 3
A parallel, multi-engine simulator for swarm robotics
ci_prototype_joints_sensor.cpp
Go to the documentation of this file.
1
8
9#ifdef ARGOS_WITH_LUA
10#include <argos3/core/wrappers/lua/lua_utility.h>
11#endif
12
13namespace argos {
14
15 /****************************************/
16 /****************************************/
17
18#ifdef ARGOS_WITH_LUA
19 void CCI_PrototypeJointsSensor::CreateLuaState(lua_State* pt_lua_state) {
20 /* CLuaUtility::OpenRobotStateTable is required since we don't know
21 whether the joint actuator has been added to the robot nor do we
22 know which joints it may have added to the robot's table in Lua */
23 CLuaUtility::OpenRobotStateTable(pt_lua_state, "joints");
24 for(SSensor* pc_sensor : m_vecSensors) {
25 CLuaUtility::OpenRobotStateTable(pt_lua_state, pc_sensor->Id);
26 CLuaUtility::AddToTable(pt_lua_state, "encoder", pc_sensor->Value);
28 }
30 }
31#endif
32
33 /****************************************/
34 /****************************************/
35
36#ifdef ARGOS_WITH_LUA
37 void CCI_PrototypeJointsSensor::ReadingsToLuaState(lua_State* pt_lua_state) {
38 lua_getfield(pt_lua_state, -1, "joints");
39 for(SSensor* pc_sensor : m_vecSensors) {
40 lua_getfield(pt_lua_state, -1, (pc_sensor->Id).c_str());
41 CLuaUtility::AddToTable(pt_lua_state, "encoder", pc_sensor->Value);
42 lua_pop(pt_lua_state, 1);
43 }
44 lua_pop(pt_lua_state, 1);
45 }
46#endif
47
48 /****************************************/
49 /****************************************/
50
51}
The namespace containing all the ARGoS related code.
Definition ci_actuator.h:12
static void AddToTable(lua_State *pt_state, const std::string &str_key, void *pt_data)
Adds a pointer to a chunk of data with the given string key to the table located at the top of the st...
static void OpenRobotStateTable(lua_State *pt_state, const std::string &str_key)
Opens a table in the robot state, creating it if it does not exist.
static void CloseRobotStateTable(lua_State *pt_state)
Closes a table in the robot state.