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