$search
00001 /* 00002 * Software License Agreement (BSD License) 00003 * 00004 * Copyright (c) 2011, Southwest Research Institute 00005 * All rights reserved. 00006 * 00007 * Redistribution and use in source and binary forms, with or without 00008 * modification, are permitted provided that the following conditions are met: 00009 * 00010 * * Redistributions of source code must retain the above copyright 00011 * notice, this list of conditions and the following disclaimer. 00012 * * Redistributions in binary form must reproduce the above copyright 00013 * notice, this list of conditions and the following disclaimer in the 00014 * documentation and/or other materials provided with the distribution. 00015 * * Neither the name of the Southwest Research Institute, nor the names 00016 * of its contributors may be used to endorse or promote products derived 00017 * from this software without specific prior written permission. 00018 * 00019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00020 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00021 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00022 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00023 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00024 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00025 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00026 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00027 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00028 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00029 * POSSIBILITY OF SUCH DAMAGE. 00030 */ 00031 00032 00033 #ifndef GRIPPER_HANDLER_H 00034 #define GRIPPER_HANDLER_H 00035 00036 #include "message_handler.h" 00037 #include "controller.h" 00038 #include "motoPlus.h" 00039 00040 namespace armadillo 00041 { 00042 namespace gripper_handler 00043 { 00044 00048 //* GripperHandler 00054 class GripperHandler : public industrial::message_handler::MessageHandler 00055 { 00056 00057 public: 00065 bool init(industrial::smpl_msg_connection::SmplMsgConnection* connection, 00066 motoman::controller::Controller* ctrl); 00067 00068 protected: 00069 00070 // Gripper constants 00071 // 00072 // The gripper operation is achieved using operation bits and 00073 // status bit for feedback. 00074 // 00075 // For and OPEN/CLOSE move here is the expected order of operations 00076 // 1. Set OPEN/CLOSE operations bit 00077 // 2. Wait for OPENING/CLOSING status bit 00078 // 3. Wait for MOTION_IN_PROGRESS status bit 00079 // 4. Wait for MOTION_COMPLETE_BIT status bit 00080 00081 // Operations 00082 static const int GRIPPER_OUT_BASE_ = 40; 00083 static const int GRIPPER_INIT_ = GRIPPER_OUT_BASE_ + 0; 00084 static const int GRIPPER_PINCH_MODE_ = GRIPPER_OUT_BASE_ + 1; 00085 static const int GRIPPER_OPEN_ = GRIPPER_OUT_BASE_ + 3; 00086 static const int GRIPPER_CLOSE_ = GRIPPER_OUT_BASE_ + 4; 00087 00088 // Status 00089 static const int GRIPPER_IN_BASE_ = 40; 00090 static const int GRIPPER_INITIALIZED_ = GRIPPER_IN_BASE_ + 0; 00091 static const int GRIPPER_IN_PINCH_MODE_ = GRIPPER_IN_BASE_ + 1; 00092 static const int GRIPPER_OPENING_ = GRIPPER_IN_BASE_ + 3; 00093 static const int GRIPPER_CLOSING_ = GRIPPER_IN_BASE_ + 4; 00094 static const int GRIPPER_MOTION_IN_PROGRESS_ = GRIPPER_IN_BASE_ + 5; 00095 static const int GRIPPER_MOTION_COMPLETE_ = GRIPPER_IN_BASE_ + 6; 00096 00097 // Delay between outputs are set and motion starts (this allows status 00098 // inputs to update as well. Blocking on other status indicators did 00099 // not work. 00100 static const int MOTION_START_DELAY = 50; 00101 00102 00106 motoman::controller::Controller* ctrl_; 00107 00116 bool init(int msg_type, industrial::smpl_msg_connection::SmplMsgConnection* connection) 00117 { return MessageHandler::init(msg_type, connection);}; 00118 00126 bool internalCB(industrial::simple_message::SimpleMessage & in); 00127 00128 }; 00129 00130 }//gripper_handler 00131 }//motoman 00132 00133 00134 #endif /* INPUT_HANDLER_H_ */