ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
00001 00007 #include "ci_footbot_gripper_actuator.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 CRadians CCI_FootBotGripperActuator::LOCKED_NEGATIVE(-ARGOS_PI * 0.5f); 00019 CRadians CCI_FootBotGripperActuator::LOCKED_POSITIVE(ARGOS_PI * 0.5f); 00020 CRadians CCI_FootBotGripperActuator::UNLOCKED(0.0f); 00021 00022 CRange<CRadians> APERTURE_RANGE(CCI_FootBotGripperActuator::LOCKED_NEGATIVE, 00023 CCI_FootBotGripperActuator::LOCKED_POSITIVE); 00024 00025 /****************************************/ 00026 /****************************************/ 00027 00028 #ifdef ARGOS_WITH_LUA 00029 /* 00030 * The stack must have no values 00031 */ 00032 int LuaGripperLockPositive(lua_State* pt_lua_state) { 00033 /* Get wheel speed from stack */ 00034 if(lua_gettop(pt_lua_state) != 0) { 00035 return luaL_error(pt_lua_state, "robot.gripper.lock_positive() expects no arguments"); 00036 } 00037 /* Perform action */ 00038 CLuaUtility::GetDeviceInstance<CCI_FootBotGripperActuator>(pt_lua_state, "gripper")->LockPositive(); 00039 return 0; 00040 } 00041 00042 /* 00043 * The stack must have no values 00044 */ 00045 int LuaGripperLockNegative(lua_State* pt_lua_state) { 00046 /* Get wheel speed from stack */ 00047 if(lua_gettop(pt_lua_state) != 0) { 00048 return luaL_error(pt_lua_state, "robot.gripper.lock_negative() expects no arguments"); 00049 } 00050 /* Perform action */ 00051 CLuaUtility::GetDeviceInstance<CCI_FootBotGripperActuator>(pt_lua_state, "gripper")->LockNegative(); 00052 return 0; 00053 } 00054 00055 /* 00056 * The stack must have no values 00057 */ 00058 int LuaGripperUnlock(lua_State* pt_lua_state) { 00059 /* Get wheel speed from stack */ 00060 if(lua_gettop(pt_lua_state) != 0) { 00061 return luaL_error(pt_lua_state, "robot.gripper.unlock() expects no arguments"); 00062 } 00063 /* Perform action */ 00064 CLuaUtility::GetDeviceInstance<CCI_FootBotGripperActuator>(pt_lua_state, "gripper")->Unlock(); 00065 return 0; 00066 } 00067 #endif 00068 00069 /****************************************/ 00070 /****************************************/ 00071 00072 CCI_FootBotGripperActuator::CCI_FootBotGripperActuator() : 00073 m_cAperture(UNLOCKED) {} 00074 00075 /****************************************/ 00076 /****************************************/ 00077 00078 void CCI_FootBotGripperActuator::SetAperture(const CRadians& c_aperture) { 00079 m_cAperture = c_aperture; 00080 m_cAperture.SignedNormalize(); 00081 APERTURE_RANGE.TruncValue(m_cAperture); 00082 } 00083 00084 /****************************************/ 00085 /****************************************/ 00086 00087 #ifdef ARGOS_WITH_LUA 00088 void CCI_FootBotGripperActuator::CreateLuaState(lua_State* pt_lua_state) { 00089 CLuaUtility::OpenRobotStateTable (pt_lua_state, "gripper" ); 00090 CLuaUtility::AddToTable (pt_lua_state, "_instance", this ); 00091 CLuaUtility::AddToTable (pt_lua_state, "lock_positive", &LuaGripperLockPositive); 00092 CLuaUtility::AddToTable (pt_lua_state, "lock_negative", &LuaGripperLockNegative); 00093 CLuaUtility::AddToTable (pt_lua_state, "unlock", &LuaGripperUnlock ); 00094 CLuaUtility::CloseRobotStateTable(pt_lua_state ); 00095 } 00096 #endif 00097 00098 /****************************************/ 00099 /****************************************/ 00100 00101 }