00001 #!/usr/bin/env python 00002 00003 # Software License Agreement (BSD License) 00004 # 00005 # Copyright (c) 2013, Tokyo Opensource Robotics Kyokai Association 00006 # All rights reserved. 00007 # 00008 # Redistribution and use in source and binary forms, with or without 00009 # modification, are permitted provided that the following conditions 00010 # are met: 00011 # 00012 # * Redistributions of source code must retain the above copyright 00013 # notice, this list of conditions and the following disclaimer. 00014 # * Redistributions in binary form must reproduce the above 00015 # copyright notice, this list of conditions and the following 00016 # disclaimer in the documentation and/or other materials provided 00017 # with the distribution. 00018 # * Neither the name of Tokyo Opensource Robotics Kyokai Association. nor the 00019 # names of its contributors may be used to endorse or promote products 00020 # derived from this software without specific prior written permission. 00021 # 00022 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00023 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00024 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00025 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 00026 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00027 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00028 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00029 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00030 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00031 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 00032 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00033 # POSSIBILITY OF SUCH DAMAGE. 00034 # 00035 # Author: Isaac Isao Saito 00036 00037 from nextage_ros_bridge.base_toolchanger_hands import BaseToolchangerHands 00038 from nextage_ros_bridge.command.airhand_command import AbsractHandCommand 00039 from nextage_ros_bridge.command.airhand_command import AirhandCommand 00040 from nextage_ros_bridge.command.gripper_command import GripperCommand 00041 00042 00043 class Iros13Hands(BaseToolchangerHands): 00044 ''' 00045 This class holds methods to operate the hands of NEXTAGE OPEN in a specific 00046 configuration where a clipping hand on left and suction hand on right 00047 connected to toolchanger module. This was presented at IROS 2013. 00048 ''' 00049 # TODO: Unittest is needed!! 00050 00051 def __init__(self, parent): 00052 ''' 00053 @see: AbsractIros13Hands.__init__ 00054 ''' 00055 00056 # Instantiating public command classes. 00057 # 00058 # There can be at least 2 ways for the Robot client classes 00059 # (eg. See nextage_client.NextageClient) to call hand commands. 00060 # 00061 # (1) Call directly the 'execute' methods of each command. 00062 # (2) Call via interface methods in the hand class. 00063 # 00064 # In Iros13Hands class, (1) is used. (1) is faster to implement. And 00065 # I think it's ok for robot client classes to know what commands exist, 00066 # without the hand class has the interfaces for comamands. But you can 00067 # always apply (2) approach, which is cleaner. 00068 super(Iros13Hands, self).__init__(parent) 00069 self.airhand_l_command = AirhandCommand(self, self.HAND_L) 00070 self.airhand_r_command = AirhandCommand(self, self.HAND_R) 00071 self.gripper_l_command = GripperCommand(self, self.HAND_L) 00072 self.gripper_r_command = GripperCommand(self, self.HAND_R)