YouBotGripper.hpp

Go to the documentation of this file.
00001 #ifndef YOUBOT_YOUBOTGRIPPER_H
00002 #define YOUBOT_YOUBOTGRIPPER_H
00003 
00004 /****************************************************************
00005  *
00006  * Copyright (c) 2011
00007  * All rights reserved.
00008  *
00009  * Hochschule Bonn-Rhein-Sieg
00010  * University of Applied Sciences
00011  * Computer Science Department
00012  *
00013  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00014  *
00015  * Author:
00016  * Jan Paulus, Nico Hochgeschwender, Michael Reckhaus, Azamat Shakhimardanov
00017  * Supervised by:
00018  * Gerhard K. Kraetzschmar
00019  *
00020  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00021  *
00022  * This sofware is published under a dual-license: GNU Lesser General Public 
00023  * License LGPL 2.1 and BSD license. The dual-license implies that users of this
00024  * code may choose which terms they prefer.
00025  *
00026  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00027  *
00028  * Redistribution and use in source and binary forms, with or without
00029  * modification, are permitted provided that the following conditions are met:
00030  *
00031  *     * Redistributions of source code must retain the above copyright
00032  *       notice, this list of conditions and the following disclaimer.
00033  *     * Redistributions in binary form must reproduce the above copyright
00034  *       notice, this list of conditions and the following disclaimer in the
00035  *       documentation and/or other materials provided with the distribution.
00036  *     * Neither the name of the Hochschule Bonn-Rhein-Sieg nor the names of its
00037  *       contributors may be used to endorse or promote products derived from
00038  *       this software without specific prior written permission.
00039  *
00040  * This program is free software: you can redistribute it and/or modify
00041  * it under the terms of the GNU Lesser General Public License LGPL as
00042  * published by the Free Software Foundation, either version 2.1 of the
00043  * License, or (at your option) any later version or the BSD license.
00044  *
00045  * This program is distributed in the hope that it will be useful,
00046  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00047  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00048  * GNU Lesser General Public License LGPL and the BSD license for more details.
00049  *
00050  * You should have received a copy of the GNU Lesser General Public
00051  * License LGPL and BSD license along with this program.
00052  *
00053  ****************************************************************/
00054 #include <vector>
00055 #include <sstream>
00056 #include "generic/Logger.hpp"
00057 #include "generic/Units.hpp"
00058 #include "generic/Time.hpp"
00059 #include "generic/Exceptions.hpp"
00060 #include "youbot/ProtocolDefinitions.hpp"
00061 #include "youbot/EthercatMaster.hpp"
00062 #include "youbot/EthercatMasterInterface.hpp"
00063 #include "youbot/EthercatMasterWithThread.hpp"
00064 #include "youbot/EthercatMasterWithoutThread.hpp"
00065 #include "youbot/YouBotSlaveMsg.hpp"
00066 #include "youbot/YouBotSlaveMailboxMsg.hpp"
00067 #include "generic-gripper/Gripper.hpp"
00068 #include "generic-gripper/GripperData.hpp"
00069 #include "generic-gripper/GripperParameter.hpp"
00070 #include "one-dof-gripper/OneDOFGripper.hpp"
00071 #include "one-dof-gripper/OneDOFGripperData.hpp"
00072 #include "youbot/YouBotGripperParameter.hpp"
00073 #include "youbot/YouBotGripperBar.hpp"
00074 #include <boost/scoped_ptr.hpp>
00075 
00076 namespace youbot {
00077 
00078 ///////////////////////////////////////////////////////////////////////////////
00079 /// The youBot gripper with one degree of freedom
00080 ///////////////////////////////////////////////////////////////////////////////
00081 class YouBotGripper : public OneDOFGripper {
00082   public:
00083     YouBotGripper(const unsigned int jointNo, const std::string& configFilePath = "../config/");
00084 
00085     virtual ~YouBotGripper();
00086 
00087 
00088   protected:
00089     virtual void getConfigurationParameter(GripperParameter& parameter) const;
00090 
00091     virtual void setConfigurationParameter(const GripperParameter& parameter);
00092 
00093 
00094   public:
00095     virtual void getConfigurationParameter(GripperFirmwareVersion& parameter) const;
00096 
00097     virtual void setConfigurationParameter(const CalibrateGripper& parameter);
00098 
00099     virtual void getConfigurationParameter(YouBotSlaveMailboxMsg& parameter) const;
00100 
00101 
00102   protected:
00103     virtual void getData(const GripperData& data) const;
00104 
00105     virtual void setData(const GripperData& data);
00106 
00107     virtual void getData(OneDOFGripperData& data) const;
00108 
00109     virtual void setData(const OneDOFGripperData& data);
00110 
00111 
00112   public:
00113     virtual void setData(const GripperBarSpacingSetPoint& barSpacing);
00114 
00115     virtual void getData(GripperSensedBarSpacing& barSpacing) const;
00116 
00117     void open();
00118 
00119     void close();
00120 
00121     YouBotGripperBar& getGripperBar1();
00122 
00123     YouBotGripperBar& getGripperBar2();
00124 
00125 
00126   private:
00127     YouBotGripper(const YouBotGripper & source);
00128 
00129     YouBotGripper & operator=(const YouBotGripper & source);
00130 
00131     void parseMailboxStatusFlags(const YouBotSlaveMailboxMsg& mailboxMsg) const;
00132 
00133     bool setValueToMotorContoller(const YouBotSlaveMailboxMsg& mailboxMsg) const;
00134 
00135     bool retrieveValueFromMotorContoller(YouBotSlaveMailboxMsg& message) const;
00136 
00137     EthercatMasterInterface* ethercatMaster;
00138 
00139     unsigned int timeTillNextMailboxUpdate;
00140 
00141     unsigned int mailboxMsgRetries;
00142 
00143     unsigned int jointNumber;
00144 
00145     boost::scoped_ptr<YouBotGripperBar> bar1;
00146 
00147     boost::scoped_ptr<YouBotGripperBar> bar2;
00148 
00149 };
00150 
00151 } // namespace youbot
00152 #endif
Generated by  doxygen 1.6.3