Preview only show first 10 pages with watermark. For full document please download

Elements Of Agility In Manufacturing

   EMBED


Share

Transcript

ELEMENTS OF AGILITY IN MANUFACTURING by GREGORY CARYLEE CAUSEY Submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy Thesis Advisor: Professor Roger D. Quinn Department of Mechanical & Aerospace Engineering CASE WESTERN RESERVE UNIVERSITY January, 1999 ELEMENTS OF AGILITY IN MANUFACTURING Abstract by GREGORY CARYLEE CAUSEY Smaller lot sizes, shorter times to market, and lower manufacturing costs are typical requirements of a modern manufacturing facility. Under such constraints, agile manufacturing systems are desirable. Elements of such a system include multiple robots, flexible parts feeders, modular conveyors, and machine vision. Flexible feeders enable a workcell to rapidly switch between different assemblies by eliminating the need for part-specific feed mechanisms. A flexible feeder, consisting of multiple conveyors to singulate parts, a vision system for pose determination, and a robot for part retrieval, was designed, implemented, and incorporated into an agile workcell. The system was shown to feed a wide variety of parts with little physical alteration at rates of up to 30 parts per minute. A new metric to describe feeder throughput was developed and a statistical analysis of feeder test results was conducted. In most assemblies there are operations which cannot easily be performed by a robot. In such cases, a method of encapsulating assembly-specific hardware to enable rapid changeover is required. Such a method may be constructed using homogeneous transforms (also called tool offsets), however, the transforms must be i defined correctly or reconfigurability will be difficult. Transforms are divided into two categories: those that describe the workcell and those that describe the assembly-specific hardware. To determine the utility of this approach, transforms for an example task were determined at one workcell and shown to be functional at a second workcell. The design of the robotic end effectors and the parts used in each assembly are important to ensure a productive, error-free system. Appropriate gripper design can accommodate the additional sources of error in an agile workcell, such as those inherent in vision calibration and in robots. Proper parts design can improve flexible feeding (stable rest configurations consistent with assembly and features that enable simple vision recognition) and increase the reliability of assembly actions. Therefore, guidelines have been established to assist in the intelligent design of grippers and parts. Many gripper designs are examined and the redesign of an example assembly is performed to demonstrate the application of the guidelines. ii ACKNOWLEDGEMENTS First, I would like to thank my advisor, Roger Quinn, for his insight, help, encouragement, and friendship over the past few years. He has certainly made the experience enjoyable and fun. If it were not for him, I would probably have never started this journey. I’ll never forget the many times that I would be slaving away in the lab when he would come in and say, ‘‘Stop the work, it too nice outside to be in here, we’re going golfing.’’ Thanks for teaching me to always make time for the fun things even if it seems all the work is due tomorrow and there is no way its going to all get finished. Mike Branicky has went well beyond the call of duty to invest time and effort into this work. Without his insight and discussions about Chapter 2, it would never have turned out as it did. In addition to helping out academically, he has also become a good friend. I’ve enjoyed hanging out and talking about pointless engineering and math problems for hours on end just for sheer fun of it. And finally, a friend that can drive a boat so I finally get a chance to water ski! I would also like to thank my committee: Mike Branicky, Frank Merat, Wyatt Newman, and Roger Quinn. Their insight, editing, and corrections have greatly improved this work. I certainly appreciate their investment of time and thought in reading and editing this rather lengthy document. There have been numerous industrial sponsors of the project that have funded this work over the past few years. Without their involvement, this project would never have gotten off the ground. Thanks especially go to the original sponsor who saw the importance of this project and contributed greatly to its welfare. A project of this size would never advance without the work of a lot of other graduate students. Much of the research I performed depended on work they had done. The ‘‘cast of thousands’’ includes (I hope I didn’t forget anyone!) Dave, Dean, Kathy, iii Nick, Yoohwan, Ju-Youn, Chrysanthie, Scott, Endo, Ed, Erin, Jayen, and numerous senior project students. Out of that list, two individuals merit extra note. Dave Sargent and Nick Barendt were instrumental in the life of the project. I can remember many time working with them in the lab into the early hours of the morning trying to get ready for the next demo or finishing the next paper. We had lots of fun and good times, even at 3am! In addition to long hours, both of them have become good friends. We’ve had almost as much fun together outside the lab as we’ve had when at work. Others in the lab, not involved with the project have also become good friends. Mark Dohring, the walking (singing!) Sci-Fi encyclopedia. Its always fun taking / arguing / debating the merits of Babylon 5 and Star Trek. Also the local Unix guru, I thank Mark for much of the Unix sys-admin know how I have gained. Craig, Matt, and Rich: you guys are always good for a laugh (and Rich has taught me new levels of procrastination and laziness!). Gabe, it seems you and I are the only ones left from our freshman class which started back in ’87. Its good to know I’m not the only one who has stuck with it for this long. Thanks for all my friends outside school / the lab for being there when I just had to get away from work for a while. Butch, my best friend (I guess I consider you more of a brother than a friend). We’ve had more fun times together than I care to remember! My ski buddies, Dana, Scott, Blair, Glenn, other members of BMBP who have come and gone. We defined a generation at ‘‘The ’Mills’’. Dana, Blair, and Scott: its good to know I’m not the only mogul skier going for the advanced degrees (the ‘‘Victory Lap’’ is still in question)! The church crew: Mike, Linda, Rachel, Denelda (my ‘‘one time fiancée’’!), Joni (my ‘‘ski mistress’’!), Erin, Alyssa, and Kelly. You guys are the greatest! Lastly, I have to thank my parents for their love and support over the years. I’m certain I would never have finished this project without their encouragement. iv TABLE OF CONTENTS LIST OF FIGURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv LIST OF TABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Factory of the Future . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Agile Manufacturing at CWRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.1 Workcell Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.2 Workcell Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3.3 Mechanical Workcell Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3.3.1 Safety Cage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3.3.2 Conveyor System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3.3.3 Workcell Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.3.3.4 Modular Work Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.3.3.5 Grippers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.4 Organization of this Dissertation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.4.1 Flexible Feeding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.4.2 Workcell Modularity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.4.3 Design For Manufacturing and Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.4.4 Robot Grippers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2 Flexible Parts Feeders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2 Other Designs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.1 Non-Vision Based Flexible Feeders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.2 Vision Based Flexible Feeders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.3 CWRU Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3.1 Servo Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.3.2 Backlighting/Overhead Binary Vision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.3.3 Lighting Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.3.4 Installing the Underlighting System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.3.5 Conveyor Belt Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.4 Testing Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.4.1 Testing Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.4.2 Tests Performed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 v 2.4.2.1 System Throughput Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.4.2.2 Angle Dependence Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.4.2.3 Slow Robot Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.4.2.4 Endurance Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.4.3 Part Description and Feeding Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.4.3.1 Nuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.4.3.2 Plastic Snap Rings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.4.3.3 Plastic Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.4.3.4 Plastic Disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.4.3.5 Nuts and Plastic Sockets Mixed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.5 Results / Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.5.1 A Metric for Feeder Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.5.2 Data Collection and Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.5.3 Throughput Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.5.3.1 Snap Rings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.5.3.2 Plastic Disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.5.3.3 Nuts: 3 8 Inch and 5 16 Inch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.5.3.4 Plastic Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 2.5.3.5 Mixed Nuts and Plastic Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.5.4 Angle Dependence Test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 2.5.5 Slow Robot Test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 2.5.6 Endurance Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 2.5.7 Effects of Part Size On System Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 2.5.8 Oscillations in the Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 2.5.9 Jumps in the Variation of System Throughput . . . . . . . . . . . . . . . . . . . . . . . . . 89 2.5.10 Statistical Properties of the Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 2.5.10.1 Statistical Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 2.5.10.2 Computing New System Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 2.5.10.3 Correlation Between Sub-systems of the Flexible Parts Feeder . . . . . . . 110 2.6 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 2.7 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 2.7.1 Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 2.7.2 Further Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 2.7.3 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 vi 3 Modularity in Flexible Manufacturing Workcells . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 3.2 Background. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 3.2.1 Offsets in CNC Machining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 3.2.1.1 Machine Tool Offsets are Simpler than Robotic Offsets . . . . . . . . . . . . . . 124 3.2.1.2 Explanation of Machine Tool Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 3.2.1.3 An Example Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 3.2.1.4 Lessons From Machining Center Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . 128 3.2.2 Robot Offset Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 3.3 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 3.3.1 Homogeneous Coordinate Transforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 3.3.1.1 Positions and Orientations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 3.3.1.2 Potential Pitfalls In Using Homogeneous Transforms . . . . . . . . . . . . . . . 143 3.3.2 Digraphs - A Brief Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 3.4 Modularity Enabled by Vision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 3.4.1 Vision Allows . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 3.4.2 Problems using vision. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 3.4.3 Improving Accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 3.5 Methods of Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 3.5.1 Precision Machine Everything . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 3.5.2 Bolt Everything Down, All Locations Taught . . . . . . . . . . . . . . . . . . . . . . . . . 155 3.5.3 Precision Mount: One Tool Offset, Taught Locations . . . . . . . . . . . . . . . . . . . 155 3.5.4 Precision Mount: Many Tool Offsets, Per Print Locations . . . . . . . . . . . . . . . 156 3.5.5 Locate at Start-up: One Tool Offset, Taught Locations . . . . . . . . . . . . . . . . . 157 3.5.6 Locate at Start-up: Many Tool Offsets, Per Print Locations . . . . . . . . . . . . . 157 3.5.7 Tool Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 3.5.7.1 One Offset per Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 3.5.7.2 Two Offsets per Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 3.5.7.3 Multiple Offsets per Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 3.6 Proposed Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 3.6.1 Retrieving a Part From a Flexible Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 3.6.2 Placing a Part at an Assembly Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 3.7 Tool Offset Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 3.7.1 Simplifying Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 vii 3.7.2 Offsets specific to the workcell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 3.7.2.1 Height of a Modular Table Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 3.7.2.2 Height of a Flexible Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 3.7.2.3 Height of the Pallet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 3.7.2.4 Registration Picture Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 3.7.2.5 Camera Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 3.7.2.6 Flange Coordinate Frame ‘‘Fix’’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 3.7.2.7 Quick Connector Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 3.7.3 Offsets Specific to the Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 3.7.3.1 Modular Table Fixture Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 3.7.3.2 Pallet Fixture Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 3.7.3.3 Tool Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 3.7.4 Positions Calculated During Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 3.8 Testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 3.8.1 Method of Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 3.8.2 Description of Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 3.8.2.1 Assembly Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 3.8.2.2 Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 8 3.8.2.3 Workcell Preparation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 3.8.2.4 Assembly Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 3.8.2.5 Test Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 3.8.3 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 3.8.3.1 Setup Workcell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 3.8.3.2 Generic Workcell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 3.9 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 3.10 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 4 Design For Manufacture and Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 4.1.1 Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 4.1.2 Feeding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 4.1.3 Vision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 4.2 Survey of Previous Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 4.3 Guidelines, Rules, Experience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 4.3.1 Design for Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 viii 4.3.1.1 Use Snap Fits Rather than Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 4.3.1.2 Minimize Assembly Forces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 4.3.1.3 Design Generous Tolerances. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 4.3.1.4 Design Smooth Gripping Surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 4.3.1.5 Design for Vertical Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 4.3.1.6 Minimize Assembly Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 4.3.1.7 Design Parts and Grippers Concurrently . . . . . . . . . . . . . . . . . . . . . . . . . 227 4.3.2 Design for Feeding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 4.3.2.1 Minimize number of stable poses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 4.3.2.2 Design parts with stable orientations consistent with assembly . . . . . . . 228 4.3.2.3 Design parts to prevent tangling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 4.3.2.4 Design parts to be not damaged by the feeding operation . . . . . . . . . . . . 228 4.3.2.5 Design parts so as to not damage the feeder . . . . . . . . . . . . . . . . . . . . . . . 229 4.3.3 Design for Vision. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 4.3.3.1 Design parts with rotational invariance . . . . . . . . . . . . . . . . . . . . . . . . . . 229 4.3.3.2 Design parts with asymmetry if rotationally variant . . . . . . . . . . . . . . . . 229 4.3.3.3 Avoid translucent parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 4.4 Redesign of an Inexpensive Flashlight: An Example . . . . . . . . . . . . . . . . . . . . . . 231 4.4.1 Lens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 4.4.2 Lens Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 4.4.3 Reflector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 4.4.4 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 4.4.5 Spring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 4.4.6 Bulb Retainer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 4.4.7 Bulb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 4.5 Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 4.6 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 5 Gripper Design Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 5.2 Gripper ‘‘Footprint’’ ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 5.3 Gripper Design Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 5.3.1 Design Guideline to Increase Throughput. . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 5.3.1.1 Minimize Interference Measure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 5.3.1.2 Chamfer the Exterior Surfaces of Gripper Fingers . . . . . . . . . . . . . . . . . . 251 ix 5.3.1.3 Minimize Weight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 5.3.1.4 Ensure a Secure Grasp of Part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 5.3.1.5 Avoid Tool Change. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 5.3.1.6 Grasp Multiple Parts with a Single Gripper . . . . . . . . . . . . . . . . . . . . . . . 255 5.3.1.7 Use Multiple Grippers on a Rotary Wrist . . . . . . . . . . . . . . . . . . . . . . . . . 257 5.3.1.8 Functionality in Gripper Jaws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 5.3.2 Design Guidelines to Increase Reliability . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 5.3.2.1 Ensure a Secure Grasp of Part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 5.3.2.2 Minimize Finger Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 5.3.2.3 Design Necessary Approach Clearance . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 5.3.2.4 Design Chamfers on Approach Surfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . 262 5.3.2.5 Design Grippers to Align Parts as They are Grasped . . . . . . . . . . . . . . . . 262 5.3.2.6 Design Gripping Surface to Complement Frictional Coefficient . . . . . . . . 264 5.3.2.7 Design Fingers to Encompass Mounting Points. . . . . . . . . . . . . . . . . . . . . 265 5.3.2.8 Do Not Rely on Parts Added to Assembly for Location . . . . . . . . . . . . . . . 266 5.3.2.9 Design Lead-in Chamfers on Assembly Grippers . . . . . . . . . . . . . . . . . . . 267 5.3.2.10 Functionality in Gripper Jaws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 5.3.3 Design Guidelines to Reduce Cost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 5.3.3.1 Use Parallel or Rotary Motion Pneumatic Actuators. . . . . . . . . . . . . . . . . 270 5.3.3.2 Use Off-The-Shelf Components in Gripper Designs . . . . . . . . . . . . . . . . . 270 5.3.3.3 Handle Multiple Parts with a Single Gripper . . . . . . . . . . . . . . . . . . . . . . 271 5.4 CWRU Designs and Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 5.4.1 Parts Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 5.4.1.1 Bottom Cap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 5.4.1.2 Plastic Snap Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 5.4.1.3 Spare Lamp Holder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 5.4.1.4 Coil Spring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 5.4.1.5 Lens Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 5.4.1.6 Lens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6 5.4.1.7 Reflector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 5.4.1.8 Bulb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8 5.4.1.9 Bulb Retainer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 5.4.1.10 Water Valve Body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 5.4.1.11 Brass Fitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 x 5.4.1.12 Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 5.4.1.13 Spin Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 5.4.1.14 Tire Valve Cap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 5.4.1.15 Seal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 5.4.1.16 Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 5.4.1.17 Lid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3 5.4.1.18 Parker Fittings and Nuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 5.4.1.19 Hex Nuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 5.4.1.20 Plastic Sockets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 5.4.2 Assembly Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 5.4.2.1 Bottom Cap Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 5.4.2.2 Head Cap Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 5.4.2.3 Tire Valve Cap Package Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 5.4.2.4 N86 Water Valve Assembly / Disassembly. . . . . . . . . . . . . . . . . . . . . . . . . 295 5.4.2.5 Miscellaneous Other Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 5.4.3 Generic Rotary Jaw Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 5.4.3.1 Design Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 5.4.3.2 First Generation Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 5.4.3.3 Second Generation Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 5.4.4 Gripper Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 5.4.4.1 Bottom Cap Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 5.4.4.2 Bail Gripper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 5.4.4.3 Lamp Holder / Spring Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 5.4.4.4 Lens Ring Gripper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 5.4.4.5 Lens Ring / Reflector Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 5.4.4.6 Lens Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 5.4.4.7 Bulb / Bulb Retainer Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 5.4.4.8 Bulb Retainer Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 5.4.4.9 Cap / Container Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 5.4.4.10 Lid Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 5.4.4.11 Seal Gripper / Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 5.4.4.12 Lid Gripper / Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 5.4.4.13 Fitting / Guide Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 5.4.4.14 Body / Spin Ring Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 xi 5.4.4.15 Water Valve Disassembly Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 5.4.4.16 Hydraulic Fitting Nut Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 5.4.4.17 Nut / Bulb Retainer / Fitting Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 5.5 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 6 Results, Conclusions, Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 6.1 Flexible Parts Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 6.1.1 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 6.1.1.1 System Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 6.1.1.2 Statistical Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 6.1.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 6.1.2.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 6.1.2.2 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 6.1.2.3 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 6.1.3 Final Word. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 6.2 System Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 6.2.1 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 6.2.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 6.2.3 Final Word. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 6.3 Design for Manufacture and Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 6.3.1 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 6.3.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 6.3.3 Final Word. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 6.4 Gripper Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 7 6.4.1 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 6.4.1.1 Gripper Footprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 6.4.1.2 Design Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 6.4.1.3 Gripper Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 6.4.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 6.4.3 Final Word. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 6.5 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 7 Appendix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 7.1 Flexible Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 7.1.1 Underlit Conveyor Construction Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . 392 7.1.2 Feeder Test Data Windowing Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 xii 7.1.3 Averaging Window Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 7.1.4 Feeder Distribution Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 7.1.4.1 Overall System Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 7.1.4.2 Conveyor System Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 7.1.4.3 Vision System Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 7.1.4.4 Robot System Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 7.2 Tool Offset Calculator Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 7.2.1 Picking a Part from a Flexible Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 7.2.2 Placing a Part on a Fixture on a Modular Table . . . . . . . . . . . . . . . . . . . . . . . 400 7.2.3 Placing a Part on a Fixture at an Angle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 7.3 Programs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 7.3.1 V+ QC Calibration Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 7.3.2 Tool Offset Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 8 Bibliography. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 xiii xiv LIST OF FIGURES Figure 1-1: Two Views of the CWRU Agile Manufacturing Cell . . . . . . . . . . . . . . . . . . . 12 Figure 1-2: Simulation View of the CWRU Agile Manufacturing Cell . . . . . . . . . . . . . . 12 Figure 1-3: Completed Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Figure 1-4: Assembly Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Figure 1-5: Agile Manufacturing Workcell Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Figure 2-1: Two Views of the CWRU Flexible Parts Feeding System. . . . . . . . . . . . . . . 30 Figure 2-2: Schematic of the Flexible Parts Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Figure 2-3: CAD View of the Flexible Parts Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Figure 2-4: 1st and 3rd Generation Conveyor Lighting Designs. . . . . . . . . . . . . . . . . . . 34 Figure 2-5: Sample of Parts Fed Using the Flexible Parts Feeder . . . . . . . . . . . . . . . . . 37 Figure 2-6: 3 8 Inch and 5 16 Inch Hex Nuts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Figure 2-7: Snap Rings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Figure 2-8: Plastic Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Figure 2-9: Clear Plastic Disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Figure 2-10: Feeder Throughput for the Plastic Snap Rings. . . . . . . . . . . . . . . . . . . . . . 49 Figure 2-11: Feeder Throughput for the Plastic Disks . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Figure 2-12: Feeder Throughput for the 3 8 Inch and 5 16 Inch Hex Nuts . . . . . . . . . . . . 53 Figure 2-13: Throughput of the Overall System and Individual Parts . . . . . . . . . . . . . . 53 Figure 2-14: Feeder Throughput for the Plastic Sockets . . . . . . . . . . . . . . . . . . . . . . . . . 60 Figure 2-15: Overall and Indiviual Throughput with Multiple Parts in the Feeder . . . 63 Figure 2-16: Overall System Throughput for Various Angles of the Inclined Conveyor 71 Figure 2-17: Throughput of the System with the Robot Slowed . . . . . . . . . . . . . . . . . . . 73 Figure 2-18: Average Conveyor Throughput: Slow Robot Test . . . . . . . . . . . . . . . . . . . . 75 Figure 2-19: Average Conveyor Throughput: Test Case 1 . . . . . . . . . . . . . . . . . . . . . . . . 75 Figure 2-20: Throughput of the System During Extended Testing . . . . . . . . . . . . . . . . . 77 Figure 2-21: Time Spent Moving the Conveyors for Each Part Retrieved . . . . . . . . . . . 82 Figure 2-22: Time and Frequency Plot of the Mixed Parts Feeding Test: Test #1 . . . . . 84 Figure 2-23: Time and Frequency Plot of the Mixed Parts Feeding Test: Test #2 . . . . . 85 Figure 2-24: Time and Frequency Plot of the Hex Nut Feeding Test . . . . . . . . . . . . . . . 86 Figure 2-25: Time and Frequency Plot of the Mixed Parts Endurance Feeding Test . . 87 Figure 2-26: Time Domain Plot of the Mixed Parts Feeding Test . . . . . . . . . . . . . . . . . . 88 Figure 2-27: Throughput of the Individual Parts During the Extended Test. . . . . . . . . 90 xv Figure 2-28: Throughput of the Individual Parts During the Second Mixed Nut Test. . 91 Figure 2-29: PDF and CDF for Mixed Nuts and Mixed Nuts and Sockets . . . . . . . . . . . 95 Figure 2-30: PDF and CDF for the Plastic Snap Rings and Clear Plastic Disks . . . . . . 96 Figure 2-31: PDF and CDF of the Plastic Disks and Plastic Sockets . . . . . . . . . . . . . . . 97 Figure 2-32: PDF and CDF of the Mixed Nuts and Sockets. . . . . . . . . . . . . . . . . . . . . . . 97 Figure 2-33: PDF’s for Four Test Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Figure 2-34: PDF and CDF for the Mixed Nuts and Mixed Nuts and Sockets . . . . . . . . 99 Figure 2-35: PDF and CDF for the Plastic Disks and Plastic Sockets. . . . . . . . . . . . . . 100 Figure 2-36: PDF and CDF for Mixed Nuts and Mixed Nuts and Sockets . . . . . . . . . . 100 Figure 2-37: PDF and CDF for the Plastic Disks and Snap Rings . . . . . . . . . . . . . . . . 101 Figure 2-38: PDF and CDF for the Overall and Conveyor Sub-system Throughput . . 103 Figure 2-39: PDF and CDF of the Vision and Robot Throughputs . . . . . . . . . . . . . . . . 103 Figure 2-40: Time Line of Part Retrieval Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Figure 2-41: Time Line with Multiple Conveyor Moves . . . . . . . . . . . . . . . . . . . . . . . . . 105 Figure 2-42: Interarrival Times for the Feeder Sub-systems. . . . . . . . . . . . . . . . . . . . . 112 Figure 3-1: Translational Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Figure 3-2: Rotational Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Figure 3-3: General Homogeneous Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Figure 3-4: Many Coordinate Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Figure 3-5: An Example Digraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Figure 3-6: Digraph Representation of Figure 3-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Figure 3-7: Digraph Representation of Figure 3-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Figure 3-8: Vision Registration Marks on Pallet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Figure 3-9: 6 DOF Camera Mount. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Figure 3-10: Locating a Part on a Flexible Feeder in the WCS . . . . . . . . . . . . . . . . . . . 162 Figure 3-11: Retrieving a Part from a Flexible Feeder. . . . . . . . . . . . . . . . . . . . . . . . . . 163 Figure 3-12: Determining a Local Table Coordinate System in the WCS . . . . . . . . . . . 164 Figure 3-13: Placing a Part into a Fixture on a Modular Table. . . . . . . . . . . . . . . . . . . 165 Figure 3-14: Measuring the Length of the Pointer Tool . . . . . . . . . . . . . . . . . . . . . . . . . 169 Figure 3-15: Measuring the Height of the Table Frame. . . . . . . . . . . . . . . . . . . . . . . . . 170 Figure 3-16: Measuring the Height of the Feeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Figure 3-17: Measuring the Height of the Pallet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Figure 3-18: Vision Registration Marks on a Modular Table. . . . . . . . . . . . . . . . . . . . . 174 Figure 3-19: Half-full Pallet with Three Registration Dots . . . . . . . . . . . . . . . . . . . . . . 175 xvi Flange Figure 3-20: Physical Location of Quick ConnectSz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Figure 3-21: Placing a Part on a Vision Registered, Modular Table . . . . . . . . . . . . . . . 184 Figure 3-22: Tool Offset Calculator Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Figure 3-23: Parts Used for Offset Testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Figure 3-24: Robot / Camera Errors at the Setup Workcell. . . . . . . . . . . . . . . . . . . . . . 202 Figure 3-25: Robot / Camera Errors at the Generic Workcel. . . . . . . . . . . . . . . . . . . . . 203 Figure 3-26: Modular Table Requiring Multiple Tool Offsets . . . . . . . . . . . . . . . . . . . . 206 Figure 3-27: Inserting Parts into the Moduar Table Fixture . . . . . . . . . . . . . . . . . . . . 209 Figure 3-28: Before, During, and After the Pressing Operation . . . . . . . . . . . . . . . . . . 209 Figure 3-29: Inserting the Completed Sub-Assembly in the Pallet . . . . . . . . . . . . . . . . 210 Figure 4-1: Plastic Snap Rings and LEGO Blocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 Figure 4-2: Vision Processed Image of 3 Asymmetric Nubs. . . . . . . . . . . . . . . . . . . . . . 230 Figure 4-3: Plastic Thumb Switch with Different Shoulder Lengths . . . . . . . . . . . . . . 231 Figure 4-4: Generic Mini-Lantern used for Re-Design Exercise . . . . . . . . . . . . . . . . . . 232 Figure 4-5: First and Second Generation Concept Reflectors . . . . . . . . . . . . . . . . . . . . 235 Figure 4-6: CAD Views of the First and Second Generation Concept Reflectors . . . . . 235 Figure 4-7: Concept Reflector CAD View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Figure 4-8: Concept Reflector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Figure 4-9: Concept Switch - Top View and CAD Views . . . . . . . . . . . . . . . . . . . . . . . . 238 Figure 4-10: Bulb Retainer Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Figure 4-11: CAD Views of the Concept Bulb Retainers . . . . . . . . . . . . . . . . . . . . . . . . 240 Figure 5-1: Gripper Approaching Part From Side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Figure 5-2: Gripper with a Complex Footprint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Figure 5-3: Gripper with a Large External Chamfer . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Figure 5-4: Gripper Finger to Grasp Two Diameter Cylinders . . . . . . . . . . . . . . . . . . . 256 Figure 5-5: Gripper Fingers with Two Grasping Features . . . . . . . . . . . . . . . . . . . . . . 257 Figure 5-6: Gripper With and Without Part Alignment Chamfers . . . . . . . . . . . . . . . . 263 Figure 5-7: Encompassing Actuator Mounting Points . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Figure 5-8: Grippers With and Without Assembly Chamfers . . . . . . . . . . . . . . . . . . . . 268 Figure 5-9: Bottom Caps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Figure 5-10: Plastic Snap Rings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Figure 5-11: Spare-Lamp Holders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Figure 5-12: Coil Springs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Figure 5-13: Lens Rings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 xvii Figure 5-14: Lenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Figure 5-15: Reflectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Figure 5-16: Bulbs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Figure 5-17: Bulb Retainers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Figure 5-18: Parts of the Water Valve Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Figure 5-19: Parts of the Tire Valve Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Figure 5-20: Nuts for Hydraulic Fittings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Figure 5-21: Hydraulic Fittings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Figure 5-22: 3 8 ’’ and 5 16’’ Hex Nuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Figure 5-23: Plastic Sockets (Unmodified Bulb Retainers) . . . . . . . . . . . . . . . . . . . . . . 286 Figure 5-24: Completed Bottom Cap Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 Figure 5-25: Completed Headcap Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 Figure 5-26: Completed Tire Valve Cap Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Figure 5-27: Completed Water Valve Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Figure 5-28: CAD View of the First Generation Design . . . . . . . . . . . . . . . . . . . . . . . . . 301 Figure 5-29: Rotary Jaw Gripper - 1st Generation Design . . . . . . . . . . . . . . . . . . . . . . 304 Figure 5-30: CAD View of the Second Generation Design . . . . . . . . . . . . . . . . . . . . . . . 307 Figure 5-31: 2nd Generation Rotary Mechanism - Back View. . . . . . . . . . . . . . . . . . . . 309 Figure 5-32: 2nd Generation Rotary Mechanism - Front View . . . . . . . . . . . . . . . . . . . 310 Figure 5-33: 2nd Generation Rotary Mechanism - Rotated View . . . . . . . . . . . . . . . . . 311 Figure 5-34: CAD Views of the 2nd Generation Design . . . . . . . . . . . . . . . . . . . . . . . . . 312 Figure 5-35: Bottom Cap Gripper - 2nd Revision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Figure 5-36: Bottom Cap Gripper - 4th Revision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Figure 5-37: Phase I Gripping System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Figure 5-38: Bottom Cap / Bail Gripping System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Figure 5-39: Bail Gripper Retrieving a Bail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 Figure 5-40: Bail Gripper Finger Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 Figure 5-41: Lamp Holder Retrieval During Phase I and Phase II . . . . . . . . . . . . . . . . 324 Figure 5-42: Gripper Holding a Lamp Holder and Spring . . . . . . . . . . . . . . . . . . . . . . . 325 Figure 5-43: Lamp Holder / Spring / Bottom Cap Gripping System . . . . . . . . . . . . . . . 328 Figure 5-44: Lens Ring / Reflector Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Figure 5-45: Lens Ring / Reflector / Lens Gripping System . . . . . . . . . . . . . . . . . . . . . . 333 Figure 5-46: Lens Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Figure 5-47: Bulb / Bulb Retainer Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 xviii Figure 5-48: Bulb / Bulb Retainer Gripper with Short and Long Fingers . . . . . . . . . . 339 Figure 5-49: Bulb / Bulb Retainer Gripper / Assembly System . . . . . . . . . . . . . . . . . . . 340 Figure 5-50: Bulb Retainer Assembly Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Figure 5-51: Cap / Container Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 Figure 5-52: Tire Valve Gripper System - Robot 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Figure 5-53: Cap / Container Gripper - Rotary Mechanism. . . . . . . . . . . . . . . . . . . . . . 346 Figure 5-54: Lid Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 Figure 5-55: Tire Valve Gripper System - Robot 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 Figure 5-56: Cap / Seal Gripper / Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Figure 5-57: Linear Actuator at Extremes of Motion. . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Figure 5-58: Lid Gripper / Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 Figure 5-59: Water Valve Assembly Gripper System. . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Figure 5-60: Fitting / Guide Gripper with Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Figure 5-61: Fitting / Guide Gripper with Fitting and Finger Detail . . . . . . . . . . . . . . 360 Figure 5-62: Body / Spin Ring Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Figure 5-63: Body / Spin Ring Gripper with Spin Ring . . . . . . . . . . . . . . . . . . . . . . . . . 363 Figure 5-64: Water Valve Disassembly Gripper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Figure 5-65: Hydraulic Nut Gripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Figure 5-66: Feeder Test Gripper with Various Parts . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Figure 7-1: Averaging Window Moving Through the Data . . . . . . . . . . . . . . . . . . . . . . 393 Figure 7-2: PDF and CDF of the Plastic Disks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Figure 7-3: PDF and CDF for Various Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Figure 7-4: PDF of the Vision Distribution of the Plastic Sockets . . . . . . . . . . . . . . . . 396 Figure 7-5: PDF and CDF of the Plastic Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Figure 7-6: Results of the Tool Offset Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Figure 7-7: Results of the Tool Offset Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 Figure 7-8: Results of the Tool Offset Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 xix xx LIST OF TABLES Table 2-1: Number of Parts in the Hopper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Table 2-2: Number of Parts in the Hopper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Table 2-3: Throughput of Snap Rings in the Flexible Feeder . . . . . . . . . . . . . . . . . . . . . 48 Table 2-4: Throughput of Plastic Disks in the Flexible Feeder . . . . . . . . . . . . . . . . . . . . 51 Table 2-5: Throughput of Hex Nuts in the Flexible Feeder - Test 1 . . . . . . . . . . . . . . . . 52 Table 2-6: Throughput of Hex Nuts in the Flexible Feeder - Test 2 . . . . . . . . . . . . . . . . 52 Table 2-7: Individual Nut Throughput when Feeding Both Nuts . . . . . . . . . . . . . . . . . . 52 Table 2-8: Statistical Data from Manual Nut Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Table 2-9: Percentage of Each Type of Nut Fed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Table 2-10: Statistical Data from Manual Nut / Socket Test. . . . . . . . . . . . . . . . . . . . . . 58 Table 2-11: Percentage of Each Type of Nut and Socket . . . . . . . . . . . . . . . . . . . . . . . . . 58 Table 2-12: Throughput of the Plastic Sockets in the Flexible Feeder . . . . . . . . . . . . . . 59 Table 2-13: Throughput of the System Feeding All Parts . . . . . . . . . . . . . . . . . . . . . . . . 61 Table 2-14: Individual Part Throughput When All Parts Fed. . . . . . . . . . . . . . . . . . . . . 62 Table 2-15: Throughput of the System Feeding Parts in a Specific Order . . . . . . . . . . . 64 Table 2-16: Throughput of the System Feeding Individual Parts . . . . . . . . . . . . . . . . . . 64 Table 2-17: Throughput Data for Various Angles of the Inclined Conveyor . . . . . . . . . . 70 Table 2-18: Throughput of the System with the Robot Slowed . . . . . . . . . . . . . . . . . . . . 74 Table 2-19: Throughput of the System During Extended Testing. . . . . . . . . . . . . . . . . . 77 Table 2-20: Major Part Dimension and Overall System Throughput . . . . . . . . . . . . . . . 81 Table 2-21: Correlation Coefficients from Feeder Tests. . . . . . . . . . . . . . . . . . . . . . . . . 111 Table 2-22: Future Work on Flexible Parts Feeding . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Table 3-1: Physical Quantities and Variables Names . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Table 3-2: Coordinate Systems and Variable Names . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Table 3-3: Quick Connector Offsets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Table 3-4: Modular Table and Pallet Picture Locations. . . . . . . . . . . . . . . . . . . . . . . . . 200 Table 3-5: Workcell Component Heights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Table 3-6: Modular Table Assembly Locations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Table 3-7: Pallet Assembly Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Table 3-8: Gripper Offsets for Retrieving Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Table 3-9: Gripper Offsets for Placing Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Table 3-10: Gripper Offset for Completed Parts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 xxi Table 5-1: Assemblies and The Parts They Contain. . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Table 5-2: Bottomcap Assembly Steps at Each Robot . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Table 5-3: Headcap Assembly Steps at Each Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Table 5-4: Tire Valve Cap Package Assembly Steps at Each Robot. . . . . . . . . . . . . . . . 295 Table 5-5: N86 Water Valve Assembly / Disassembly Steps . . . . . . . . . . . . . . . . . . . . . 297 Table 7-1: Example Locations - Flexible Feeder Example . . . . . . . . . . . . . . . . . . . . . . . 399 Table 7-2: Example Locations - Modular Table Example. . . . . . . . . . . . . . . . . . . . . . . . 400 Table 7-3: Example Locations - Modular Table Example. . . . . . . . . . . . . . . . . . . . . . . . 402 xxii 1 Introduction There has been a large shift in the paradigm of automated manufacturing in the past ten to twenty years. Previously it was equated with dedicated systems producing large volumes of a single product at high speed. The overriding theory being that if a large enough quantity of products could be produced at a high enough rate for a long enough time, then the cost of the equipment could be justified and a significant portion of the market could be satisfied. Secondary benefits, including reduced labor and more consistent quality, were added bonuses but not the driving factors. However, this view no longer holds true. Smaller lot sizes, shorter times to market, increased product quality, and lower manufacturing costs are typical of the requirements of a modern manufacturing facility. In the face of the above constraints, hard automation systems are not feasible. They simply take too much time to design, setup, and install, and carry too high a cost to be economically justifiable for smaller lot sizes. What is required is a rapidly reconfigurable automation system that is capable of manufacturing a wide variety of products. This can be accomplished through the repeated use of a basic infrastructure coupled with quickly exchangeable modules specific to each particular assembly. A basic infrastructure allows a capital investment to be recovered over the life of many different products while modules encapsulate hardware, software, and processes specific to a particular assembly. Together they create a flexible assembly system which may be rapidly reconfigured for the manufacture of vastly different products. Agile manufacturing has benefits, but how important is it for manufacturers to embrace the new technologies? After comparing US manufacturing with the rest of the world and discussing US deficiencies, Richard Ligus in Industrial Engineering [1] wrote the following: As a result, factories are clumsy in moving parts on the factory floor, too slow in introducing new products to respond to market demands, stumbling in execution of production, and severe quality problems exist. What’s the consequence? Losing business. 1 2 Another supporter of the agile paradigm, Terrence Schmoyer, executive director of the Agile Manufacturing Enterprise Forum, wrote [2]: Agile manufacturing provides the ability to thrive and prosper in a competitive environment of continuous and unanticipated change and to respond rapidly to changing markets. Linda K. Schuch [3], contributing editor to Assembly, again sums up this fact in her article on rapidly changing flexible assembly technology: With product life cycles as short as nine months, manufacturers can no longer afford to use conventional assembly-system-development strategies, which can take up to two years. Nor can manufacturers depend on assembly systems that have been designed for specific products. In addition to economic justification, customer satisfaction can also be a driving factor. Automotive Engineering [4] uses the following definition for agile manufacturing: The agile manufacturer is the fastest to market, with the lowest total cost and the greatest ability to meet varied customer requirements. The final measure is the ability to ‘‘delight’’ the customer. Consumer’s expectations of product quality, time to new product design introduction, and final product cost have changed. Customers continue to demand higher quality products for reduced prices with improved product designs at quicker intervals, a goal which cannot be reached using traditional automation techniques. Several companies have already fully embraced this technology, in effect becoming the benchmark by which others are evaluating their own implementations. Perhaps the most successful and technologically advanced system is Motorola’s automated pager line for a new product, code-named Fusion [5]. This line is capable of assembling pagers specific to a single customer’s request in real time. There is no need to retool or change hardware. The system begins by marking a unique serial number on each circuit board and tracking that board throughout the system. Each workstation reads the serial number and performs the correct and required operation. While Motorola’s line deals specifically with electronic devices, Panasonic has developed a 3 custom production line for manufacturing bicycle frames to customer specifications [6]. The customer can choose from a variety of frame types and sizes, request the type of components, and specify the paint scheme and colors. Combined, there are over 11 million different combinations of bikes which can be produced. At the factory, each bike is assembled in CAD to test the frame’s design, then assigned a unique tracking number. A master craftsman oversees the production of the bike throughout the manufacturing process to ensure the automated equipment is producing a quality product. In approximately 10 days, the customer receives a bike custom-built exactly to his/her specifications. In a more general sense several companies, Adept Technology Inc., Sony Factory Automation, and Sieko Robots, are marketing flexible manufacturing systems. These systems are not designed for any particular product as were the two previous examples, but are designed to be generic manufacturing machines applicable to a wide variety of different tasks. Adept refers to their system as Rapid Deployment Automation [7]. Their system is comprised of standard robots, controllers, and vision-based flexible feeders which can be combined in a wide variety of layouts to satisfy many different automation requirements. Adept also offers a graphical simulation tool, Rapid [8], which can help speed the design of new automation systems. Sony’s SMART (Sony Multi Assembly Robot Technology) [9] system uses a similar technique in which standardized components are available to be arranged into whatever assembly system is needed. Like Adept’s system, standard components include a robotic workcell, multi-turret end effectors, and a flexible feeding system. Seiko describes their products as Agile Enabled [10]. They include linear elements, controllers, and a vision system designed to be rapidly constructed into a fully functional, vision-driven assembly system. 4 1.1 Definition The first question that arises when attempting to describe an agile manufacturing system is a definition for the term agile manufacturing. There are currently many definitions of agile manufacturing. Many people seem to define agile manufacturing in terms of the ‘‘buzzword’’ programs they have implemented. [11] This quote sums up the haphazard convention of defining agility rather well. Below are additional definitions given to the term agile manufacturing. Agility: The measure of a manufacturer’s ability to react fast to sudden, unpredictable change in customer demand for its products and services and make a profit. [12] Industries are embracing the concepts of agile manufacturing, which favor nimble principles over the aging techniques of mass production. [13] [Agile manufacturing] refers to the ability to produce so-called custom-engineered or custom-specific parts usually in short production runs or one-of-a-kind batches. [14] The buzzwords are ‘‘lean’’, to describe efficient, unwasteful, less costly manufacturing; ‘‘agile’’, said of a manufacturing system’s speed in reconfiguring itself to meet changing demands; and ‘‘flexible’’, meaning the system’s ability to adjust to customers’ preferences. [15] Agile Manufacturing System: a system that can fabricate different objects simultaneously, without having to be shutdown for retooling. [16] Agile manufacturing assimilates the full range of flexible production technologies, along with the lessons learned from total quality management, ‘‘just-in-time’’ production and ‘‘lean’’ production. [17] The term agile has even been applied to the business and management sector as well. The word ‘‘agility’’ has popped into the business jargon over the last several years... There is a growing number of companies that are making agility part of the focus of their strategic business plans and road maps. [18] 5 The only common theme among the various definitions is the ability to manufacture a variety of similar products based on current customer needs. In this dissertation, agility is defined as: The ability to accomplish rapid changeover between the manufacture of different assemblies utilizing essentially the same workcell and allow the rapid introduction of new products with little or no workcell downtime. This definition is especially appropriate for light mechanical assembly, which is the focus of this research. Light Mechanical Assembly, as defined here, is the assembly of products from discrete, moderate-sized components to form a more functional whole. While there is no hard limit placed on size or weight, a good approximation would be no larger that a few inches in size and no heavier than could be easily manipulated by a commercially-available table-top robot. 1.2 Factory of the Future Consider the following hypothetical situation in which a factory is built consisting of similar robotic workcells. A workcell may be defined as the required group of equipment for performing light mechanical assembly. Most of the workcells are connected using a generic conveyor system and are used for production. Several of the workcells, separate from the rest of the production system, are designated as setup workcells and used to introduce new products into the system. The factory is used to produce a wide variety of products, which are ordered in small lot sizes with no regularity. When an order for a product is received, the first available workcell is setup and begins to fill the order. The next order arrives and is inserted into the next available workcell, which begins producing that product. The requirement is the encapsulation of product specific hardware and software. By modularizing all assembly-specific components and software, the separate modules may be re-deployed to fit current production needs. The term ‘‘encapsulation’’ first became prevalent in regards to object-oriented software which was written using 6 constructs that wrapped data structures and functions into modules which could only be accessed through a standard, pre-defined interface. While it is important for workcell control software to employ object-oriented design techniques, the concept of encapsulation can also be applied to workcell hardware. In relation to the physical, it means designing assembly-specific hardware to be self-contained and to only allow access through a standard, pre-defined interface. For example, a particular gripper quickchange adaptor is selected for use. Then all grippers are required to interact with the rest of the system by using the pneumatic, electric, and mechanical connections provided by that adaptor. The pre-defined interface of the adaptor encapsulates the gripper such that any workcell using that type of gripper adaptor is capable of using the gripper. By encapsulating all specialized hardware and software, any workcell is capable of being used to fill any order. When an order for a new product is received, specialized hardware is manufactured and tested and specialized software developed and debugged on one of the setup workcells. After the process is functional, the assembly may be shifted to the next available workcell in the factory. In this manner, orders are filled as they arrive by the first available workcell. If a particular product’s assembly was more complicated and required n workcells to complete the task, the conveyor system would be used to transfer partially completed sub-assemblies between the workcells. The next time the product was ordered, the first n available workcells could be used. Since all the workcells are connected using the conveyor, it would not matter physically if the same workcells were used for the assembly since the conveyor can transfer sub-assemblies between any workcell. The above situation is an interesting mental exercise and prompts further examination. How can a production system such as this be implemented? What has to be in place before a factory like the one described can be brought on-line? Further study of the problem yields some insights into the requirements of a flexible assembly factory. Specifically, ‘‘What are the features necessary to realize a Factory of the Future’’? 7 Reprogrammable Part Manipulator. This usually is an industrial robot, but in the general sense, what is needed is a generic manipulator which can be programmed to perform a number of pick-and-place or assembly operations at any position within its working envelope. Since any workcell may be used to perform any assembly, it cannot be know a priori what type of assembly each particular workcell will be doing at any given time. Therefore it is necessary that each workcell be equipped with a manipulator that is capable of performing a wide variety of tasks. Flexible Parts Feeders. Since, by definition, assembly is the conversion of many parts into one useful product, it is necessary to present the bulk parts needed for assembly to the workcells. Conventional feeding methods, such as bowl feeders, are specialized in nature and are simply too component-specific for use in a generic workcell. They are designed, built, and tuned for a particular part. If any property of the part (mass, mass distribution, size, material) is altered, the feeder becomes useless. In the hypothetical factory, any workcell can be used for any assembly, so a parts feeder capable of feeding a wide variety of parts with little or no alteration is needed. While it would be possible to encapsulate each feeder and introduce it into the system as a module, there are several flaws with this thinking. First, feeders are expensive pieces of equipment and it would not be justifiable, from an economic standpoint, to purchase a new one for each part fed. Secondly, the lead time associated with a new feeder can be long and therefore violates the second half of the adopted definition of agile: ‘‘rapid introduction of new products with little or no workcell downtime.’’ Lastly, feeders can be rather large pieces of equipment. Allocating the storage space for a feeder for each part ever assembled at the factory would quickly fill up a large amount of storage space. Current trends in flexible feeding are toward using vision-based systems, but other solutions, such as carrier-based feeders (GPAX Tape and Reel system [19], for 8 example) also fit the definition. Without flexible parts feeders, it would be impossible to assemble any product at any workcell. Rapidly Reconfigurable Hardware. Many assemblies contain operations which are impractical or impossible to perform using a common industrial robot. For example, parts may need to be stamped together, requiring more force than the robot is capable of producing. A nut may need to be run on a threaded rod, requiring a range of motion beyond the capability of the robot. A sub-assembly may need to be inverted so that additional parts may be added to its bottom. While it may be possible for a robot to accomplish some of the preceding tasks, time may also be a factor. It may be required to produce parts at a rate greater than possible if only the robot is used. In all these cases, dedicated hardware can accomplish the task quickly and more reliably than a robot. For this hardware to be useful it must be capable of being rapidly introduced into the workcell as well as be capable of operating at any of the workstations. This requires that each workcell have an area which includes a standard mounting scheme, power connector, and control/sensor connector for interfacing quickly and cleanly with the dedicated hardware. Generic Conveyor System. If an assembly process is too complex for a single robot to perform, it is necessary to use multiple workcells to complete the task. A structure must be in place to transport sub-assemblies between workcells. Since any workcell is capable of performing any assembly task, it is necessary for all the workcells to be interconnected by the conveyor system. The form of the conveyor is left intentionally vague. It could be a simple, pallet-based conveyor system, such as those manufactured by Bosch Automation [20] or Lanco Systems [21], or could be as complex as a fleet of autonomous vehicles moving between the workcells. The requirement is that a subassembly at any workcell can be transferred to any other workcell. Each workcell, therefore, must have an area, within the reach of the manipulator, into which the conveyor may deliver parts. 9 Rapidly Changeable Grippers. As a product is being assembled, a robot must handle parts as they are retrieved from flexible parts feeders. While one could envision a generic dextrous hand used for part manipulation, such technology, while commercially available [22], is not currently applicable to production floor requirements. Speed and economic considerations generally dictate that simple pneumatic grippers be used. It then becomes necessary to quickly mount the grippers to any manipulator at any workcell. This system must be capable of rigidly and accurately securing the grippers to the manipulator. It also must pass power and control/sensor signals between the grippers and the workcells control system. While this at first appears to fall under the category of Rapidly Reconfigurable Hardware, the distinction lies in use. The grippers are tools used by the robot at a particular workcell to handle and manipulate parts. Hardware is rigidly mounted, does not move relative to the robot’s base, and is generally used to fixture parts during assembly or perform operations the robot cannot. Vision System. An agile manufacturing system must permit rapid reconfiguration for a different product. A vision system allows the manipulator to quickly register the location of objects as they enter the workcell. After changing from one product to another, the manipulator may ‘‘look around’’ in its work envelope to find any new dedicated assembly hardware. A vision system is also usually an integrated part of a flexible parts feeder. Software and Control. It is also necessary to construct the software system such that it is capable of performing any given assembly at any workcell. This type of system demands a distributed, multi-layered control approach. Each sub-system must be responsible for those below it and report to the system above it. If an emergency stop (Estop) is pressed at a single workcell, for instance, there is no reason for another workcell to shutdown as well. This condition should be handled by the local controller and only propagated to a higher controller if it is impossible to resolve the problem without intervention. An overall controller, a factory manager, would be responsible for 10 overseeing all operations, but control of individual assembly cells would be handled by a local controller. It would be the responsibility of the factory manager to ensure the proper software was transferred to each workcell for a particular assembly and that the conveyor controller was properly initiated and able to serve requests from each workcell. Correctly Designed Products. One of the most often overlooked, and possibly most important, feature in an assembly system is the design of the parts and products which they make. While it is possible to automate almost any assembly, quite often a small design change can make the difference between a product which is easy and reliable to assemble and one which constantly requires operator intervention. These design changes, if made during product development, cost little and often are not even noticeable in the final design. However, they make a vast difference in the reliability of the assembly process. This process of redesign in the light of automated assembly is referred to as Design for Manufacture and Assembly or DFMA [23]. Returning to the hypothetical factory and using the components described above, the following would be a normal scenario for producing a product. First an order would be received and the first available workcell chosen. The modular tables containing any specialized hardware would be retrieved and mounted in the workcell. After registering the worktable into its world coordinate system using the vision system, the robot would know the fixture locations and be able to use them. A gripper containing the necessary end effectors would be attached to the robot using a quick connector. Tool offsets would be used to describe the geometry of the gripper to the robot so that it could be used to manipulate parts. Flexible feeders would be filled with component parts needed to produce the product and present those parts to the robot for assembly. As products were finished, they would be placed onto a pallet, also registered into the robot’s world coordinate system using the vision system. When a pallet was filled it would be taken to another location to be unloaded by the conveyor system. A central factory controller 11 would be responsible for downloading the correct programs to the robot’s controller which would guide the particular assembly. 1.3 Agile Manufacturing at CWRU A prototype agile manufacturing workcell has been constructed at CWRU so that research may be conducted with real hardware [24][25][26]. Without a physical system for testing, many of the processes and techniques described later in the dissertation would be purely speculative and not directly applicable to real-world manufacturing situations. The following section discusses the design of the manufacturing system. 1.3.1 Workcell Overview The standard workcell at CWRU (Figure 1-1 and Figure 1-2) consists of a Bosch flexible material-handling system, two Adept 550 robots, several flexible parts feeders, an Adept MV controller, a single-board computer with a real-time operating system (RTOS), an AdeptOne robot with an MC controller, and an AdeptOne robot with a Cimetrix controller. A central feature of the workcell is the Bosch conveyor system. It is responsible for transferring the partially-completed sub-assemblies between the assembly robots and for carrying finished assemblies to the unloading robot. The two Adept 550 robots have been mounted on pedestals near each conveyor spur (described below). Pallets with specialized parts fixtures are used to carry the sub-assemblies as well as the finished assemblies throughout the system. A safety cage encloses the entire workcell. This protects operators from malfunctions and serves as the mounting frame for the overhead cameras. The workcell is controlled by a dual VME bus control system. An Adept MV controller performs motion and vision processing while communicating with a second VME bus through a reflective memory network [27]. The second bus contains a singleboard computer which controls the overall workcell, including the conveyor system, and 12 the flexible parts feeders. This permits the use of a real-time operating system and software development in C or C++. Figure 1-1: Two Views of the CWRU Agile Manufacturing Cell Figure 1-2: Simulation View of the CWRU Agile Manufacturing Cell Specialized hardware such as presses and grippers are encapsulated on interchangeable worktables and end effector quick connectors. These modular worktables and grippers can be quickly swapped for rapid changeover of manufactured components. 1.3.2 Workcell Capabilities The agility of the workcell has been demonstrated using two simple assemblies. A common flashlight bottomcap and headcap were chosen as typical assembly tasks 13 because they were inexpensive and readily available in moderate quantities from local sources. The bottomcap assembly consisted of 4 components and the headcap assembly consisted of 5 components. Figure 1-3 shows both completed assemblies while Figure 1-4 shows the assembly drawings. Overall, the complete bottomcap assembly is about 11 2 inches in diameter and 1 inch in height. The completed headcap assembly is about 2 inches in diameter and 11 2 inches in height. Bottomcap Assembly Headcap Assembly Figure 1-3: Completed Assemblies Figure 1-4: Assembly Views 14 1.3.3 Mechanical Workcell Components 1.3.3.1 Safety Cage The safety cage is constructed of Bosch extruded aluminum. This structure serves two purposes. First, it encloses the workcell and discourages people from entering the assembly system. It also protects the user from flying objects (in the case of a malfunction). The second major function of the safety cage is to hold the overhead cameras. The cage was designed to be stiff so that the overhead cameras would remain still during mechanical operation. Cameras are mounted over both robot workstations for part feeding. Precision, rigid, six degree-of-freedom camera mounts were designed and constructed. During system setup, it is necessary to align the cameras over the vision window of the flexible parts feeders. This must be done to a high degree of accuracy. The camera’s optical axis needs to be precisely aligned so as to be perpendicular to the vision window. The vision window then needs to be aligned in the camera’s field of view. The mount allowed easy and independent adjustment of the camera during installation. 1.3.3.2 Conveyor System The conveyor used for the assembly system is a model T2 manufactured by Bosch. Pallets are circulated on two main conveyor sections. These straight sections are parallel to each other and operate in opposite directions. Pallets are transferred between the two sections by means of Lift Transfer Units (LTU’s). These units are standard Bosch accessories for the T2 conveyor system. The transfer stations on the ends of the conveyor are uni-directional (transfers must always start on the same belt and end on the other belt). There is also a third connection between the two main conveyor sections at their mid-point. This transfer station is bi-directional (transfers may begin or end on either belt). This allows the pallets to be ‘‘shuffled’’ (their order can be changed) during operation. 15 A new concept seen on the conveyor is the use of short ‘‘spur lines’’. The spur is simply an extension built off the main line of the conveyor which houses a single LTU. By placing an LTU in the main line opposite the spur, pallets may be removed from the main line and placed within the reach of a robot so that the flow of the main line is not blocked during assembly. This allows the flow of the main conveyor line to be maintained while a robot performs an assembly at the pallet. Pallets entering a spur are registered in the robot’s world coordinate frame by an arm-mounted camera, allowing the robot to place/remove parts on/from the pallet and avoiding the expense of mechanical registration. 1.3.3.3 Workcell Layout Five concepts were generated for the positioning of the robots in the standard workcell. Some of the factors considered in the placement of the robots included: reach of the robot relative to the pallet on the spurs, placement of the parts feeders within the work envelope of the robot, placement of the feeders so that they physically fit in the allotted floor space, and position of the assembly area relative to the feeders within the work envelope of the robot (this will have a dramatic impact upon the speed of the assembly). The design of the final layout positioned the robot in-line with and facing the spur with its dead space oriented directly away from the workcell. The parts feeders enter the robot work envelope from both sides at the back of the robot’s reach. To the left and right in front of the robot are two areas for modular worktables. Approximately half the area of the worktable is within reach of the robot. By using a pneumatic slide (or other part transport device), components may be moved to dedicated hardware located outside of the robot’s envelope, thereby reducing the possibility of a robot/hardware collision. Figure 1-5 shows an overhead view of the workcell layout. 16 Figure 1-5: Agile Manufacturing Workcell Layout 1.3.3.4 Modular Work Tables Modular worktables have been designed to facilitate the rapid-changeover of dedicated assembly hardware. By mounting the required hardware on a removable table and attaching that table to the workcell, the assembly hardware can be easily interchanged. When a table is installed at a workstation, the robot locates the table in its World Coordinate System (WCS) using the vision system. Locations on the tables necessary for assembly are defined in a table relative frame of reference, so that once the pose of the table is known in the WCS the assembly locations can be determined in the WCS. The solenoids, vacuum generator, and other hardware which drive the assembly hardware are mounted on the bottom of the table. An electrical enclosure, containing a modular plug connection to the table components, is mounted on the bottom of the table. Some tables are completely passive and do not require pneumatic or electric connections, greatly simplifying their construction. 17 1.3.3.5 Grippers A quick connector is mounted on the flange of each robot so that modular grippers may be used. Given the small payload (5 kg.) of the Adept 550 robot, a small quick connector designed and sold by ATI Industrial Automation, model ‘‘Light-5A’’ [28], was selected. This connector allows six independent air lines and ten independent electrical connections to pass through. The connector and its mating part (which is attached to each gripper) is lightweight and well suited for use on Adept 550 robots. Air lines which power the grippers on the robots are routed internally in the quill of the robot which eliminates dangling hoses around the end effector. A special connector was fabricated to allow the hoses to pass from the inside of the quill to the outside of the quick-connector where they are attached. The hoses are protected where they pass through the top of link three using shrink wrap. 1.4 Organization of this Dissertation The remainder of this dissertation is composed of four chapters, introduced below. Each chapter deals with a specific area of an agile manufacturing workcell. 1.4.1 Flexible Feeding Flexible parts feeders are key components of an agile workcell. As previously mentioned, dedicated feeding techniques are too constrained for a flexible workcell and a more general, flexible approach is needed. An added benefit of flexible feeding is its immunity to jamming. It has been reported that bowl feeders are responsible for as much as 50% of the downtime of industrial automation systems [29]. By using a flexible approach, this downtime can be avoided. In Chapter 2 of the dissertation, the design of the CWRU feeder will be discussed. The original design decisions will be discussed as well as subsequent revisions. A comparison with other commercially available flexible feeders will also be examined. A discussion of feeder testing procedures is included and feeder throughput results for 18 various components will be presented. Finally, the statistical properties of the feeder are examined. Recommendations for future work are discussed in the conclusions section. 1.4.2 Workcell Modularity Designing a workcell to be modular is important if agility is to be achieved. The only way to enable both the rapid changeover between different assemblies and the use of dedicated hardware is to encapsulate the specialized hardware on modular tables and grippers on quick-change tool adaptors. By encapsulating the assembly-specific hardware, rapid reconfiguration of the workcell is possible. The second half of modularity is defining and teaching tool offsets that allow the use of the modular hardware in any generic workcell. While it may be possible to rapidly replace modular hardware and grippers, if a complete re-teaching of tool offsets and assembly locations is required before production can begin the system is still not agile. The offsets in the system must be designed such that once they have been taught, they do not need to be re-taught. The modular assembly hardware should be capable of being placed into a physically different workcell and still function using the same offsets. In Chapter 3 of the dissertation, a method of determining and using offsets is presented. First, an overview of homogeneous transforms is presented followed by a discussion of possible methods of defining offsets. Next the proposed method is described in more detail. Finally, results from testing the method are presented. The CWRU workcell was used for this testing. The test consisted of setting up an example assembly at one of the robot workstations and determining all necessary offsets then moving the assembly to another workstation and running the system without re-teaching offsets, while under observation. The headcap assembly was used for testing. 1.4.3 Design For Manufacturing and Assembly The design of the parts being assembled in the workcell can have a profound effect on the performance of the system. Often times a small change in the geometry of the part can have a profound influence on its manufacturability. While much has been 19 published previously on the subject of design for manufacture, little has been presented in regards to assembly in an agile workcell. This type of assembly, given the modular nature of the components and flexible feeding can present unique challenges to the design of a product. Chapter 4 of this dissertation is separated into several parts. First, previous work is presented. Second, design guidelines are presented which deal with design for manufacture and assembly in three agile related areas: design for assembly in an agile workcell, design for flexible feeding, and design for vision recognition. Finally, as an example of the guidelines, the redesign of a commercially-available product is discussed. 1.4.4 Robot Grippers Chapter 5 presents the final topic, the design of grippers for agile manufacturing. The design of grippers for robotic assembly is, in general, one of the most important yet most often overlooked portions of workcell design. Specific to agile manufacturing, the design of grippers has some extra challenges. First, in order to decrease the cycle time of the system, it is often advantageous to design the grippers to grasp multiple parts with a single set of gripper jaws. This eliminates the time needed to perform tool changes. Second, using a flexible feeder has several major implications on the design of grippers because the parts are presented in a random fashion. Designing gripper fingers which are unnecessarily large can significantly decrease the throughput of the system. Since the flexible feeder uses a vision system, additional uncertainty can be introduced into the part locations due to inaccuracies in the vision system. Grippers need to be capable of accurately retrieving parts despite error in the pick-up location. This chapter of the dissertation discusses guidelines for the design of grippers and then discusses the design of grippers currently in use in the CWRU workcell and in Eaton’s Reconfigurable Assembly Cell in light of these guidelines. Seventeen different grippers are discussed and examined. Additionally, the design of a rotary jaw gripper, 20 needed to rotate parts from stable feeding orientations to assembly orientations, is also discussed. 2 Flexible Parts Feeders 2.1 Introduction This chapter describes the design, implementation, and testing of a flexible parts feeding system. While flexibility encompasses every part of the workcell design, including hardware and control software, the ability to feed parts in a wide variety of sizes and shapes is crucial. Unfortunately, conventional feeding methods, such as vibratory bowl feeders, are not practical for flexible workcells because of their specialized nature. Flexible feeding has been and continues to be the most elusive part of the agile puzzle. As current trends in manufacturing and production continue towards agility, non-flexible feeding designs become less and less feasible. Moreover, rapid changeover between products and rapid introduction of new assemblies is hampered if the feeding system cannot be quickly reconfigured to the new parts. While a modular approach could be employed which would allow specialized feeders to be quickly brought into the workcell, there are several difficulties that could present themselves with this approach. First, a feeding system tends to be large and bulky in comparison to a modular worktable or a gripper. Size alone could make storing all the feeders difficult. Second, a feeding system is, generally, more expensive than a modular table or gripper. It might be difficult to economically justify building several new feeders for each new product being assembled. Third, the lead time to build and adjust most current feeding systems is rather long. This diminishes the ability of the workcell to be rapidly adapted to new products. Flexible feeders can eliminate the problems listed in the previous paragraph. At the initiation of this work, commercial designs of flexible feeders were in their infancy. Current designs are discussed below. The CWRU flexible feeder was developed because of a need to feed larger parts than was possible with the current commercial selection. 21 22 2.2 Other Designs There are a wide variety of feeders currently available that are in some way flexible. At the most basic end of the spectrum, there are simple bowl type feeders which use a sensor for determining the orientation of the part rather than using mechanical escapements. At the other end of the spectrum are feeders which do little more than scatter parts onto a flat surface and then allow a vision system to determine location, orientation, graspability, and correctness of the parts. Most feeders can, however, be separated into two general classes. The first class are feeders that rely on simple sensors or reconfigurable mechanical escapements to orient parts. The parts are eventually presented to the system at a known location and orientation. Since the parts are always presented at a single location, a simple pick and place manipulator may be used to retrieve the parts. The second class are feeders that use a vision system to determine the position and orientation (pose) of the part and report them to the robot for retrieval. This type of system requires a robot to retrieve parts since they may be located anywhere in the field of view of the camera and at any orientation. The following two sections are a general review of flexible feeders currently available. Most of the references in this chapter are to products designed and in factory use. Since feeding, in general, tends to be oriented toward a particular problem, most of the advancements in feeding have come from a particular need, and hence, even feeders which are applicable to a wide variety of parts were born from a single problem. Only the more technically advanced, vision-based feeders were developed without a particular feeding problem in mind. 2.2.1 Non-Vision Based Flexible Feeders The first few feeders examined are variations on vibratory bowl feeders. They are of a class generally referred to as ‘‘smart bowls’’ since they typically utilize a standard feeder bowl coupled with some type of sensing system. 23 Rockwell Automation uses such a feeder and presented its design at the 1994 Robotics Industries Association (RIA) Flexible Feeding Conference [30]. The system feeds flat plates from a bowl in one of two known orientations. Each plate contains four countersunk holes which are required to be located on the top of the plate to be assembled correctly. A camera is mounted at a 45° angle to the track and examines each plate as it passes the vision window. A sensor signals the camera when a part is present. Parts which are upside down are blown by a small air jet back into the hopper. While this system uses a camera, it is classified as a non-vision system because the camera is only used as a sensor to determine the correctness of the part, not its pose. If the camera determines that the part is in a valid orientation, it is then presented to the rest of the system in a know location. Delco Electronics has designed a similar system to feed three different types of parts used in a pressure sensor product [31]. A standard feeder bowl is used to deliver similar parts to an exit track. A line scan camera is used to generate a profile of the parts as they pass the sensor. This data is used to determine if the part is in the proper orientation, that the part is properly constructed (a valid, properly sized part), and that the part is correct (ensures that an operator has loaded the correct parts). Comtech has developed what it calls the ‘‘Robo-Pot’’ [32]. It uses a standard bowl feeder with a simple internal spiral track with no escapements. The internal track transports the parts to a narrow conveyor that moves the parts past a linescan camera. The linescan camera reports a profile of the parts to a microprocessor which identifies the part. Parts which are backwards can be flipped 180° by a special mechanism. Parts are also verified by their profile to ensure only desired parts are being delivered to subsequent operations. This design allows many different types of parts to be delivered from a single feed bowl. This company is different from the previous two examples since they are marketing their feeder to be applicable to a wide variety of parts rather than a few specific parts. 24 Custom Systems Integration Co., Inc. markets a line of centrifugal feeders which are designed to feed a wide variety of parts [33]. Centrifugal feeders are based on a rotating disk which pushes parts toward the perimeter of a bowl. A series of escapements, which are tailored to the specific part being fed, are located along the rim/perimeter of the bowl. The enabling flexible feature of the feeder is the ability to quickly replace the rim with a different set of escapements. All the hardware except for the tooling ring stays the same. This modularity allows for rapid changeover between parts (analogous to changing the modular tables or the robot grippers on the CWRU workcell). There are several patents for ‘‘smart’’ type bowl feeders. The first was issued in 1982 and describes a bowl feeder which has an array of photoelectric sensors along the feed track [34]. A light source is directed toward the sensors and when a part passes, a profile is generated. The profile is used to accept or reject the part. The second patent was issued in 1987 and describes a similar system [35]. This system has a series of embedded light sensors in the track of a bowl feeder. As the part passes the embedded sensors, an overhead light is obstructed. This generates a part profile. An air jet is used to blow incorrectly-oriented parts back into the bowl. Two additional patents pertaining to parts feeders were examined. Polariod Corporation patented a feeding device consisting of a vibrating bowl attached to a rotational degree of freedom [36]. Parts are dropped into the bowl one at a time and the bowl is vibrated in a vertical manner until the part is laying flat at the bottom. Next, a camera is used to determine the rotational orientation of the part. The bowl is then rotated until the part is in a correct orientation for retrieval. The final patent, issued in 1986, is for a parts feeder/reorienter [37]. A fiber optic array is used to determine the initial orientation of a part on the ‘‘handler’’. After determining the initial orientation, a reorienter is instructed to either pass the part untouched, or reorient the part. 25 The final three feeders in this section differ from those presented previously in that they do not rely on a vibratory bowl for bulk part storage and singulation. They utilize other methods of storing and presenting parts to the workcell for assembly. Gpax International, Inc. manufactures a line of tape and reel feeders for presenting small components to a robotic manipulator for assembly [38]. The feeder operates by pulling tape, which contains the components being fed, from a supply reel and presenting the component to the workcell for use. The tape is constructed of two layers, a carrier layer into which the components are placed and a StitchLock layer which is used to secure the component in place. As the tape approaches the presentation location, the StichLock layer is pulled away leaving the component to be retrieved. While each tape is unique to the specific part being fed, the system achieves its flexibility by using the same presentation mechanism for feeding any tape. Therefore, feeding a new component is simply a matter of loading a new reel of tape into the machine. While the feeding method is currently targeted mainly toward electronic components, it is applicable to a wide variety of small components. Sankyo Robotics manufactures a tray-based feeding system which can be used to feed a large variety of parts [39]. This feeder is based on a mechanism than can present trays of parts to the workcell in a known location. By altering the pocket configuration on the tray, many different parts can be accommodated. The mechanism which manipulates the trays can be loaded with multiple trays and automatically brings a new tray into position after the previous tray has been emptied. Another feeder in this group, and perhaps the most innovative and advanced, is called the Table-Type Advanced Parts Orientating System (or T-APOS) and is produced by Sony [40]. The feeder functions by spilling parts over specially designed trays which capture the parts in known orientations. By designing the tray to only hold parts in the desired orientation, parts not correctly aligned simply fall from the end of the tray and are recirculated. A mechanism is used to shake the tray as the parts tumble over it to 26 help align the parts with the tray pockets. Multiple trays are used which allows one tray to be filled while the other tray is being used to present parts to the assembly cell. This feeder achieves agility by using the same infrastructure for different parts. Changeover requires simply swapping trays. The shaking mechanism can be reprogrammed to allow the amplitude and frequency of the vibration to be altered for each individual part. The last two feeders discussed (or perhaps more accurately called re-orienters) are completely passive and have the ability to properly align an n-sided polygonal part. Goldberg and Mason [41] introduced a mechanism and algorithm for aligning parts with any starting orientation. The mechanism is a parallel jaw gripper with one of the jaws mounted on a linear slide so that parts which are gripped are free to rotate until one of the flat sides aligns with one of the gripper jaws. The mechanism is operated by going through a predetermined set of closures which is guaranteed to properly align the part being fed. By reprogramming the sequence of closings, any n-sided polygonal part may be moved to a known orientation. Brokowski, Peshkin, and Goldberg [42] describe a feeder which is composed of a flat conveyor fitted with adjustable fences. By adjusting the fences to the proper angles relative to the conveyor, any n-sided polygonal part entering the system at any initial angle will exit the system in a single predetermined orientation. Different shaped parts may be accommodated by altering the configuration of the fences. 2.2.2 Vision Based Flexible Feeders The feeders discussed in this section are those that use a vision system to determine the position and orientation of the parts which are being fed. They are typically simpler (mechanically) than the previous feeders since they rely on the vision system for determining the location of the part rather than complicated mechanical means. They also tend to be designed more for general feeding needs rather than an open-ended solution to a particular problem. 27 Shibuya International, Inc. makes a flexible bottle feeder [43]. They also hold a patent for this feeder[44]. This feeder spills randomly oriented bottles from a bulk hopper onto a special mechanism which roughly orients them. A vision system is then used to direct a pair of AdeptOne robots to retrieve the bottles using a suction gripper. The robot tracks the conveyor which allows the system to operate continuously, potentially increasing the throughput. Bottles are then dropped onto a secondary conveyor which transports them to the assembly station. The bottles fall into an upright orientation as they are dropped onto the second conveyor. While only designed for bottles, the feeder is capable of handling a wide variety of container types. Adept markets the Adept FlexFeeder 250 [45][46]. A patent was issued for this feeder [47]. The feeder utilizes three conveyors to singulate and present parts to a vision system. An underlit window is located at the end of the second conveyor and presents a silhouette image to an overhead camera. The first conveyor is mounted horizontally and above the second. Parts drop from the first conveyor onto the second. The height of the drop can be adjusted for different parts. Bulk parts are stored on the first conveyor. Parts which are in the incorrect orientation or are unreachable by the grippers drop onto a third horizontal conveyor. A bucket lifts parts from the end of the third conveyor and dumps them back onto the first conveyor. Since the feeder is manufactured by Adept, it integrates seamlessly into their AIM programming environment. A variation of the feeder replaced the first conveyor with a vibrating hopper in an attempt to feed parts which would normally tangle (for example, springs). Intelligent Automation Systems markets a flexible feeder called the FPF2000 [48][49]. This feeder uses a bin for holding bulk parts. The bin has a trap door to dump parts onto a vibrating plate. The vibration helps to singulate the parts. Parts fall from the vibrating plate onto a conveyor. Two programmable arms are used to help align parts on the conveyor. A vision system is then used to determine the pose of the parts. The vision system is unique in that it uses a mirror mounted at a 45° angle to obtain two 28 views of each part simultaneously, an overhead silhouette and a side profile. Parts which are not graspable are dropped onto a second conveyor which returns parts to an elevator bin. The elevator bin returns parts to the bulk hopper. A patent has also been issued for this feeder [50]. Robotic Production Methods Inc. (or RPM) has designed several feeders which all utilize a similar technique [51]. All three feeders use vibration to move parts through the vision window. The model 1540 uses a cleated conveyor to lift parts from a bulk hopper. Parts are dumped onto a vibrating plate covered with structured carpet. The nap of the carpet is angled such that it helps push the parts along in a single direction. At the end of the carpeted section, an interchangeable plate with a specialized escapement is used to align parts. The plate can be quickly changed to accommodate different parts. The model 1040 uses a carpeted incline to lift parts from the bulk hopper. Parts then are directed onto a grooved section which uses vibration to move the parts forward to a vision window. While the grooved track partially aligns the parts, the vision system determines their exact location and orientation. Parts which fall from the groove tumble back into the hopper. This feeder is primarily used for cylindrical parts. The model 1224 feeder uses three vibratory sections covered with structured carpet to move parts around an oval track. The first section of track is inclined and lifts parts from a hopper. The second section of track moves parts into a vision area. An overhead camera with overhead lighting is used to determine the pose of parts. A third section of track is used to move unused parts back to the hopper. Applied Robot Technology, LTD. has two different flexible feeders [52]. The first uses a cleated conveyor to lift parts from a bulk hopper. Parts fall onto a series of exchangeable vibrating plates which are tailored to the particular part being fed. The plates help singulate and align parts. A vision system is used to determine the pose of the parts while incorrectly oriented parts are returned to the hopper by a conveyor. A second feeder design uses three conveyors mounted at 45° angles to one another. By 29 varying the speed of the conveyors, parts which begin in an array on the first conveyor are singulated by the time they reach the third conveyor. An underlit vision window is machined in the end of the third conveyor and an overhead camera is used to determine the pose of each part. AT&T uses a flexible parts feeder for feeding fiber-optic parts which are retrieved by an AdeptOne robot and placed into repair kits. A wide variety of kits may be assembled by simply retrieving the correct components. The feeder is constructed from four vibrating elements covered with structured carpeting. The geometry of the feeder is an oval with the parts simply moving around the oval. One end of the feeder is positioned under a camera, where parts are located and retrieved. Parts which are not used are recirculated through the system. The end opposite the vision area has a removable panel which allows for rapid purging of the system to allow for the rapid introduction of different parts. Two additional patents have been issued for vision based flexible parts feeders. The first was issued in 1990 and is the first patent which uses a robot to grasp parts from a 2D vision field [53]. Both the FPF 2000 and Adept’s Flex feeder 250 reference this patent. Parts are dumped from a hopper onto a vibrating plate. The vibration of the plate forces the parts forward while a rotating brush ensures only a single layer of parts are delivered to the vision window. Backlighting is used to illuminate the vision area and an overhead camera is used to determine part pose. A robot is then used to retrieve the parts. In early 1998, Ethicon, Inc. was issued a patent on a needle sorting device [54]. Needles are deposited onto an infeed device in random orientations. A vision system is used to determine the pose of a singulated needle. A robot is used to retrieve the needle and place it onto a precision conveyor for further processing. 2.3 CWRU Design In keeping with the goals of rapid change-over, parts feeders need to deliver a wide variety of parts to the workcell with minimum mechanical alteration. This is 30 accomplished in the CWRU design by the use of three conveyors in a unique arrangement. Figure 2-1 shows two views of the feeding system. In the first, LEGO blocks are going up the inclined conveyor (left) and dropping from the return conveyor (right) into the hopper at the bottom of the inclined conveyor (not shown). In the second, sockets are spilling from the inclined conveyor onto the underlit horizontal conveyor. Figure 2-2 shows a schematic view of the feeding system, Figure 2-3 shows a 3-D CAD view. Figure 2-1: Two Views of the CWRU Flexible Parts Feeding System The three conveyors work together to present parts to the workcell for assembly. The first conveyor, under servo control, is mounted at an inclined angle and is used to lift parts from a bulk hopper. By varying the angle of inclination and motion profile of the belt, a wide assortment of parts are deliverable from the hopper. Some part geometries, spherical for example, have no stable pose which allows them to be carried up an incline. In these cases a different type of belt (e.g. cleated) may be needed. Currently a 12 inch wide, 72 inch long QC 125 series conveyor is being used [55]. Parts slide down a ramp at the end of the inclined conveyor and onto the horizontal conveyor. The horizontal conveyor terminates at a vision window machined in the conveyor within the work envelope of the robot. Lights are installed in this window, under a translucent conveyor belt, to provide backlighting for binary vision. Two layers of translucent white Plexiglas with several layers of photographic diffuser are installed 31 in the window to serve as a bed for the conveyor belt as well as to help produce a more uniform light field. An 8 inch wide, 36 inch long Dorner 3100 series conveyor, under servo control, is used [56]. Figure 2-2: Schematic of the Flexible Parts Feeder This model was chosen because it is 3 inches thick, allowing more room for lights. A 1 inch end roller attachment is used which allows the vision window to be located nearer the end of the conveyor than with the standard end roller. This reduces the feeder’s usage of the robot’s workspace. Figure 2-3: CAD View of the Flexible Parts Feeder 32 Parts which are not in useful orientations or are overlapping are dropped from the end of the horizontal conveyor onto the return conveyor. The return conveyor transports the parts back to the bulk hopper for re-feeding. A 6 inch wide, 8’ long QC 125 series is used. The return conveyor is driven by a fixed speed AC motor. 2.3.1 Servo Control Initially, it was thought that open-loop velocity control would be sufficient for operating the feeders. Unfortunately, since most desired conveyor moves are only several inches, it proved difficult to regulate the distance each conveyor traveled as well as the distance they traveled relative to one another. Therefore, servo control is used for the inclined and horizontal conveyors. A Galil 1500 motion controller is used in this implementation [57]. The horizontal and inclined conveyors are driven by encoder-equipped DC motors. In-line transmissions are used to match the output speed range of each motor to the desired speed range of each conveyor. The feeder control program is stored on the workcell’s VxWorks controller [58] (described briefly in Section 1.3.1) and is downloaded to the motion controller at system start-up over an RS-232 serial line. The function which oversees the download was written in C and includes checks throughout the process. If the process fails or hangs, the workcell controller is able to issue a hard reset to the feeder controller and begin the download again. This make a robust interface which is capable of recovering from errors in the download process. Storing the feeder control code on the workcell controller allows the code to be properly maintained. Revision control procedures may be implemented on the workcell controller to keep track of the current state of the feeder control code. This also allows the workcell controller to download the feeder control code which corresponds with the parts currently being fed. After the control code has been downloaded, the feeder controller communicates with the workcell system controller via two digital I/O lines to 33 advance the feeder. A handshaking scheme is used to ensure that signals are received and acknowledged by each controller. The use of a closed-loop system also allows for other conveyor motions which can improve feeder throughput more. For example, rapidly shaking the horizontal conveyor back and forth can, in some instances, help singulate parts or move them into a more desirable pose. Rapidly shaking the inclined conveyor can also increase the throughput of the feeder. Without shaking, if the angle of the conveyor is not steep enough, too many parts tumble onto the horizontal conveyor making vision and grasping impossible. By shaking the conveyor, parts in marginally stable poses and those that are stacked on top of one another are caused to tumble back into the hopper. This yields a more steady flow of parts through the system than would be the case by simply increasing the angle of the inclined conveyor. The return conveyor runs continuously and is driven by a fixed-speed AC motor. A mechanical relay, controlled by the motor controller, is used to turn it on and off but is only actuated at system start-up and shutdown. 2.3.2 Backlighting/Overhead Binary Vision Part recognition is performed using CCD cameras mounted over the vision window in the horizontal conveyor. Backlighting was selected for many reasons: it is easier to produce uniform backlighting than overhead or oblique lighting; overhead lights may limit the robot’s workspace; conveyors lend themselves to backlighting; reliable binary images are easily produced; and backlighting is less part specific than other lighting methods. Binary images were chosen because grey scale images are more difficult to work with and require more complicated algorithms to determine the pose of a component. Binary images are also faster to process than gray scale images, which is important in a manufacturing system since the assembly cycle time should not be limited by the vision system. 34 2.3.3 Lighting Subsystem The lighting system used in the horizontal conveyors has undergone several iterations. Compact fluorescent lights were initially chosen for several reasons, including size constraints, uniformity of light, frequency spectrum, and cost. In the first design, three standard incandescent light sockets with compact fluorescent adapters, utilizing electronic ballasts, were mounted in the conveyor. 13 W fluorescent bulbs were placed in each adapter. Several problems were discovered with this design. The uniformity of the lighting was inadequate: the center of the window was found to be much brighter than the edges. Adapter life was also a problem. An adapter would often fail within hours of start-up. Heat buildup in the vision window was found to be partly responsible. Figure 2-4: 1st and 3rd Generation Conveyor Lighting Designs In an attempt to improve the uniformity of the backlighting, a second iteration of the design was initiated. Four lights were placed in the conveyor using slimmer mounting adapters and standard fluorescent ballasts. In an attempt to reduce the operating temperature, the ballasts were moved outside the conveyor. While the light was more uniform, heat was still a problem. After 2 - 4 hours, temperatures inside the conveyor reached 250° F. In the third design, two pancake fans were placed inside the conveyor to force air over the bulbs and out vent holes. This lowered the steady state temperature to an acceptable 100° F. Figure 2-4 is a drawing of the 1st and 3rd generation designs. 35 The uniformity of the lighting still needs improvement. Several options are being explored including ultra-thin cool-cathode florescent bulbs or the use of an array of LEDs. A custom woven fiber optic pad is also being examined. Although the price of such systems would be much greater than the current setup, it may be necessary to achieve the desired results. However, before such an expense can be justified, less expensive designs need to be explored. A second possible solution to improve the lighting is to use image subtraction. (This technique was used for feeder testing, discussed in Section 2.4.1.) This technique eliminates the problems of uneven lighting by subtracting the current image from a ‘‘golden’’ image. The golden image is of the feeder’s vision window with no parts. After subtraction, the parts appear as bright objects while the uneven background simply cancels out. After thresholding, a crisp binary image is produced. By periodically updating the golden image, temporal variations in lighting can be compensated. The only drawback to this method is that it requires two frame buffers per feeder (one to hold the golden image and one to acquire the current image into). 2.3.4 Installing the Underlighting System Four underlit conveyors have been constructed and have been installed in the workcell. The conveyors are Dorner 3100 series (with twin-roller tail). They were selected for their thick (3 inch) cross-section. This allowed much more room for the placement of lights into the conveyor than thinner conveyor designs. The diffusing material consists of two layers of white translucent Plexiglas (which also serves as a bedplate on which the belt runs) with a layer of Roscolux #117 Tough 1 2 White sandwiched in-between [59]. The belt was purchased separately from QC Industries and was selected because of its uniform translucent properties. A certain amount of custom machining was necessary to make the conveyor suitable for underlighting. Appendix 7.1.1 contains mechanical drawings of some of the 36 light mounting brackets parts and instructions for conveyor construction. Total machining time to prepare one conveyor is about 5 hours. 2.3.5 Conveyor Belt Selection The selection of the conveyor belt can have a major impact on the function of both the inclined conveyor and the horizontal conveyor. A belt with a high coefficient of friction is needed for the inclined conveyor to provide the force which lifts the parts from the bulk hopper. Parts which will not travel up an inclined conveyor may require a cleated or roughly textured belt to lift them from the bulk hopper. The belt surface also needs to be durable to withstand the parts tumbling in the hopper. The selection of the belt for the horizontal conveyor is also important. The belt needs to be translucent and have a homogeneous construction to permit uniform lighting. Many translucent conveyor belts currently being manufactured have black anti-static fibers woven into them. These fibers can interfere with the vision system and degrade the uniformity of the lighting. 2.4 Testing Methods Various parts were fed and data was collected to quantify feeder performance. The test parts included different-sized nuts, plastic snap rings, plastic sockets, and clear plastic disks (see Figure 2-5; LEGO blocks, also shown, were not tested). During most of the testing, physical parameters of the system (angle of inclination, conveyor belt material, etc.) were not altered. Only the servo control program was changed. One series of tests briefly examined the affect of the angle of the inclined conveyor on the throughput of the system. 2.4.1 Testing Procedure During automated testing, the system was programmed to run continuously. Parts which were retrieved from the feeder were simply dropped onto the return feeder 37 and recirculated. This allowed the feeder to operate unattended for extended periods of time while data was being collected. Figure 2-5: Sample of Parts Fed Using the Flexible Parts Feeder For each individual part tested, the following procedure was used. Parts were dumped into the bulk hopper and the system was started. Before data was collected, the system was run until the inclined conveyor was completely covered with parts. (Collecting data before this would have lowered the resulting throughput of the system.) Data collected included the time duration of all portions of the feeding cycle, the total run time, the number of parts fed, and (when multiple parts were being fed at once) the type of part retrieved. Time data collected encompassed the following times: feeder advance time, vision processing time, robot motion time, and total run time. Section 2.5.1 details a new metric for evaluating the throughput of a flexible parts feeder. The data described above is needed to evaluate the feeder when using the new metric. The entire operation proceeded serially during testing. First the vision system would take a picture and identify a valid part. Next the robot would retrieve the part, then the vision system would look for another part. If a new part was not found, the 38 feeder would advance and the vision system would again search for a part. This serial operation had the effect of reducing the throughput of the feeder by making the robot wait for the vision system to complete its task and the vision system to wait for the robot. Operating the robot and vision system in parallel, while more difficult to program and synchronize, would increase system throughput. However, for testing, the effect of serial operation was minimized by defining the part drop location such that the robot was barely out of the vision window (to minimize robot motion times). During testing the following scheme for conveyor control was followed. Rather than advancing both conveyors together, an approach was taken which would ‘‘load’’ the horizontal conveyor at regular intervals. This was accomplished by running the horizontal conveyor rapidly for a distance approximately equal to its length. At the same time the inclined conveyor would be advanced a lesser amount. Then, the horizontal conveyor would be indexed roughly according to Equation (2.1) to bring more parts into the vision window. Advance Distance = Width of Vision WindowMajor Part Dimension (2.1) After the entire length of the horizontal conveyor had been examined, the ‘‘loading’’ process would begin again. The inclined and horizontal conveyors were shaken only after a ‘‘loading’’ operation had occurred. To increase the speed and reliability of the vision system, image subtraction was used. In this technique, a pristine image of the feeder with no parts is acquired at system start-up, then each image acquired after that is subtracted from the ‘‘golden’’ image to produce a clear, consistent binary scene. This operation was performed before any other processing began. 2.4.2 Tests Performed There were four different tests performed. The first test consisted of simply running the system and collecting data to determine system throughput. The second was 39 a test to examine the effect of the angle of the inclined conveyor on system throughput. The third was a test of the effect of altering one aspect of the system and examining the resulting throughput. The last was an endurance test to determine the robustness of the system over extended periods of time. The description of the parts tested and the feeder control strategy used is discussed in the subsequent sections. Results appear in Section 2.5. 2.4.2.1 System Throughput Tests The purpose of these tests was to determine the throughput of the system for a variety of different parts. During this phase of testing, no physical parameters of the feeder were altered. Software that controlled the movement of the feeder belts was changed depending on the parts being fed. In all cases, the system was started and run for approximately six hours while data was collected. Minimum time to feed a part, maximum time to feed a part, average time to feed a part and the standard deviation of the time to feed a part were calculated. 2.4.2.2 Angle Dependence Test The purpose of this test was to examine the effect on the overall throughput of the system of the angle of the inclined conveyor. The throughput of the feeder should be 0 when the inclined conveyor is too steep for any parts to be removed from the bin. As the conveyor angle is lessened, there should be an angle that will maximize the throughput of the system. The test was run with the combination of nuts and bulb retainers in the hopper. Four different angles of the inclined feeder were tested. The system was run for about two and a half hours at each angle setting. During testing, the inclined conveyor was not shaken (as it was during the previous tests with mixed nuts and retainers). 2.4.2.3 Slow Robot Test The purpose of this test was to determine the effect on the system of running one component of the feeder at a different rate. This could simulate a variety of situations. 40 For example, because of advances in computer technology, vision hardware continues to get faster and cheaper. The question then arises, How will the throughput of the feeder be affected by replacing the vision system with a faster one? As another example, one could envision replacing the robot with another type of part retrieval mechanism. Knowing the speed of the new mechanism, What can be said about the speed of the feeder using that mechanism? The second goal was to determine if there is an interdependence between the throughput of each sub-system. For instance, does the throughput of the physical feeder (the number of graspable parts presented to the vision window) depend on the speed at which the robot is operated. Mixed nuts and plastic sockets were again used during this test. The physical setup of the system was the same as that used for the throughput test. In that way, the data could be directly compared to the data generated during that test. 2.4.2.4 Endurance Test The purpose of the endurance test was to determine the reliability of the system over time and to determine the robustness of the system to part jams. Jammed parts are a major source of trouble and downtime for bowl feeders. Mixed nuts and plastic sockets were used for this test. The feeder system was setup physically to match the first test. Some revision to feeder control code and the vision processing code was performed to increase the throughput of the system. 2.4.3 Part Description and Feeding Strategy The following sections describe the parts which were used for testing, the testing procedure, and the method of conveyor motion used during testing. 2.4.3.1 Nuts Two different sized hex nuts, 3 8 inch and 5 16 inch, were tested. A small parallel jaw gripper (Section 5.4.4.17) was designed to manipulate the nuts, therefore little clearance was needed. The hex design and rotational invariance of the nut allows for 3 41 possible locations for pickup (since both the gripper and part are symmetric, a rotation of the gripper of ±180° about the pick location does not change the gripper clearance, therefore only 3 unique pick locations exist). Both the inclined and horizontal conveyors were shaken during feeding. Figure 2-6 shows the nuts. The number of nuts in the bin was counted by mass with the results shown in Table 2-1. Part Type 38 Inch Nuts Inch Nuts 5 16 Number of Parts 1000 1000 Number of Parts by Percentage 50% 50% Table 2-1: Number of Parts in the Hopper Figure 2-6: 3 8 Inch and 5 16 Inch Hex Nuts 2.4.3.2 Plastic Snap Rings The plastic snap rings are approximately 1.75 inches in diameter with a circular cross section of 1 8 of an inch. The gripper grasps the rings from their inside with a spreading motion, therefore no clearance between the parts was needed. A small amount of singulation was necessary for locating a part. Only the inclined conveyor was shaken during feeding. Shaking the horizontal conveyor decreased the throughput by causing singulated rings to slide together, making vision segmentation difficult. Figure 2-7 shows the snap rings. 42 2.4.3.3 Plastic Sockets The plastic sockets are approximately 3 4 of an inch on a side by 1 inch long. They have a hollow center and are closed on one end. The same gripper that was used to manipulate the nuts was also used to manipulate the sockets, therefore some clearance was needed for pick-up. Both the inclined and horizontal conveyors were shaken during feeding. Figure 2-8 shows the sockets. Figure 2-7: Snap Rings Figure 2-8: Plastic Sockets 43 2.4.3.4 Plastic Disks The transparent plastic disks are approximately 21 8 inches in diameter and 1 8 of an inch thick. A thin black band was marked around the perimeter so that the vision system could locate the parts. A suction cup gripper was used to manipulate the disks, therefore no clearance was necessary. A small amount of singulation was necessary for locating each part. As with the snap rings, only the inclined conveyor was shaken during feeding. Figure 2-9 shows the plastic disks. Figure 2-9: Clear Plastic Disks 2.4.3.5 Nuts and Plastic Sockets Mixed While not a new part, the combination of feeding both nuts and plastic sockets was also tested. The parallel jaw gripper used for feeding mixed nuts was also used to retrieve the mixture of nuts and sockets. Both the inclined and horizontal conveyors were shaken during operation. The number of parts in the bin was tallied. The sockets were counted by hand while the number of nuts were determined by mass. Table 2-1 shows this. 44 Part Type Number of Parts Inch Nuts Inch Nuts Sockets 1000 1000 1145 38 5 16 Number of Parts by Percentage 31.8% 31.8% 36.4% Table 2-2: Number of Parts in the Hopper 2.5 Results / Discussion 2.5.1 A Metric for Feeder Evaluation Reporting results on the throughput of a flexible parts feeder requires a redefinition of the standard parameters used previously to quantify feeders. The standard performance criterion used in the evaluation of bowl feeders is the number of parts deliverable by the feeder in a certain amount of time (usually specified in minutes). This is accomplished by loading the bowl with parts, turning the system on, and counting the number of parts exiting the system over time. However, this approach is not valid when examining a flexible feeder. Unlike a bowl feeder, a flexible feeder is composed of several major components (a mechanism to present quasi-singulated parts to a vision system, a vision system to determine the location of graspable parts, and a mechanism for removing those parts from the system). Simply stating a number as the throughput of the feeder does not give any information about the relative speed of each system component. As time progresses, it should be expected that robots will get faster and more accurate and vision systems will provide more processing power at lower cost. To understand how the evolution of each component of the system will affect the overall throughput, each part must be understood. To report on the throughput of the feeder the following four different parameters will be used. 1. 2. 3. 4. Overall throughput Throughput of the parts presentation system Throughput of the vision system Throughput of the parts removal system 45 The overall throughput is the standard feeder parameter. This is a measure of how many parts are put in place for pick and use. It depends on a combination of the remaining three parameters. Constructing the system throughput from the component throughputs will be examined in Section 2.5.10.2. The throughput of the parts presentation system is a measure of the physical capability of the system to present parts to the vision system. This is calculated as the total number of parts removed from the feeder for use divided by the total time spent indexing the presentation system. On a per part basis, the feeder advance time was often 0 since multiple parts could fit into a single vision window. This can serve as an upper bound for the overall throughput of the feeder since it is not inclusive of the time spent by the vision system in determining the location of parts or by the retrieval mechanism in removing those parts. For example, if a feeder index required 1 second to complete, and ten parts were then retrieved from the vision window before an additional index was required, the resulting throughput would be 10 parts per second (or 600 parts per minute). In this system, the part presentation mechanism is the series of conveyors described in Section 2.3. The throughput of the vision system is an indication of the speed of the vision system in locating candidate parts. Many factors can affect the speed of the vision system. These include the speed of the processor used by the vision board, the size of the image that is being examined, the complexity of the image (how many parts are in the image), and the type of processing needed to correctly identify a part. In the CWRU Flexible Feeder, the vision system was manufactured by Adept and programmed using their proprietary V+ language [60]. The final parameter is the throughput of the part removal system. This is an indication of how fast the parts can be removed from the window. In this system, an Adept 550 tabletop robot is used. The location used to drop off the retrieved part can 46 have a large impact on the throughput. For testing, it is important to define a drop off location as close to the vision window as is possible to minimize the robot motions. 2.5.2 Data Collection and Analysis Before an examination of the results is undertaken, an explanation of the methods of data collection and subsequent analysis is necessary. As previously stated, data collected included the times to complete the various tasks. This data was then saved to a file for further processing and off-line analysis. In the control code, timers were carefully coded to determine the times taken by each part of the feeding process. Extra care was taken to ensure the feeder advance time and the vision time were separated even though the physical process was often intertwined (e.g. feeder advance, picture, feeder advance, picture, ...). The following pseudo code shows this. It is explained in the following paragraph. time_total_feed=0; time_total_pic=0; time_total_robot=0; time_start_pic = get_time(); while(! FIND A PART) { time_start_feed = get_time(); ADVANCE THE FEEDER time_total_feed += get_time()-time_start_feed; } time_total_pic = ((get_time()-time_start_pic)-time_total_feed); time_start_robot = get_time(); RETRIEVE THE PART time_total_robot = get_time()-time_start_robot; The function ‘‘get_time()’’ returns the current time in seconds. First, the three timer variables are set to 0. Next, the start time of the vision processing is noted. If a part was not found, the feeder start time is noted and the feeder instructed to advance. After the feeder has advanced, the total feed time is recorded. If the feeder needs to be advanced multiple times, the time for all the advances combined is totaled. After a part has been located, the total picture time is computed. It is the total time since the vision processing started minus the time spent advancing the feeder. Finally, the robot time is computed. After each part was retrieved, the data was written out to a file. 47 The first manipulation of the data file involved the removal of spurious data points. On occasion, the robot would run into a part on the feeder and its motor would stall. Since no error recovery code was being executed, the system would have to be restarted manually. This led to a large robot time for that part. That large time did not represent normal operation so it was removed. The second reason for post processing was to add the total time per part column. In the original data, only the total run time was recorded. The time per part was recovered from this data by subtracting the current total time from the previous total time. The format of the resulting file was the following. 12 13 14 15 16 3 3 3 1 2 43.498200 46.268000 48.778600 51.548200 54.239000 4.300400 2.769800 2.510600 2.769600 2.690800 0.550000 0.000000 0.000000 0.000000 0.000000 2.180000 0.850000 0.830200 0.930200 0.820200 1.565600 1.915000 1.675600 1.836600 1.866000 The first number is the total parts fed. The second column is the part type, this data appears only when multiple parts were being fed at once. The third column is the total run time minus the pause time§. The fourth column is the total time to acquire that part. The fifth column is the feeder advance time for that part. A zero in this column indicates that the feeder did not have to advance to find another valid part. An advance was only necessary when no valid part was found in the vision window. The sixth column is the vision processing time for the part. The final column is the robot motion time for the part. After the spurious data was removed, all further analysis was performed using Matlab. The first task was to convert the data from a time per part form to parts per minute (PPM). This was accomplished by moving a five-minute wide window over the data and determining the average PPM inside that window (the algorithm used appears in Appendix 7.1.2). This produced a data set that is composed of five columns. The first ___________________________________________________________________________________ § The control software had the ability to halt the system and them allow the operation to be resumed at a later time. The time spent in a paused state was recorded and subtracted from the overall system run time such that the reported throughput of the system was not affected by the length of time paused. The quantity ‘‘pause time’’ is the amount of time the system was in a paused state. 48 column is the time of the data point. The time was taken as the midpoint of the window which was used to create the data point. The second column is the total throughput of the feeder in PPM. The third column is the throughput of the conveyor system in PPM. The fourth column is the throughput of the vision system in PPM. The final column is the throughput of the robot in PPM. This data was then used to generate the results reported below. The act of converting the data from time per part to parts per time had the effect of smoothing the data. Experimenting with larger sized windows had the effect of producing even smoother data sets. Five minutes was chosen as a compromise window size so that any short term behavior of the system would not be missed due to undue smoothing of the original data. 2.5.3 Throughput Evaluation There were five different parts fed during testing: snap rings, plastic disks, nuts (both 5 16 inch and 3 8 inch) only, plastic sockets only, and a mix of nuts and plastic sockets (parts retrieved in no particular order). Further data was collected with the mix of nuts and sockets by specifying that the parts be retrieved in a particular order (e.g. get a 3 8 inch nut, then a 5 16 inch nut, then a socket, then a 3 8 inch nut, . . . ) and then that only a single type of part be retrieved (the other two parts were simply ignored by the vision system). 2.5.3.1 Snap Rings The first part tested was the plastic snap rings. The average and standard deviation of the throughput is shown in Table 2-3. Average (µ - ppm) Std Deviation (σ) Overall Throughput 12.65 0.49 Conveyor Throughput 51.51 4.80 Vision System Throughput 31.94 1.13 Robot Throughput 35.60 0.53 Table 2-3: Throughput of Snap Rings in the Flexible Feeder 49 Figure 2-10 shows four graphs. The first is the overall throughput, the second is the throughput of the conveyors, the third is the throughput of the vision system, and the fourth is the throughput of the robot. Examining the graphs of the throughput of each component, some interesting insights can be gained. It can be clearly seen that the overall, the vision system, and the feeder throughput graphs have a definite downward trend over time. The robot throughput graph, however, does not display this trend. This can be explained by examining the parts themselves. The snap rings, as will be further discussed in chapter 4, are a poorly designed part for flexible feeding because of their tendency to tangle. Average Parts / Minute − Overall Average Parts / Minute − Feeder 14 65 60 Parts / Minute Parts / Minute 13 12 11 10 9 55 50 45 40 35 0 100 200 Minutes 300 30 400 0 Average Parts / Minute − Vision 100 200 Minutes 300 400 Average Parts / Minute − Robot 37.5 34 37 36.5 Parts / Minute Parts / Minute 32 30 28 26 36 35.5 35 34.5 24 34 22 33.5 0 100 200 Minutes 300 400 0 100 200 Minutes 300 400 Figure 2-10: Feeder Throughput for the Plastic Snap Rings As the parts tumble in the bulk hopper, they begin to tangle and form clumps. This clumping reduces the ability of the system to singulate parts on the horizontal conveyor and thereby decreases the efficiency of the system. The vision system shows a reduction in throughput because it must take more pictures of invalid parts before finding a good 50 part. This increases the overall amount of processing required per good part. The robot, in contrast, does not show this trend since its throughput is solely determined by the time required for the robot to grasp a part and not by the ability of the rest of the system to find a candidate part. 2.5.3.2 Plastic Disks The next parts tested were the plastic disks. These were the largest parts tested and accordingly showed the lowest throughput. (Section 2.5.7 further discusses part size vs. throughput.) To overcome the problem of the disks being clear (and therefore not visible to the vision system), a black band was painted around the edge of the disk with a felt-tip marker. (Chapter 4 discusses methods for dealing with translucent parts.) Table 2-4 shows the data that was computed for the disks while Figure 2-11 shows the throughput of the system and its components. Average Parts / Minute − Feeder 45 12 40 Parts / Minute Parts / Minute Average Parts / Minute − Overall 13 11 10 9 8 35 30 25 0 100 200 20 300 0 100 Minutes 200 300 Minutes Average Parts / Minute − Vision Average Parts / Minute − Robot 38.5 35 Parts / Minute Parts / Minute 38 30 25 20 37.5 37 0 100 200 Minutes 300 36.5 0 100 200 Minutes Figure 2-11: Feeder Throughput for the Plastic Disks 300 51 Average (µ - ppm) Std Deviation (σ) Overall Throughput 10.52 0.80 Conveyor Throughput 31.71 4.00 Vision System Throughput 27.40 2.52 Robot Throughput 37.57 0.30 Table 2-4: Throughput of Plastic Disks in the Flexible Feeder 2.5.3.3 Nuts: 5 16 Inch and 3 8 Inch The next test was performed using a combination of 5 16 inch and 3 8 inch hex nuts. There were approximately 1000 of each size nut in the bin. In the first test, the parts were retrieved from the feeder in no specific order and information about the current part being retrieved was not recorded. In a second test (conducted for reasons specified in Section 2.5.8), the parts were also fed in no specific order, however, the type of part being retrieved was also recorded. Table 2-5 shows the results of the first test. Table 2-6 and Table 2-7 show the results of the second set of tests. For the case of the throughput for each part individually, only the overall throughput and robot motion throughput of each part was computed. Individual throughput is the throughput of a single type of part when multiple parts are in the hopper and being fed. For example, in Table 2-6 below, the throughput of the system when feeding 5 16 inch and 3 8 inch hex nuts together was just over 21 parts per minute. Examining the same data but only counting when a 3 8 inch nut was retrieved yields the individual throughput of that part; from Table 2-7, just under 10 parts per minute. It was impossible to determine the effect of each sub-system on the throughput of each part because the process of the interaction between the sub-systems. For example, consider determining the throughput of the feeder for each part. While a single advance may bring multiple parts into the vision window, only the first part retrieved was assigned the time for the entire advance. It would therefore be possible for one part to be assigned little feeder motion time if it happened to not be the first part retrieved after a feeder move. Likewise with the vision system; when the feeder would advance, two pictures would be taken, one to determine there were no parts in the vision window and a second to determine the location of a part after the feeder advance. It is possible, 52 however, to determine the robot motion time, as it was completely independent of the feeder motions and vision processing. Average (µ - ppm) Std Deviation (σ) Overall Throughput 19.50 0.95 Conveyor Throughput 189.34 48.46 Vision System Throughput 59.73 5.67 Robot Throughput 34.92 0.41 Table 2-5: Throughput of Hex Nuts in the Flexible Feeder - Test 1 Average (µ - ppm) Std Deviation (σ) Overall Throughput 21.37 0.43 Conveyor Throughput 237.58 34.62 Vision System Throughput 77.78 4.56 Robot Throughput 33.89 0.31 Table 2-6: Throughput of Hex Nuts in the Flexible Feeder - Test 2 Inch Nuts Average (µ - ppm) Std Deviation (σ) 5 16 Inch Nuts Average (µ - ppm) Std Deviation (σ) Overall Throughput Robot Throughput 9.89 0.46 33.95 0.21 11.48 0.48 33.84 0.16 38 Table 2-7: Individual Nut Throughput when Feeding Both Nuts Figure 2-12 shows four graphs of the average throughput of the system for test 1. Figure 2-13 shows the overall throughput of the system and the throughput of the individual parts for test 2. The solid line represents the 3 8 inch nuts and the dashed line represents the 5 16 inch nuts. The individual throughputs are shown for a shortened time period and were generated using a window of 30 minutes length (in contrast to the overall throughput, for which a 5 minute window was used) to more clearly show the relationship between the feeding rates of the two sizes of nuts. 53 Average Parts / Minute − Overall Average Parts / Minute − Feeder 22 350 300 Parts / Minute Parts / Minute 20 18 16 250 200 150 100 14 12 50 0 100 200 Minutes 300 0 400 0 36.5 70 36 65 35.5 60 55 50 45 40 200 Minutes 300 400 Average Parts / Minute − Robot 75 Parts / Minute Parts / Minute Average Parts / Minute − Vision 100 35 34.5 34 33.5 0 100 200 Minutes 300 33 400 0 100 200 Minutes 300 400 Figure 2-12: Feeder Throughput for the 5 16 Inch and 3 8 Inch Hex Nuts Average Parts / Minute − Overall Average Parts / Minute − Overall 23 13 12 Parts / Minute Parts / Minute 22 21 20 19 11 10 9 0 200 400 600 Minutes 800 1000 8 0 100 200 Minutes 300 400 Figure 2-13: Throughput of the Overall System and Individual Parts An interesting feature can be seen in the overall throughput graph (Figure 2-12). A drastic drop in the throughput of the system can be seen at approximately 40 minutes. This can be explained by the number of parts in the system. The 2000 total nuts were not enough to fully fill the hopper. The dip occurs when there was a portion of the horizontal conveyor which had few parts on it. Running the system helped distribute the parts, so 54 after the first dip, the overall throughput of the system became more steady. Examining the throughput of the conveyors shows another interesting result of too few parts to fill the system. At start up, there is a wide oscillation in the throughput of the system. Over time, as the parts become more evenly distributed throughout the system, the throughput begins to approach a steady state. Several interesting features should be noted in Figure 2-13, the results of the second test. This test occurred approximately a week after the first test; during that week, the system was run for over 60 hours. This had the effect of thoroughly mixing and evenly distributing the parts throughout the feeder. This can be seen by the relative consistency of the throughput of the system over time and the improved throughout numbers. Next, it is interesting to note the interaction of the two different-sized parts in the system. This can be seen in the right-hand graph of Figure 2-13. As the throughput of one of the parts increases, the corresponding throughput of the other part decreases. This is logical. Since the size of the presentation window is constant it follows that if more of one part is present then less of the other part will be present. What is not anticipated is the consistency of the variation. This type of behavior has been seen feeding a mixture of plastic sockets and nuts as well and will be discussed further in Section 2.5.8. Finally, the relative throughput of each part will be discussed. Since there was an equal number of parts placed in the bin, it might be expected that the average feed rate for each part would be the same. However, as seen in Figure 2-13, the parts fed at different rates. A possible explanation for this behavior is the relative stability of the parts. It was observed that the 3 8 inch nuts were more likely to stand on their sides (an undesirable pose) after being spilled onto the horizontal conveyor. This was due to the 3 8 inch nuts being slightly thicker than the 5 16 inch nuts and, therefore, slightly more stable on edge. To determine if this was causing the difference in throughputs, another test was conducted. This test used the same operating parameters as the previous tests, 55 except that a pause was programmed into the controller to halt the system after each part was retrieved. A button on the robot’s manual control pendant was programmed to cause the system to retrieve another part when pressed. This allowed the number of parts on the horizontal conveyor to be manually counted during operation. Data was collected after each increment of the inclined conveyor which included the number of 3 8 inch and 5 16 inch nuts on the horizontal conveyor and the number of each type of nut that was standing on edge. Then, as the system operated, the type of part being retrieved was noted. Data was collected for a total of 50 increments of the inclined conveyor. The following parameters were then determined. • Total number of each part spilled onto the horizontal conveyor during testing • Percentage of each part on the horizontal conveyor which was standing on edge after an inclined conveyor increment (note, sometimes the act of advancing the horizontal conveyor would cause parts initially on edge to fall on their side) • Percentage of each part on the horizontal conveyor removed by the robot (parts fed) • Overall percentages of each type of part removed by the robot (parts fed) • Average and standard deviation of the number of parts on the horizontal conveyor after an increment of the inclined conveyor Table 2-8 shows the results of this analysis. It is clear that the 3 8 inch nuts are more prone to standing on edge on the horizontal conveyor than are the 5 16 inch nuts (21% vs. 10.4%). It can also be noted that the percentage of parts removed by the robot is higher for the 5 16 inch nuts (77.1% vs. 69.5%). These results agree with those seen in test 2 described above. Finally, a table was constructed that shows the percentage (of the total) of each size nut on the horizontal conveyor, the percentage (of the total) of each size nut fed, and the percentage of the average of each nut fed during the second test. 56 Overall Total Parts on Horizontal Conveyor 1703 Total Parts on Edge after Inclined Conveyor Advance 265 Total Parts Fed 1250 Percentage Parts on Edge 15.6 % Percentage Parts Fed 73.4 % Average of Parts on Horizontal Conveyor after 34.1 Inclined Conveyor Advance Std Deviation of Parts on the Horizontal Conveyor 12.0 after Inclined Conveyor Advance 38 ’’ Nuts 822 173 571 21.0 % 69.5 % 16.4 5 16 ’’ Nuts 881 92 679 10.4 % 77.1 % 17.6 6.8 6.9 Table 2-8: Statistical Data from Manual Nut Test 38 Inch Nuts Inch Nuts 5 16 Percentage of Total Parts 48.3 % 51.7 % Percentage of Parts Fed: Manual Test 45.7 % 54.3 % Percentage of Parts Fed: Test 2 46.3 % 53.7 % Table 2-9: Percentage of Each Type of Nut Fed From Table 2-9, it is clear that nearly the same number of parts are being spilled onto the horizontal conveyor from the inclined conveyor (48.3% vs. 51.7%). The slight deviation from 50% each can be associated with the overall throughput of each part as described in Figure 2-13. Since only 50 advances of the inclined conveyor occurred, not a large enough number of parts were fed to average out the variation in the throughput of each part over time. The percentages of parts fed during both the manual test and test 2 correlate well. Therefore, the differences in the throughput of each size nut can be attributed to the relative stability of each size nut as shown in Table 2-8 and Table 2-9. This can be written mathematically as: %_Overall_Throughput_Parti = %_Parti_in_Correct_Pose ∑ n i=1 %_Parti_in_Correct_Pose (2.2) where percent overall throughput is the percentage of all parts retrieved of type i. The percent parti in correct pose is the percentage of all parts of type i which, when dumped onto the horizontal conveyor, land in a favorable pose. The sum of the percentages of all parts in the correct pose is the sum of the percentages of all parts of each type which, when dumped onto the horizontal conveyor, land in a favorable pose. n is the total 57 number of unique parts in the bulk hopper. The utility of this equation is that the percent of parts in favorable poses may be determined solely from the geometry of the part and the material from which it is constructed using various techniques [61]. This would allow the relative throughput of each part when multiple parts are fed in a single feeder to be determined without empirical testing. Examining the data from the previous test using Equation (2.2) is as follows. The number of unique parts in the hopper, n, is 2 (3 8 and 5 16 inch nuts). The percentage of 3 8 inch nuts in favorable poses can be determined from Table 2-8. The percent of 3 8 inch nuts on edge is 21%, therefore the percent in the correct pose is 1 - 21% = 79%. In the same manner, the favorable 5 16 inch nuts can be determined, 1 - 10.4% = 89.6%. Applying these numbers to Equation (2.2) yields 3/8 Inch Nuts: %_Throughput = .79 = 46.9% (.79 + .896) 5/16 Inch Nuts: %_Throughput = .896 = 53.1% (.79 + .896) To test the general applicability of this formulation, two additional tests using mixed nuts ans sockets were conducted. One throughput test was conducted with an equal number (1000) of each type of part in the bulk hopper. The system was operated for 71 2 hours while throughput data was collected. A second manual test was also conducted. A total of 50 conveyor advances were analyzed, counting the total number of parts on the horizontal conveyor, the number of parts in the correct retrieval orientation, and the number of parts fed. This data was then examined as in the previous manual test, with the results shown in Table 2-10 and Table 2-11. 58 Total Parts on Horizontal Conveyor Total Parts on Edge after Inclined Advance Total Parts Fed Percentage Parts on Edge Percentage Parts Fed Average of Parts on Horizontal Conveyor after Inclined Advance Std Deviation of Parts on the Horizontal Conveyor after Inclined Advance Overall 1939 374 1412 19.3 % 72.8 % 38.78 7.66 ’’ Nuts 801 170 634 21.2 % 79.2 % 16.02 38 5.16 ’’ Nuts 823 102 613 12.4 % 74.5 % 16.46 Sockets 315 102 165 32.4 % 52.4 % 6.30 4.41 2.89 5 16 Table 2-10: Statistical Data from Manual Nut / Socket Test Inch Nuts Inch Nuts Sockets 38 5 16 Percentage of Total Parts 41.3 % 42.4 % 16.3 % Percentage of Parts Fed: Manual Test 44.9 % 43.4 % 11.7 % Percentage of Parts Fed: Throughput Test 42.8 % 45.5 % 11.7 % Table 2-11: Percentage of Each Type of Nut and Socket Table 2-10 shows that about the same percentage of nuts landed on the horizontal conveyor standing on edge as in the first manual test. The sockets had greater probability of landing in an unfavorable orientation than either size hex nut. It can also be seen that while approximately the same number of each size hex nut was spilled onto the horizontal conveyor (801 vs. 823), there were far fewer sockets presented (315). This is in spite of the fact that there were the same number of each type of part in the bulk hopper. Table 2-11 shows the difference in the percentage of each part spilled onto the horizontal conveyor. In addition, the manual test data show about the same percentage of each type nut being retrieved while the throughput test shows a higher percentage of the 5 16 inch nuts being retrieved. This is most likely due to the duration (50 conveyor advances) of the manual test not being long enough to average out the oscillations in feeder throughput. Finally, examining the applicability of Equation (2.2) to this second test shows that it fails. 59 3/8 Inch Nuts: %_Throughput = .788 = 33.7% (.788 + .876 + .676) 5/16 Inch Nuts: %_Throughput = .876 = 37.4% (.788 + .876 + .676) Sockets: %_Throughput = .676 = 28.9% (.788 + .876 + .676) This is clearly not in agrement with Table 2-11 which shows percent throughput from the manual test as 44.9%, 43.4% and 11.7% for the 3 8 inch nuts, 5 16 inch nuts, and sockets respectively. Examining the data using weighted percentages for each part type (weighted with the actual number of parts spilled onto the horizontal conveyor) produced better results, however, they were still incorrect by as much as 5% (40%, 46%, and 14% for the 3 8 inch nuts, 5 16 inch nuts, and sockets respectively). If it were possible to determine the percentage of each type of part on the horizontal conveyor during feeder operation without empirical tests, then Equation (2.2) could still be useful as a first approximation for determining relative part throughput when feeding multiple parts at once. Further work is required to determine when Equation (2.2) can be applied to a system and under what conditions it fails. 2.5.3.4 Plastic Sockets Plastic sockets were tested next. Table 2-12 shows the results of the feeder testing. Average (µ - ppm) Std Deviation (σ) Overall Throughput 18.56 0.69 Conveyor Throughput 111.07 17.43 Vision System Throughput 69.40 3.80 Robot Throughput 33.15 0.33 Table 2-12: Throughput of the Plastic Sockets in the Flexible Feeder Figure 2-14 shows four graphs of the throughput of the entire system and the system components. 60 Average Parts / Minute − Feeder 180 20 160 Parts / Minute Parts / Minute Average Parts / Minute − Overall 21 19 18 17 16 140 120 100 80 0 100 200 300 Minutes 400 60 500 0 Average Parts / Minute − Vision 400 500 34.5 80 34 Parts / Minute Parts / Minute 200 300 Minutes Average Parts / Minute − Robot 85 75 70 65 33.5 33 32.5 60 55 100 0 100 200 300 Minutes 400 500 32 0 100 200 300 Minutes 400 500 Figure 2-14: Feeder Throughput for the Plastic Sockets Examining the graph showing the throughput of the conveyors alone over time reveals oscillations from 80 to 140 parts per minute. This can be explained by examining the number of parts in the bin. As with the nuts, there were not enough sockets to fully fill the hopper of the feeder, so as a result, the throughput of the system oscillated. The oscillations in the throughput did not tend to settle as was the case with the nuts because the sockets were not as stable on the inclined conveyor as were the nuts. This had the effect of causing the sockets to tend to go up the inclined conveyor in groups rather that in a more constant stream. This prevented the system from reaching a steady state condition. 2.5.3.5 Mixed Nuts and Plastic Sockets The final part mix tested for throughput was a combination of 5 16 inch and 3 8 inch hex nuts and plastic sockets. This test was the most interesting for two reasons. First, it was desired to examine the throughput of multiple parts being fed on the same 61 feeder. Would one or two parts dominate the feeder output while the others remained starved, would the parts feed at a rate equal to their relative quantities on the hopper, or would something else occur? Second, the parts themselves were of different material and geometry; the nuts were steel and had a length / diameter ratio of less than one while the sockets were light plastic and had a length / diameter ratio greater than one. Two different sets of results were generated. The first was the throughput of the system as a whole, without regard to the particular part being retrieved. The second examined the throughput of each part individually as the system retrieved the parts without regard to order. Both results were generated from the same set of raw data. For the case of the throughput of each part individually, only the overall throughput and robot motion throughput of each part was computed as was described in Section 2.5.3.3. This test also serves as a basis against which to compare tests which explored changing the physical parameters of the system (e.g. the angle test and slow robot test). Table 2-13 shows the throughput results for the system as a whole and Table 2-14 shows the throughput of each part individually while all parts were being fed. They also show the results of a second, identical feeder test conducted approximately a week and a half after the first (for reasons discussed in Section 2.5.8). TEST 1 Average (µ - ppm) Std Deviation (σ) TEST 2 Average (µ - ppm) Std Deviation (σ) Overall Throughput Conveyor Throughput Vision System Throughput Robot Throughput 20.82 0.52 254.85 33.61 68.90 4.70 34.03 0.35 20.79 0.55 291.74 35.68 66.98 5.14 33.87 0.34 Table 2-13: Throughput of the System Feeding All Parts 62 Inch Nuts Average (µ - ppm) Std Deviation (σ) 5 16 Inch Nuts Average (µ - ppm) Std Deviation (σ) Plastic Sockets Average (µ - ppm) Std Deviation (σ) Overall Throughput TEST 1 Robot Throughput Overall Throughput TEST 2 Robot Throughput 7.64 0.39 34.05 0.24 7.42 0.50 33.84 0.21 8.50 0.99 34.13 0.18 8.22 0.67 33.78 0.25 4.66 0.90 33.74 0.28 5.15 0.74 34.00 0.26 38 Table 2-14: Individual Part Throughput When All Parts Fed Figure 2-15 shows several graphs of the throughput of the system. The top left graph is the overall throughput of the system from the first test. The overall throughput results of the second test appear in the top right graph. The lower left graph shows the individual throughput of each parts during the same run period. The lower right shows the individual throughput for the second test. In both lower graphs, the dashed line represents 3 8 inch nuts, the solid line represents 5 16 inch nuts, and the dash-dot line represents sockets. To make the data clearer, both lower graphs were generated using a window of 30 minutes length; the upper graphs used a 5 minute window. Between gathering the first data set and the second data set, about 60 hours of operation (feeder testing with the mixture of nuts and sockets in the hopper) were logged on the system. This is important for several reasons. First, when examining the top graphs, it can be seen that the throughput of the system was nearly the same after an extended amount of operation. This shows the system does not take a long period of time to reach a consistent overall state of operation. Second, when examining the lower graphs, it is clear that further part mixing has occurred between the first and second data sets. This can be seen by the size of the oscillations of the individual parts over time. In the first test (lower left graph), there is more oscillation in the throughput of each part as compared to the second test (lower right). This can also been seen when 63 comparing the standard deviation (except for the sockets) of two of the parts between the first and second data sets. Average Parts / Minute − Overall − Test 2 23 22 22 Parts / Minute Parts / Minute Average Parts / Minute − Overall − Test 1 23 21 20 19 18 21 20 19 0 100 200 Minutes 300 18 400 0 12 10 10 8 6 4 2 200 Minutes 300 400 Individual Parts − Test 2 12 Parts / Minute Parts / Minute Individual Parts − Test 1 100 8 6 4 0 100 200 Minutes 300 400 2 0 100 200 Minutes 300 400 Figure 2-15: Overall and Indiviual Throughput with Multiple Parts in the Feeder Further tests were also run with the mixture of nuts and sockets in the feeder. The system was tested by feeding the parts in a particular order rather than simply grasping the next part found by the vision system. This reflects a typical assembly scenario where the workcell might require parts in a specific order. The order specified was: 3 8 inch nut, 5 16 inch nut, socket, 3 8 inch nut, ... . The second test performed was to feed a single part with all the parts in the hopper. This indicates the throughput of the system when only one part is desired, but many parts are present in the hopper. This was also done so that a comparison could be made with the throughput of the system when only a single part was in the hopper. Table 2-15 shows the throughput of the system when the parts were fed in order and Table 2-16 shows the throughput of each individual part when fed with the hopper contained all the parts. 64 Average (µ - ppm) Std Deviation (σ) Overall Throughput 15.47 1.38 Conveyor Throughput 119.40 26.31 Vision System Throughput 37.81 5.44 Robot Throughput 34.25 0.35 Table 2-15: Throughput of the System Feeding Parts in a Specific Order There are several interesting items that can now be examined. These include: • A comparison between the overall system throughput and the throughput of each part being individually fed while all the parts are in the bin. • A comparison of the throughput of the parts fed in any order versus the parts fed in a specific order. • An examination of the relative throughputs of each part as all the parts were being fed in any order. • A comparison between the throughput of the sockets being fed individually with all the parts in the bin and the throughput of the sockets being fed with only themselves in the bin. • A comparison between the throughput of the system feeding nuts with and without the sockets in the bin. • An examination of the throughput of each part versus the relative number of parts in the bin of that type. Inch Nuts Average (µ - ppm) Std Deviation (σ) 5 16 Inch Nuts Average (µ - ppm) Std Deviation (σ) Plastic Sockets Average (µ - ppm) Std Deviation (σ) Overall Throughput Conveyor Throughput Vision System Throughput Robot Throughput 13.62 0.87 89.93 13.74 31.03 3.06 33.68 0.34 14.07 0.69 97.24 12.37 32.33 2.39 33.78 0.37 10.61 1.31 58.99 13.16 21.61 3.75 32.20 0.38 38 Table 2-16: Throughput of the System Feeding Individual Parts The first comparison discussed is the overall throughput of the system versus the throughput of each part being fed individually with all the parts in the bin. Table 2-15 shows the overall throughput of the system and Table 2-16 shows the throughput of the individual parts. From examining these two tables, several things become apparent. The 65 time spent by the robot retrieving each part is consistent independent of the type of part being fed. The time spent by the robot retrieving the parts is composed of the physical robot motions and the time spent in actuating the gripping mechanism. Since the same gripper was used for all the parts, the only variable would then be the time spent in robot motions. It is interesting to note that the standard deviations of the robot motion times (Table 2-16) is higher for the sockets than for either of the nuts. This can be explained by examining the geometry of the parts and the vision routine. Each nut has six possible orientations from which to be retrieved. (There are a total of six flats on which to orient the gripper. While from a gripper clearance standpoint there are only three orientations since the gripper is symmetric and a rotation of 180° would be a redundant case. When retrieving the part, however, the rotation of the part is important since the distance the quill of the robot must travel is different for each possible orientation.) Each socket only has two possible orientations. It was noted during testing that the rotational speed of the quill of the robot (the fourth axis) was much slower than the speed of the other three joints. Therefore, if a large amount of rotation was necessary to align the gripper with the part, the corresponding robot motion time would be large. The vision code attempted to return an orientation of the final part which would minimize the necessary quill rotation to minimize the robot motion times. Since the socket only has two possible retrieval orientations, over time, there is more variability in the amount of orientation angle of the part and therefore more variability in the amount of time spent by the robot in retrieving the part. Its also interesting to note that the average time spent by the robot in retrieving a part is slightly higher in the case of the sockets for the same reason. Next, the throughput of the system is compared when retrieving parts in any order versus taking parts in a specific order. Table 2-13 shows the throughput of the system feeding parts in any order and Table 2-15 shows the throughput of the system feeding parts in a specific order. Each specific component of the throughput of the feeder 66 will be compared. It can be seen that the overall throughput of the system dropped by about 25% when feeding parts in order (20.82 vs. 15.47). What is more interesting is the increase in the standard deviation from 0.52 to 1.38. This can be explained by realizing that because a specific part is being searched for, there is going to be a wider range of times required to find the part due to undesired parts ahead of desired parts in the vision queue. Since the vision system processes parts according to their order in the queue, at times many undesirable parts must be identified before a desired one is found. The throughput of the conveyor saw the biggest drop from 254.85 to 119.40 (over 53%). This can be explained by understanding that the conveyor must continue to move parts through the vision window until the specific part is seen. On average, this leads to more advances of the feeder per part. By examining the throughput of each individual part (Figure 2-15, lower left graph) it can be seen that the overall throughput of each part varied over time. This leads to a much larger variability in the average number of parts retrieved over time. This can be seen in the much larger standard deviation for parts fed in order (1.38) versus parts fed in any order (0.52). The throughput of the vision system also decreased when feeding parts in order (37.81 ppm versus 68.90 ppm). This can be explained by examining the algorithms used to recognize each part. The vision system operated by locating a part, then checking whether that was the requested part. If it was not, the system would proceed to find additional parts until the requested part had been found. This method led to unnecessary vision processing which decreased the throughput of the vision system. It also increased the amount of variability in the time to find a part, as shown in the standard deviations (5.44 versus 4.70). Had the vision system disregarded non-requested parts sooner in its part identification algorithm, the throughput of the vision system would have been closer to the case of feeding parts in random order. It can then be concluded that when feeding multiple parts in a single feeder and requesting parts in a specified order, it is important 67 to classify the part with as little effort as possible. Further processing (determining the pose of the part) should only be done on the specific part which has been requested. The robot shows no difference in either throughput or standard deviation of throughput between the two cases. This is to be expected since the time required for the robot to grasp a part only depends on the location and orientation of the part. Examining the throughput of each part when all the parts are being retrieved in any order (Figure 2-15, lower graphs) reveals some interesting (and unanticipated) behavior. As previously mentioned, examining the two graphs shows some damping of the oscillations of the part over time. This indicates the parts were better mixed in the hopper during the second test. It can be noted in the graph of the first test that the 5 16 inch nuts and the sockets seem to be out of phase with each other. This is to be expected because if a lot of one type of part is feeding (and therefore occupying the vision window), then there would be less physical room for the other parts in the window. This behavior is also seen between the 3 8 inch and 5 16 inch nuts during the second test. What was unanticipated is the long term fluctuations in the throughput of each part. Also in the first test, the 3 8 inch nuts seem unaffected by the fluctuations in the 5 16 inch nuts and sockets while in the second test, the sockets seem unaffected by the fluctuations in the nuts. This behavior will be explored further in Section 2.5.8. Another interesting comparison is the throughput of the sockets when all the parts in the hopper (both while all parts were being retrieved and while only the sockets were being retrieved) with the throughput of the sockets when they were in the hopper alone. Table 2-12 shows the throughput of the sockets with no other parts in the hopper, Table 2-16 shows the throughput of the sockets with nuts in the hopper but being fed alone, and Table 2-14 shows the throughput of the sockets with all the parts being fed. First, note that the throughput of the system is highest when only sockets are in the hopper. This is expected since time is not being wasted feeding and recognizing parts which are not going to be retrieved. The second highest throughput is for feeding sockets 68 alone with all the parts in the hopper. The slowest throughput is when all the parts are being fed. This is understandable, since the feeder, vision system, and robot are spending time presenting, recognizing, and handling all the parts. Examining the throughput of the conveyor between Table 2-12 and Table 2-16, it is evident that including all the parts in the hopper greatly hampers the ability of the feeder to present parts to the vision system. This seem logical since the inclusion of nuts in the system takes up some of the area on the vision window that could be used to display sockets. The vision system also shows a reduction in throughput. This is again due to the vision system completely determining the pose of each part rather than only determining complete information about the desired parts. In the case of only the sockets in the hopper, if the pose of a part is determined, then it will be the correct part. Also, since the feeder is advancing more, more pictures are required before a graspable socket is found. The throughput of the robot is approximately the same in all cases. This is again due to the motion time of the robot being only dependent on the pose of the part. Finally, the throughput of the 3 8 inch and 5 16 inch nuts in the system will be examined. The throughput will also be compared with the throughput of the system with only nuts in the hopper (Section 2.5.3.3). Table 2-7 shows the throughput of the nuts with no sockets in the hopper, Table 2-14 shows the throughput of the nuts with sockets in the hopper, and Table 2-16 shows the throughput of each size nut when fed individually with sockets in the hopper. As in the previous case, the best throughput occurred when feeding only nuts. Feeding only a single type of nut with all the nuts and sockets in the hopper had the next best throughput while the throughput of each size nut computed when retrieving all the parts had the lowest throughput. This is the expected behavior, with only nuts in the hopper, no system resources are wasted cycling parts through the system that are not being retrieved. When feeding just a single size of nut with all the parts in the hopper, the feeder and vision systems were spending some time feeding and locating parts not wanted which decreased throughput. When retrieving all the parts, 69 much of the system resources were spent presenting, identifying, and grasping other nuts and sockets, therefore the throughput was accordingly lower. It is interesting to note that the standard deviation of the throughput is largest when feeding only nuts (no sockets in the hopper). This is due to the number of parts in the hopper. As stated in the nut section, there were not enough nuts to fully fill the hopper. This led to an unsteady flow of nuts through the vision window which produced more variation in throughput. When the sockets were added to the hopper, they provided enough parts to better fill the hopper which made the flow of nuts through the vision window more steady (although less overall). As noted previously, the time spent in robot motions is consistent. 2.5.4 Angle Dependence Test One of the many parameters that contribute to the overall throughput of the system is the angle of inclination of the inclined conveyor. Intuitively, it would be expected that altering the angle of the inclined conveyor would cause the throughput of the system to range from 0 (when the conveyor was too steep for any parts to advance) to some value which corresponds to the throughput when the conveyor is at an angle of 0° with respect to the horizontal. The angle at which parts no longer are removed from the bin depends on many factors, including the type of belt used on the conveyor, the geometry and mass distribution of the parts, and the material which the parts are constructed. It would also be expected that the maximum throughput of the system would be at some angle between those two extremes. Obviously, if no parts are entering the vision window, the throughput will be zero, however, if the conveyor is at too shallow an angle, too many parts will be spilled onto the presentation conveyor reducing the singulation of the parts. This will lead to extra vision processing because of the increased part density and will reduce the number of correctly identified parts due to the lack of gripper clearance. Some angle between these two extremes should produce the best throughput. 70 This test attempted to determine the effect of this parameter on the throughput of the system when feeding the mixture of nuts and sockets. The program which controlled the system was identical to the previously discussed case except for control of the inclined conveyor. It was necessary to disable shaking the inclined conveyor during this test. At the higher conveyor angles, shaking the inclined conveyor tended to cause all the parts to tumble back into the hopper. For this test, parts were retrieved from the vision window in any order. No other system parameters were changed between the tests other than the angle of the inclined conveyor. Each test was run for approximately 2.5 hours while data was being collected. The angle of the inclined conveyor was determined by measuring the height of the conveyor above the floor at the front and back support members and the horizontal distance between the supports and then using ArcTan of the rise over the run. The angles tested were 32°, 34°, 36°, and 38°. The testing of other angles was not straight forward due to mechanical limitations of the construction of the current feeder. Table 2-17 shows the throughput for various angles. Figure 2-16 shows the overall throughput of the system over time. Angle = 32° Average (µ - ppm) Std Deviation (σ) Angle = 34° Average (µ - ppm) Std Deviation (σ) Angle = 36° Average (µ - ppm) Std Deviation (σ) Angle = 38° Average (µ - ppm) Std Deviation (σ) Overall Throughput Feeder Throughput Vision System Throughput Robot Throughput 19.20 0.80 243.54 29.20 54.64 5.35 33.99 0.32 19.66 0.67 242.16 25.23 57.58 5.09 34.29 0.30 18.98 0.62 224.60 25.18 52.95 3.84 34.28 0.31 19.14 0.74 185.50 23.97 57.55 5.62 34.25 0.38 Table 2-17: Throughput Data for Various Angles of the Inclined Conveyor The first thing to notice is the little effect the small change in angle seemed to have on the overall throughput of the system. The throughput was similar for all the 71 angles tested and the standard deviation was also similar. Examining the graphs of the throughput also support this result. This indicates that the throughput of the system was mostly unaffected by altering the angle of the inclined conveyor over this small range. (It is important to note that this result only applies to feeding this combination of parts, altering the parts fed could greatly affect the results.) In contrast to the overall throughput, the throughput of the feeder does appear to be affected by the angle of the inclined conveyor. The maximum throughput was achieved at the shallowest setting while the minimum throughput corresponded to the maximum angle. This tends to suggest that even shallower angles could be used for this combination of parts to increase the throughput of the feeder even more. It would be expected, however, that at some angle, the throughput would begin to decrease. This would correspond to the quantity of parts on the horizontal conveyor becoming too great which decrease the number of singulated parts. o o Average Parts / Minute − Angle = 34 22 21 21 Parts / Minute Parts / Minute Average Parts / Minute − Angle = 32 22 20 19 18 17 16 20 19 18 17 0 50 100 16 150 0 50 Minutes 150 Average Parts / Minute − Angle = 38o 22 21 21 Parts / Minute Parts / Minute Average Parts / Minute − Angle = 36o 22 20 19 18 17 16 100 Minutes 20 19 18 17 0 50 100 Minutes 150 16 0 50 100 150 Minutes Figure 2-16: Overall System Throughput for Various Angles of the Inclined Conveyor 72 The throughput of the vision system seems unaffected by altering the angle of the inclined conveyor. Examining the overall throughput and the feeder throughput this is expected. Since the time recorded in vision processing is only the time required to find a valid part, the only thing that would increase the vision processing time is many parts clumped together in the vision window. However, in addition to increasing the vision processing time, a clumping of the parts on the horizontal conveyor should be accompanied by a corresponding decrease of the throughput of the feeder. Since the throughput of the feeder is always increasing, it would be expected that the vision process time (and therefore the throughput of the vision system) should be relatively constant. A decrease in the throughput of the feeder at higher conveyor angles would not cause a decrease in the vision system because the decrease in the feeder throughput would be due to not enough parts being spilled onto the horizontal conveyor which would increase the likelihood that parts would be well singulated. The throughput of the robot appears to be unaffected by the angle of the inclined conveyor. This is expected since the time spent by the robot retrieving the parts is only dependent on the pose of the part in the vision window. 2.5.5 Slow Robot Test In all previous tests (altering both the part being fed and the angle of the inclined conveyor), the throughput of the robot was consistent. As stated, this is to be expected since the robot only depends on the location of the part. How much time was used in moving the part into the vision window and determining its pose really does not affect the robot. This purpose of this test is to show that the throughput of the robot is truly unrelated to the rest of the system. This is important because it allows the throughput of the feeding system to be determined for a wide variety of robots. In this way, it is possible to weigh the gains in increased speed for the feeding system versus the added cost of a speedier (through perhaps more expensive) robot. 73 Average Parts / Minute − Overall Average Parts / Minute − Feeder 5.5 1000 800 Parts / Minute Parts / Minute 5.25 5 4.75 4.5 600 400 200 0 50 100 0 150 0 50 Minutes 100 150 Minutes Average Parts / Minute − Vision Average Parts / Minute − Robot 85 6.2 80 6 Parts / Minute Parts / Minute 75 70 65 60 55 5.8 5.6 5.4 50 45 0 50 100 Minutes 150 5.2 0 50 100 150 Minutes Figure 2-17: Throughput of the System with the Robot Slowed To perform the test, an identical setup to the mixed nuts and sockets test (Section 2.5.3.5) was used. The only change was in the speed of the robot. Adept allows the overall speed of the robot to be controlled by a command line parameter within their operating system. This made it easy to rerun the same test without altering the control code. In most of the testing, the robot was set to a speed of 130§. During this test, the robot speed was set to 10. Table 2-18 shows the results of the test and Figure 2-17 shows the same data in graphic form. Examining the results, it can be seen that while the overall throughput and the robot throughput are greatly reduced in comparison to the previous test (Table 2-13), the throughput of the conveyor and vision system are nearly identical. This then confirms ___________________________________________________________________________________ § Adept specifies the speed of the robot on a scale from 0 to 200. 100 is considered to be ‘‘full’’ speed, while speeds over 100 move the robot faster at the sacrifice of accuracy and controllability (at higher speeds overshoot may become a problem). Speeds from 0 to 100 tend to be linearly related to the physical robot speed, i.e. a speed of 50 would move the robot about half as fast as a speed of 100. Speeds over 100 do not follow a linear relationship and the gains in speed tend to diminish as the number increases, i.e. a speed of 200 is not twice as fast as a speed of 100. 74 that the throughput of the conveyor and vision system is unaffected by the speed of the robot. Average (µ - ppm) Std Deviation (σ) Overall Throughput 5.10 0.15 Conveyor Throughput 245.48 120.07 Vision System Throughput 67.26 7.01 Robot Throughput 5.46 0.14 Table 2-18: Throughput of the System with the Robot Slowed Two other interesting features of Figure 2-17 need to be discussed. First, is the extreme discretezation of the overall throughput. This is a result of using a 5 minute window to determine the average throughput coupled with the slow speed of the robot. Since the robot is grasping fewer parts when moving slowly, the variation in the number of parts retrieved in each five minute window is small. Hence, when divided by the constant window size, only a few discrete values for the overall throughput are determined. The second feature to note is the large spikes in the throughput of the conveyor system. Again, this can be explained by examining the size of the window used to determine the average throughput and the number of parts removed from the feeder per minute. In each five minute window, there were approximately 25 parts retrieved (5 minutes × 5 parts / minute). Examining raw data collected about each part retrieved shows several places where many parts were retrieved with few conveyor motions. During these times, it was possible to retrieve all 25 parts with only one or two feeder moves. In these instances, a disproportionately large throughput was determined for the feeder. To normalize the graph (when compared to the previous example), approximately the same number of data points should be included in each interval used to calculate the throughput. Computing the approximate number of points in each window of the previous example yields 105 parts (5 minutes × 21 part/minute). Then using this number to determine the size of window to be used for this test returns 21 minutes (105 / 5 parts/minute). 75 Average Parts / Minute − Feeder − 5 Minute Window 1000 Parts / Minute 800 600 400 200 0 50 60 70 80 90 100 Minutes 110 120 130 140 150 130 140 150 Average Parts / Minute − Feeder − 21 Minute Window 350 Parts / Minute 300 250 200 150 100 50 0 50 60 70 80 90 100 Minutes 110 120 Figure 2-18: Average Conveyor Throughput: Slow Robot Test Average Parts / Minute − Feeder − 5 Minute Window 350 Parts / Minute 300 250 200 150 100 50 0 50 60 70 80 90 100 Minutes 110 120 130 140 150 Figure 2-19: Average Conveyor Throughput: Test Case 1 Figure 2-18 shows the results of computing the average throughput of the conveyor system using a 21 minute window. When comparing the graph generated using a 21 minute window with the graph from the test of mixed parts (Section2.5.3.5), Figure 2-19, it can be seen that the graphs are similar. The graph from the previous example appears more dense because there were more parts fed during a 21 2 hour period than 76 there were in the slow robot test (due to the robot operating at normal speed for the mixed nuts and retainers test). 2.5.6 Endurance Test The final test performed was an endurance test. The purpose of this test was to determine the ability of the system to feed parts for a long period of time without jamming or needing human intervention. One of the major problems with bowl feeders is jamming. Jamming can lead to damaged parts, machine down time, and loss of revenue. One of the supposed benefits of flexible parts feeding is a much lower susceptibility to jamming and so this test addressed that concern. A second goal of this test was to provide the opportunity to improve the control code, vision algorithms, and conveyor control in order to further improve the throughput of the system. Before examining the results of this test, the method of data analysis needs to be explained since it differs slightly from the method employed in the previous test. Unlike the previous tests, this test generated a large quantity of data. Previously, there were between 1000 and 7500 data points collected per test, however during this test there were over 150,000 data points collected. Using the previous method to analyze the data would have been time prohibitive so an alternate method was chosen. First, the window size was increased from 5 minutes to 30 minutes. Second, rather than advancing the leading edge of the window one data point each calculation, the window was moved forward by its size (30 minutes) each calculation. In this way, each 30 minute interval of data was averaged and reported. The test itself was identical to the one described in Section 2.5.3.5: a mixture of nuts and plastic sockets were fed. This allowed the results to be compared directly with those previously reported. Total run time for the test was almost 3 days 9 hours. During that time the system fed over 150,000 parts without human intervention. Table 2-19 shows the throughput of the system and its components while Figure 2-20 shows the data graphically. 77 Average Parts / Minute − Feeder 500 31.8 480 Parts / Minute Parts / Minute Average Parts / Minute − Overall 32 31.6 31.4 31.2 31 30.8 460 440 420 400 380 0 1000 2000 3000 Minutes 4000 360 5000 0 Average Parts / Minute − Vision 4000 5000 49.8 112 49.6 Parts / Minute Parts / Minute 2000 3000 Minutes Average Parts / Minute − Robot 114 110 108 106 49.4 49.2 49 104 102 1000 0 1000 2000 3000 Minutes 4000 5000 48.8 0 1000 2000 3000 Minutes 4000 5000 Figure 2-20: Throughput of the System During Extended Testing Average (µ - ppm) Std Deviation (σ) Overall Throughput 31.38 0.20 Conveyor Throughput 424.60 22.10 Vision System Throughput 107.80 2.07 Robot Throughput 49.30 0.16 Table 2-19: Throughput of the System During Extended Testing When comparing the results with those reported in Table 2-13, it can be seen that a major improvement (about a 50% increase) in the throughput of the system was obtained. This was accomplished by improving the throughput of each sub-system of the feeder. The conveyor sub-system was improved by altering the code which controlled the motion of the conveyors. Two changes were made. First, the speed of the horizontal conveyor during incremental moves was increased by approximately 30%. The acceleration and deceleration of the horizontal conveyor was also increased nearly 200%. Second, the time the system waited after a full conveyor advance was decreased by 50%. 78 These two changes caused an increase in the average throughput of the conveyor from approximately 250 part per minute to well over 400 parts per minute. The throughput of the vision system was increased purely by altering the part recognition code. Two main areas were refined, the overall control structure and the actual recognition routines. The first alteration was in the overall calling of the vision routines. The vision code was originally written to identify parts as a complete assembly was being performed. In this case it was necessary to perform standard setup procedures each time a picture was acquired. Since, in general, the vision system is used to acquire and process images from a number of cameras, it is necessary to load the camera calibration and other parameters each time the routine is called. However, in the case of feeder testing, only a single routine was being called. To save execution time, all the setup instructions were moved to a separate file which is only called at the beginning of a run. Secondly, the recognition routines for the nuts and sockets were written as separate tasks. To incorporate them together, a single call was added to the nut recognition routine which would call the socket routine if the candidate part was within a certain area. This was changed to incorporate the recognition process into a single hierarchy of routines which would more efficiently determine the type and pose of parts. The second portion of the code altered was the actual recognition routine. Throughout the code, there were redundant checks to ensure that the part was really what was being identified (i.e. if it was suspected that a candidate part was a nut, six linear rulers were cast toward the six flats to ensure that the part in fact had the required six flats). There were also many extra checks to further refine the pose of the candidate part (i.e. when determining the pose of a nut, the angle was determined by fitting a line to two opposing sides of the nut and then taking the average of the line angle). To speed the vision processing, many of these redundant checks were eliminated. These changes increased the throughput of the vision system from just under 70 parts per minute to almost 110 parts per minute. 79 While it may seem unwise to eliminate safety checks in the vision code, it was done for two reasons. First, this test was meant to stress the system. It was desired to determine how well the system would function for long periods of time in less than perfect circumstances. Removing some of the redundancy in the vision code provided an extra measure of variability in the system. This test was also done to determine the upper bounds of system throughput. The only way to really know how far a system can be pushed is to push it a little too far and then back off. The second reason for removing the redundancy in the vision code was to provide a basis with which to weigh the benefits of redundancy in the vision code versus safety measures at other places in the system. For instance, would it be possible to reduce the complexity and processing requirements of the vision code and maintain the same level of reliability by adding sensors to the grippers and crash recovery routines to the robot? In general, is it better to spend extra time and processing power in correctly identifying a part or in recovering from an error after the fact? The throughput of the robot was improved by changing its operating parameters. There are several parameters in the robot’s controller which can greatly affect the overall speed of the robot (these are documented in [62] and [63]). The first is the BREAK command and the second is the NULL command. The BREAK command is used to instruct the controller of the robot to suspend processing until the robot has arrived and settled at its instructed location. Without using a BREAK command, the robot does not go exactly through all its commanded points, it only comes close to those points. Secondly, without a BREAK command, the robot controller processes the next command immediately after issuing the robot move command. When taking a part to a location and dropping it, it is necessary to insert a BREAK command into the code to prevent the controller from opening the gripper before the robot reaches its destination. The NULL command is used to instruct the robot to not report that it has reached its final location until it has settled within a target region around the final location. When performing 80 most work this is important since it is generally desired to have the robot be where it is supposed to be. In the case of testing the flexible feeder, however, the above commands add too much unnecessary time to the robot motions. Only two places occur where it is necessary for the robot to actually arrive at a specific point, when picking a part and when dropping a part. Requiring the robot to precisely trace through any other points (the approach to the pickup location for example) is wasting time. Therefore all the BREAK commands were removed from the control code except for when moving to the pick and drop locations. The NULL command also requires extra time to execute and is unnecessary. When simply picking parts from the feeder and dropping them onto the return conveyor, precision is not necessary. Therefore the robot was instructed to operate in the NONULL mode. That is, turn off all nulling for all the move commands. These two changes increased the throughput of the robot from 33 parts per minute to almost 50 parts per minute. It was originally intended that the test last for seven days or until the system failed for what ever reason. The test lasted over three days and the failure which ended the test was not due to hardware but to software. The RTOS under which the system was operated, VxWorks, has a method of prioritizing tasks to determine the order in which they are allocated processor time. The data logging task used an NFS-mounted filesystem to store the data. The ultimate problem was due to a processor allocation conflict between the workcell control task and the system-level NFS tasks. Both the NFS tasks and the workcell control task were operated at the same priority, so after a long period of time, the NFS tasks were starved for processor time and failed. This had the effect of causing the system to take about 2 minutes every time it attempted to write data to the NFS mounted drive (which occurs after each part is retrieved). Had the workcell control been operated at a slightly lower priority or had the extensive data logging not been present (such as in the case of a true production system), the system would have 81 kept on running. While the test did end prematurely, it was considered a success since the hardware (the true object being tested) did not cause the stoppage. 2.5.7 Effects of Part Size On System Throughput This section begins to examine the effect of part size on the throughput of the system. Obviously, in the extreme, a part too large to fit in the vision window can never be fed by the system while a part too small to be resolved by the vision system can also not be fed in the system. But, between these two extremes is a large class of parts that may be fed by the system. How then is the throughput of the system affected by the size of the object? The first property examined is shown in Table 2-20: the throughput of the system and the part size. In the case of mixed parts, the size of the largest part in the bin was used. Roughly, the smaller the part, the higher the throughput of the system. However, one of the problems with interpreting the data as seen is that there may be other factors affecting the throughput in addition to part size. For example, it is known that there were not enough parts to completely fill the bin when feeding the mixed nuts and when feeding the sockets. The effect of the number of parts in the bin on system throughput is not known. Tangling is also another example. The snap rings are also known to tangle and over time, decreasing throughput. Part Type Plastic Snap Rings Clear Plastic Disks 3 8 Inch and 5 16 Inch Nuts Plastic Sockets Mixed Nuts and Sockets Major Part Dimension 1.700’’ 2.100’’ 0.640’’ 0.850’’ 0.850’’ Overall System Throughput 12.6 ppm 10.5 ppm 19.4 ppm 18.5 ppm 20.7 ppm Table 2-20: Major Part Dimension and Overall System Throughput A better indicator of the effect of part size on the throughput of the system might be to examine the number of conveyor increments made during system operation. The number of conveyor moves can be inferred from examining the time spent in moving the 82 conveyors while acquiring each part. Figure 2-21 shows this for snap rings, clear plastic disks, sockets, and mixed nuts and sockets. A zero indicates that no conveyor move was necessary to acquire the next part (i.e. it was already in the vision window). The data was sorted in ascending order by conveyor move times. This allows a quick inspection of the time spent moving the conveyors for each part. The sooner the conveyor time begins to increase, the more time the conveyor spent moving during the test. For example, when examining the graph for the mixed nuts and retainers, it can be seen that no conveyor move was necessary when retrieving over 5000 parts (the line of data on the x-axis extending from x=0 to about x=5200). A single move was necessary when retrieving approximately 2000 additional parts (the line of data extending from x=5200 to just over x=7000). When examining the graphs, it is apparent that the larger the part being fed, the sooner moving the conveyor system was necessary. Clear Plastic Disks Conveyor Advance Time (seconds) Conveyor Advance Time (seconds) Plastic Snap Rings 10 8 6 4 2 0 −2 0 2000 4000 6000 Number of Parts Fed 8000 10 8 6 4 2 0 −2 0 10 8 6 4 2 0 −2 0 2000 4000 6000 Number of Parts Fed 8000 Mixed Nuts and Sockets Conveyor Advance Time (seconds) Conveyor Advance Time (seconds) 3/8" and 5/16" Nuts 2000 4000 6000 Number of Parts Fed 8000 10 8 6 4 2 0 −2 0 2000 4000 6000 Number of Parts Fed 8000 Figure 2-21: Time Spent Moving the Conveyors for Each Part Retrieved 83 2.5.8 Oscillations in the Feeder While analyzing the throughput data for the mixed nuts and sockets (Section 2.5.3.5), an unanticipated result was found. When examining the throughput of each part individually (while all parts were being fed), it was noticed that there was an oscillation between the throughput of the 5 16 inch nuts and the throughput of the sockets while the throughput of the 3 8 inch nuts remained more steady. To determine if a predominate frequency was present, a Fourier transform of the data was performed. Figure 2-22 shows the time domain data and the corresponding frequency domain data. The following is common to all the time and frequency plots in this section. The x-axis of the frequency domain plot is in the units of minutes per cycle. Since the oscillations occur at low frequencies (on the order of an hour), it made sense to use time / cycle rather than cycles / unit time. There are no units attached to the y-axis of the frequency domain plot since only relative sizes are important in the graph. The height of the plot was determined by dividing through all the data points (of all three components) with the maximum data point (from all three components). This ‘‘normalized’’ the data to unit height. To generate the frequency domain data, the time domain data needs to be at uniform intervals. As collected, the time domain data is at random intervals. A cubic interpolation routine was used in Matlab to create a time domain data set at uniform intervals. This uniform data set was then used to generate the frequency domain data. All the plots of the time domain are from 0 to 350 seconds. This allows the oscillations in the time domain to be seen no matter how long the original data set. The entire data set was used to generate the frequency domain data. The frequency domain data is shown from 30 minutes per cycle to 130 minutes per cycle to highlight its relevant section. The full frequency domain data extends to well over 1000 minutes per cycle. All the frequency domain data sets went to 0 long before reaching the Nyquist frequency of 1 12 Hz. Therefore, no aliasing is present in the results. The three parts fed are differentiated in the plots by the use of symbols. The symbols are only placed at every 100th data point to 84 make the plot easier to interpret. The 3 8 inch nuts are represented by a square (❏), the 5 16 inch nuts by a circle (❍), and the sockets by an asterisks (✽). As can be clearly seen in Figure 2-22, the oscillations of the 5 16 inch nuts and the sockets are out of phase. Even small nuances are mirrored. For example, the small rise and fall in the throughput of the 5 16 inch nuts at approximately 175 minutes is mirrored by the dip in throughput of the sockets. The 3 8 inch nuts, however, appear to have a relatively constant throughput. This premise is confirmed in the frequency plot which shows a large spike in the 5 16 inch nuts and sockets compared to the 3 8 inch nuts. The significance of the frequency (about 80 minutes per cycle) is unknown, perhaps that is the time required for a single part to complete one complete circuit of the feeder (start in the hopper, move up the inclined conveyor, across the horizontal conveyor, and return to the bin on the return conveyor). Whether this is a property of the feeder or just a transitory phenomena is also not known. Time Domain Plot of Individual Part Throughput 11 10 Parts / Minute 9 8 7 6 5 4 3 0 50 100 150 200 Time (minutes) 250 300 350 Frequency Domain Plot of Individual Part Throughput 30 40 50 60 70 80 90 Period (Minutes / Cycle) 100 110 120 130 Figure 2-22: Time and Frequency Plot of the Mixed Parts Feeding Test: Test #1 85 Time Domain Plot of Individual Part Throughput 10 Parts / Minute 9 8 7 6 5 4 0 50 100 150 200 Time (minutes) 250 300 350 Frequency Domain Plot of Individual Part Throughput 30 40 50 60 70 80 90 Period (Minutes / Cycle) 100 110 120 130 Figure 2-23: Time and Frequency Plot of the Mixed Parts Feeding Test: Test #2 To test whether the system would exhibit this type of behavior again, a second feeder test was performed. This test was identical the original test. The only difference in the system is that the second test occurred approximately a week after the first. During that week, the system was operated (other tests performed) for about 60 hours. The same parts remained in the hopper the entire time, so if the oscillations were a result of the parts being inadequately mixed during the first test, the results should be different in the second test. Figure 2-23 shows the time and period plots from the second test. When examining the time domain plot, it is not entirely obvious that the oscillations are still occurring. However, when examining the frequency domain plot, similar behavior is observed. It is clear from the time domain data that the size of the oscillations of the 5 16 inch nuts and sockets have diminished. However, oscillations of the 38 inch nuts have appeared. The frequency plot shows they are still of less significance than the oscillations of the other parts. 86 Time Domain Plot of Individual Part Throughput 13 Parts / Minute 12 11 10 9 8 0 50 100 150 200 Time (minutes) 250 300 350 Frequency Domain Plot of Individual Part Throughput 30 40 50 60 70 80 90 Period (Minutes / Cycle) 100 110 120 130 Figure 2-24: Time and Frequency Plot of the Hex Nut Feeding Test The width of the period range has also narrowed from the first test. The strict out of phase relationship between the 5 16 inch nuts and sockets has also disappeared and is more prominent between the two different sizes of nuts. The frequency of oscillation is approximately the same as in the previous case. The second test confirmed that the oscillations did not dissipate with extended operation, however, it did not provide any additional insight into the phenomena. A third test was then performed feeding only the two sizes of nuts. The data from the initial test of hex nut feeding could not be used because data specifying the size of the nut currently being retrieved was not recorded. The same program which was used for the initial hex nut test case (Section 2.5.3.3) was used. Figure 2-24 shows the time and frequency domain plots of the test. It is obvious that oscillations are occurring. The time domain plot shows the nuts to be oscillation anti-phase. The out of phase relationship is even stronger than in the first test case with the mixed nuts and sockets. Every nuance 87 in the throughput of the large nuts is inversely mirrored in the throughput of the small nuts. When examining the frequency of the oscillations, it is observed that the frequency has increased by about 15%, from approximately 80 minutes per cycle to approximately 65 minutes per cycle. Since the conveyors were run at the same speed, it is possible that the frequency of oscillation is at least partly dependent on the number of parts in the bin (since there were less parts in the bin feeding only hex nuts). In an attempt to gain some additional insight, the data collected during the three day test was examined. This is the test that is described in Section 2.5.6. Figure 2-25 shows the time and frequency domain plots from the test. Since the test was almost three and a half days long, two additional ‘‘windows’’ of time domain data were plotted. A six hour window from approximately 33 to 39 hours was examined as was the final 6 hours of the test. Figure 2-26 shows these plots. Time Domain Plot of Individual Part Throughput 14 Parts / Minute 12 10 8 6 0 50 100 150 200 Time (minutes) 250 300 350 Frequency Domain Plot of Individual Part Throughput 30 40 50 60 70 80 90 Period (Minutes / Cycle) 100 110 120 130 Figure 2-25: Time and Frequency Plot of the Mixed Parts Endurance Feeding Test 88 Time Domain Plot of Individual Part Throughput 16 Parts / Minute 14 12 10 8 6 2000 2050 2100 2150 2200 Time (minutes) 2250 2300 2350 2400 4750 4800 Time Domain Plot of Individual Part Throughput 16 Parts / Minute 14 12 10 8 6 4400 4450 4500 4550 4600 Time (minutes) 4650 4700 Figure 2-26: Time Domain Plot of the Mixed Parts Feeding Test Examining the time domain plot in Figure 2-25, it appears the 38 inch nuts and the sockets are anti-phase while the 5 16 inch nuts are somewhat unrelated. Examining the frequency domain plots, however, shows the 5 16 inch nuts and sockets to have the predominate oscillations. The frequency of oscillation is smaller than the first mixed part test (80 minutes per cycle versus just less than 60 minutes per cycle). Since the same number of parts were in the bin, the frequency of oscillation appears to be partly dependent on the speed of the conveyor. (As discussed in Section 2.5.6, the speed of the conveyors was increased 30% during the endurance test.) This information, coupled with the results of the test feeding only nuts, leads to the conclusion that the frequency of oscillation is dependent on both the speed of the conveyors and the number of parts in the bin. Further examination of the remaining two time domain plots provides even more insight. 89 The graph (Figure 2-26) showing a window from 2000 minutes to 2400 minutes (~33 hrs to ~39 hrs) begins by showing a strong anti-phase relationship between the two sizes of nuts. The sockets appear to have a fairly constant throughput. By the end of the window, however, the phase between the two sizes of nuts has shifted and is beginning to align while the sockets have begun oscillating out of phase with the 5 16 inch nuts. Next, examining the data from the end of the run (also Figure 2-26), it appears that the system is operating as it did during the first mixed part test (Figure 2-22). The 5 16 inch nuts and sockets are anti-phase while the 3 8 inch nuts are feeding at a consistent rate. However, by the end of the data, the 3 8 inch nuts are beginning to oscillate out of phase with the 5 16 inch nuts (as they did in the test of only hex nuts). The amplitude of the oscillations of the sockets also seems to be diminishing. It is apparent that whatever is happening in the system, it cannot be described with the data that has been currently collected. The type of property seen here is most likely due to the non-linear nature of the feeding system. The frequency of oscillations is dependent on both the number of parts in the feeder as well as the speed of the conveyors. It is possible that the frequency corresponds with the round trip-time through the feeder for a single part, however, the results of the endurance test showing different behaviors over an extended period of time suggests that there is more behind this behavior. Further testing is necessary to fully understand the mechanism which is responsible for this type of feeder behavior. Testing of various conveyor speeds as well as testing different numbers of parts in the bin should produce insightful data. Testing the system for this phenomena using a wider variety of parts might also provide helpful data. 2.5.9 Jumps in the Variation of System Throughput Another interesting behavior noticed while examining the feeder test data was the sudden jumps in the variation of the throughput of the system. This was noticed when testing the 3 8 inch and 5 16 inch nuts and when testing the mixture of nuts and 90 sockets. Figure 2-27 shows the throughput of the system versus time for the extended test (mixture of nuts and sockets in the bin). During the first 2500 minutes of the test (1.7 days) the throughput of the 3 8 inch nuts varies from approximately 9 to 13 parts per minute. Then suddenly, the variation drops to between 10 and 12 parts per minute. The 5 16 inch nuts begin the test with variations in throughput from 11 to 13 parts per minute then at 1500 minutes (1 day) the variation suddenly jumps to 9 to 15 parts per minute. During the same test period, the variation of the throughput of the sockets remained fairly constant (except for one small decrease around 2000 minutes). Next, the data from the second test of the mixture of 3 8 inch and 5 16 inch nuts was examined. Figure 2-28 shows the data. Again, a reduction in the variation of the throughput of each part is seen (at about 500 minutes). In this case, however, both the parts experience the reduction at the same time. Throughput of Individual Parts PPM 3/8" Nuts 14 12 10 8 0 500 1000 1500 2000 2500 3000 Time (minutes) 3500 4000 4500 5000 0 500 1000 1500 2000 2500 3000 Time (minutes) 3500 4000 4500 5000 0 500 1000 1500 2000 2500 3000 Time (minutes) 3500 4000 4500 5000 14 PPM 5/16" Nuts 16 12 10 8 12 PPM Sockets 10 8 6 4 Figure 2-27: Throughput of the Individual Parts During the Extended Test 91 Throughput of Individual Parts PPM 3/8" Nuts 11 10 9 0 100 200 300 400 500 600 Time (seconds) 700 800 900 1000 0 100 200 300 400 500 600 Time (seconds) 700 800 900 1000 PPM 5/16" Nuts 13 12 11 10 Figure 2-28: Throughput of the Individual Parts During the Second Mixed Nut Test The phenomena of jumping between two seemingly stable operating regions is another characteristic of a non-linear system and is further evidence that the feeder is actually a complex non-linear system. It is important to determine the underlying dynamics which are causing this to happen. Once they are understood, they could be used to reduce the variation in the throughput of the system. 2.5.10 Statistical Properties of the Feeder The purpose of this section is to further examine the statistical properties of the flexible parts feeder throughput. Ultimately, the goal is to be able to determine the statistical properties of the feeder (average and standard deviation of throughput) simply by knowing the properties of the part. While this encompasses understanding every component of the feeder, understanding the underlying statistical properties is an important first step. This section will focus on three specific properties: the statistical distribution associated with the overall system and with each sub-system (conveyors, vision system, and manipulator), determining the properties of the system when only properties of the sub-systems are know, and the correlation between the sub-systems. Understanding the statistical distributions associated with each sub-system is the first step in determining other statistical properties. Knowing how to combine the average 92 and standard deviation of the throughput of each sub-system into properties for the overall system is important when examining the effects of upgrading (or changing) parts of the system. Finally, understanding the correlation between the sub-systems of the feeder provides insight into the system as a whole. This section contains a large number of graphs. Understanding what those graphs represent and how they are to be interpreted is important. All the graphs were generated using Matlab. There are two types of graphs shown, probability histograms and cumulative distributions. Probability histograms plot the probability density function (or PDF) which shows the probability (on the y-axis) of the outcome of an event falling within a certain range (on the x-axis). It is important to remember that the finer the bin size, the less the probability that the data point will fall into that interval. This is especially important when plotting the data and an ‘‘ideal’’ distribution on the same graph. To be meaningful, the ‘‘ideal’’ distribution must be computed on the same interval spacing as the bin size of the histogram. Care also must be taken to ensure that the area under all the bins of the histogram (or under the ‘‘ideal’’ distribution) is equal to one. The cumulative distribution shows the cumulative distribution function (or CDF) which is a plot of the cumulative area in each bin of a histogram or under the curve in the case of a plot of an ideal distribution. The CDF is useful in comparing two distributions. If they are the same, then the cumulative area under the ideal curve and under the histogram should be the same. The more the two curves deviate from each other, the less likely the data is actually from the ideal distribution. In the case of the probability histogram plots, the experimental data is represented by the histogram while the ideal distributions are represented by the solid line with circular markers at each data point (note that there is a marker for each bin of the experimental histogram as explained above). The cumulative distributions show the experimental data as a dashed line while the ideal distribution is shown by a solid line. All the cumulative distribution plots are scaled from 0 to 100, representing percent 93 probability. At times, the PDF graphs may have some data cut-off. This was done so that all the graphs in a series are displayed at the same scale and can be directly compared to one another. The cut-off data can be reconstructed by examining the CDF graph corresponding to the PDF graph in question. Two textbooks on probability and statistics were used as references for this section [64][65]. 2.5.10.1 Statistical Distribution A statistical distribution is a mathematical function which describes the probability of the result of some event having a certain value. There are many types of distributions describing many different classes of processes. For example, a normal distribution can be used to describe a process which has a central tendency to a single result, but which varies from that result equally in the plus and minus directions, with the chance of a particular result’s occurring dropping as the distance (or deviation) from the central point increases. Once the class of distribution is known for a process, much information can be deduced about the event. Therefore, determining the underlying statistical distribution is an important step in fully understanding the feeding system. Understanding the distribution of each sub-system of the feeder is necessary if the overall system is to be understood. First, the feeding system as a whole will be examined. When examining the system as a whole, the Poisson distribution seems like a logical choice. A Poisson process is defined as a series of events which occur over a period of time t ≥ 0. Counting the radioactive pulses received by a Geiger counter is an example. For the feeder, an event occurs when a part is retrieved. This case is simply shifted by a minimum part retrieval time. A Poisson distribution is described by Equation (2.3) ( ) p x;t = e ( )(λt)x − λt x! t ≥ 0; x = 0,1,2,... (2.3) where λ is known as the average arrival rate for the process. The formula is used to answer the question, ‘‘What is the probability that x arrivals will occur in t seconds in a 94 process that has average arrival rate λ?’’ It would allow one to determine the certainty with which parts could be expected from the feeder. The times between events can be specified as interarrival times. A first-order interarrival time is the time between each event, a second-order interarrival time is the time between an event and two events later. The first-order interarrival times for a Poisson process are exponentially distributed. Therefore, to determine if the feeder process can be modeled by a Poisson distribution, a test of the fit of an exponential distribution to the first order interarrival times must be examined. Equation (2.4) shows the mathematical form of an exponential distribution. p(t;λ) = λe − λt t ≥ 0; λ > 0 (2.4) where λ is the same value as in the Poisson distribution. The expected value of an exponential distribution (E(x) = µ) is defined as 1/λ. Therefore, λ can be determined by λ = 1/µ (2.5) Since the feeder data is shifted from 0 by a minimum value, t0 (the minimum time required to determine the parts pose and physically retrieve the part with the robot), Equation (2.4) and (2.5), must include this shift before being applied to the data. This is shown in Equation (2.6): _ _ _ _ p(t;λ) = λe − λ(t − t0) t ≥ t0; λ > 0 _ (2.6) λ = 1/(µ − t0) The Poisson distribution shifted from then minimum part arrival time by t0 can now be determined (withλ given by Equation (2.6)). ( ( ))( ( _ − λ t − t0 e ( ) p x;t = _ λ t − t0 x! ) ) x (2.7) t ≥ t0; x = 0,1,2,... To test if the first-order interarrival times of the feeder (or the time required to grasp each part) are exponentially distributed, the probability histogram and cumulative 95 distribution of the actual data must be compared to an exponential distribution generated with a value of λ determined using the inverse of the mean minus the minimum part retrieval time of the actual data. Figure 2-29 shows the PDF and CDF for the test cases of the mixed nuts and the mixed nuts and sockets with an attempted exponential fit. PDF: Mixed Nuts CDF: Mixed Nuts 100 Cumulative Probability F(x) Probability p(x) 0.08 0.06 0.04 0.02 0 0 1 2 3 4 Interarrival Time (seconds) 80 60 40 20 0 5 0 PDF: Mixed Nuts and Sockets 100 Cumulative Probability F(x) Probability p(x) 5 CDF: Mixed Nuts and Sockets 0.08 0.06 0.04 0.02 0 1 2 3 4 Interarrival Time (seconds) 0 1 2 3 4 Interarrival Time (seconds) 5 80 60 40 20 0 0 1 2 3 4 Interarrival Time (seconds) 5 Figure 2-29: PDF and CDF for Mixed Nuts and Mixed Nuts and Sockets Examining this graph, it is clear that the exponential distribution does fit the data. Figure 2-30 shows the plastic snap ring test and the clear plastic disk test with exponential distribution fits. Again, the distribution fit the data well. It can therefore be concluded that the experimental data can be fit to an exponential distribution, and the overall system throughput can therefore be modeled by a time-shifted Poisson process. 96 PDF: Clear Plastic Disks CDF: Clear Plastic Disks 100 Cumulative Probability F(x) 0.1 Probability p(x) 0.08 0.06 0.04 0.02 0 0 2 4 6 8 Interarrival Time (seconds) 80 60 40 20 0 10 0 PDF: Plastic Snap Rings Cumulative Probability F(x) 100 0.1 Probability p(x) 10 CDF: Plastic Snap Rings 0.12 0.08 0.06 0.04 0.02 0 2 4 6 8 Interarrival Time (seconds) 0 2 4 6 8 Interarrival Time (seconds) 10 80 60 40 20 0 0 2 4 6 8 Interarrival Time (seconds) 10 Figure 2-30: PDF and CDF for the Plastic Snap Rings and Clear Plastic Disks Next, each subsystem of the feeder will be examined. The conveyor sub-system is unique among the three sub-systems in that its data is so discrete. It takes a repeatable amount of time to advance the conveyor one small increment forward (move only the horizontal conveyor) and to advance the conveyor one large increment forward (move both the inclined and horizontal conveyors). The possible move times can then only be combinations of those times. While the times are entirely dependent on the belt speed programmed into the feeder controller the resulting times can be dependent on the parts being fed. Parts which are larger may require more multiple indexes per part and will naturally have a wider range of reported conveyor times. However, even though the reported range of times is wider, the base feeder move time is still the same (for the same programmed speed). 97 PDF: Clear Plastic Disks CDF: Clear Plastic Disks 100 Cumulative Probability F(x) Probability p(x) 0.4 0.3 0.2 0.1 0 0 2 4 6 8 Conveyor Advance Time (seconds) 80 60 40 20 0 10 0 PDF: Plastic Snap Rings 100 Cumulative Probability F(x) Probability p(x) 10 CDF: Plastic Snap Rings 0.4 0.3 0.2 0.1 0 2 4 6 8 Conveyor Advance Time (seconds) 0 1 2 3 4 Conveyor Advance Time (seconds) 80 60 40 20 0 5 0 1 2 3 4 Conveyor Advance Time (seconds) 5 Figure 2-31: PDF and CDF of the Plastic Disks and Plastic Sockets PDF: Mixed Nuts and Sockets CDF: Mixed Nuts and Sockets 100 Cumulative Probability F(x) Probability p(x) 0.4 0.3 0.2 0.1 0 0 1 2 Conveyor Advance Time (seconds) 3 80 60 40 20 0 0 1 2 Conveyor Advance Time (seconds) 3 Figure 2-32: PDF and CDF of the Mixed Nuts and Sockets Again, an exponential distribution was fit to the data. In this case, there was no minimum part retrieval time since it was possible for the next part which was removed from the system to require no conveyor advance time. Figure 2-31 shows an exponential distribution fit to the plastic disks and plastic snap rings. As with the overall system case, the data fit an exponential well. Therefore the throughput of the conveyor can also 98 be modeled as a Poisson process. Even a highly discrete case, such as that of the mixed nuts and sockets as shown in Figure 2-32, the process is well modeled by the time-shifted Poisson. The distribution of the vision processing time will be examined next. It is difficult to anticipate a possible distribution to model the throughput of the vision system. There is a minimum process time (the time required to take a picture of an empty window) in addition to the time required to find the part. Obviously, the vision processing time depends on many factors including the complexity of the part and associated vision algorithms, the number of parts in the vision window, the location of the part in the vision window§, and the speed of the vision system. Figure 2-33 shows the PDF’s for four of the test cases. PDF: Mixed Nuts and Sockets 0.08 0.06 0.06 Probability p(x) Probability p(x) PDF: Mixed Nuts 0.08 0.04 0.02 0 0 1 2 3 4 Vision Processing Time (seconds) 0.04 0.02 0 5 0 0.12 0.08 0.1 0.06 0.04 0.02 0 5 PDF: Plastic Snap Rings 0.1 Probability p(x) Probability p(x) PDF: Clear Plastic Disks 1 2 3 4 Vision Processing Time (seconds) 0.08 0.06 0.04 0.02 0 1 2 3 4 Vision Processing Time (seconds) 5 0 0 1 2 3 4 Vision Processing Time (seconds) 5 Figure 2-33: PDF’s for Four Test Cases ___________________________________________________________________________________ § The vision system creates a queue of separate parts in the vision window. It then pops objects off the queue in order. If the first valid part is deep in the vision queue, it will take more time to examine the bogus parts before the valid one is found. 99 As can be seen, all the distributions are positive skew (more one-sided toward the positive x). An exponential distribution was fit to the data to see if the process could be modeled as Poisson. Figure 2-34 shows the mixed nuts and combination of mixed nuts and sockets fit with this distribution. As can be seen, the exponential again fits the data well. Figure 2-35 shows an exponential distribution fit to the plastic disk and plastic socket data. Again, a good fit. It can therefore be concluded that the vision system may also be modeled as a Poisson process. PDF: Mixed Nuts CDF: Mixed Nuts 100 Cumulative Probability F(x) Probability p(x) 0.08 0.06 0.04 0.02 0 0 1 2 3 4 Vision Processing Time (seconds) 80 60 40 20 0 5 0 PDF: Mixed Nuts and Sockets 100 Cumulative Probability F(x) Probability p(x) 5 CDF: Mixed Nuts and Sockets 0.08 0.06 0.04 0.02 0 1 2 3 4 Vision Processing Time (seconds) 0 1 2 3 4 Vision Processing Time (seconds) 5 80 60 40 20 0 0 1 2 3 4 Vision Processing Time (seconds) 5 Figure 2-34: PDF and CDF for the Mixed Nuts and Mixed Nuts and Sockets The final sub-system was the parts manipulator (or robot). It was expected that the time required for the robot to retrieve parts from the vision window would be normally distributed. This time should be independent of the rest of the system. Figure 2-36 shows the mixed nuts and the mixed nuts and sockets test data fitted with a normal distribution. 100 PDF: Clear Plastic Disks CDF: Clear Plastic Disks 100 Cumulative Probability F(x) Probability p(x) 0.08 0.06 0.04 0.02 0 0 1 2 3 4 Vision Processing Time (seconds) 80 60 40 20 0 5 0 PDF: Plastic Snap Rings 100 Cumulative Probability F(x) Probability p(x) 5 CDF: Plastic Snap Rings 0.08 0.06 0.04 0.02 0 1 2 3 4 Vision Processing Time (seconds) 0 1 2 3 4 Vision Processing Time (seconds) 80 60 40 20 0 5 0 1 2 3 4 Vision Processing Time (seconds) 5 Figure 2-35: PDF and CDF for the Plastic Disks and Plastic Sockets PDF: Mixed Nuts CDF: Mixed Nuts 100 Cumulative Probability F(x) 0.035 Probability p(x) 0.03 0.025 0.02 0.015 0.01 0.005 0 1.2 1.4 1.6 1.8 2 2.2 Robot Motion Time (seconds) 80 60 40 20 0 1.2 2.4 PDF: Mixed Nuts and Sockets Cumulative Probability F(x) 100 0.03 Probability p(x) 2.4 CDF: Mixed Nuts and Sockets 0.035 0.025 0.02 0.015 0.01 0.005 0 1.2 1.4 1.6 1.8 2 2.2 Robot Motion Time (seconds) 1.4 1.6 1.8 2 2.2 Robot Motion Time (seconds) 2.4 80 60 40 20 0 1.2 1.4 1.6 1.8 2 2.2 Robot Motion Time (seconds) 2.4 Figure 2-36: PDF and CDF for Mixed Nuts and Mixed Nuts and Sockets 101 As can be clearly seen, the normal distribution fits the data well. Checking all the test cases shows that the robot motion times are normally distributed. Figure 2-37 shows the fit for the clear plastic disks and the snap rings, which were the worst fit of any of the data. As can be seen, the fit is good, even in the worst case. PDF: Clear Plastic Disks CDF: Clear Plastic Disks 100 Cumulative Probability F(x) Probability p(x) 0.08 0.06 0.04 0.02 0 1.2 1.4 1.6 1.8 Robot Motion Time (seconds) 80 60 40 20 0 1.2 2 PDF: Plastic Snap Rings 2 CDF: Plastic Snap Rings 100 Cumulative Probability F(x) 0.08 Probability p(x) 1.4 1.6 1.8 Robot Motion Time (seconds) 0.06 0.04 0.02 0 1.2 1.4 1.6 1.8 2 2.2 Robot Motion Time (seconds) 80 60 40 20 0 1.2 2.4 1.4 1.6 1.8 2 2.2 Robot Motion Time (seconds) 2.4 Figure 2-37: PDF and CDF for the Plastic Disks and Snap Rings The final question to examine is what happens (statistically) to the data after it has been averaged by the moving window as explained in Section 2.5.2. Since the ultimate goal is to be able to specify the throughput of the feeder in parts per minute, it is logical to ask the following question: ‘‘How does the process of averaging the data affect its distribution?’’ This can be answered by examining the central limit theorem. The central limit theorem can be stated as follows. Let X1, X2, ..., Xn be a random sample from a distribution with mean µ and variance σ2. Then if n is sufficiently large, the sample mean, X , has approximately a 2 2 normal distribution with µ x = µ and σx = σ n. 102 In this case, the Xi are the average parts per minute computed in each window (usually of 5 minute length). X is the probability distribution of the feed rate in parts per minute. The implication of this theorem is that the throughput distribution (in parts per unit time) of all the sub-systems can be approximated by a normal distribution. This allows further statistical analysis to be performed on the data. For example, the question could be posed, ‘‘If the throughput of the feeder for a certain part has a mean of 20 parts per minute and a standard deviation of 1 part per minute, what is the probability that in any given minute there will be less that 18 parts retrieved?’’. Knowing that the true distribution can be approximated by a normal distribution allows the question to be answered using common statistical procedures. (In this case, 18 is 2 standard deviations from the mean, therefore the probability that less than 18 parts will be retrieved in a minute is simply the area under a normal distribution from -∞ to -2 standard deviations. Reading from a standard normal curve area table, the answer is 2.28%.) Figure 2-38 shows the PDF and CDF for the overall system throughput and the conveyor throughput. It is evident that both distributions are well modeled by a normal distribution. Even the throughput of the conveyor system, which when plotted as firstorder arrival time is discrete (Figure 2-31), is well modeled. Figure 2-39 shows the PDF and CDF for the throughput of the vision system and the throughput of the robot. Again, the throughput of the vision system is well modeled by the normal distribution, even though it was shown previously that the part processing times were modeled by an exponential distribution. 103 PDF: Overall Throughput CDF: Overall Throughput 100 Cumulative Probability F(x) Probability p(x) 0.2 0.15 0.1 0.05 0 20 21 22 Average Parts per Minute 80 60 40 20 0 20 23 PDF: Conveyor Throughput 21 22 Average Parts per Minute 23 CDF: Conveyor Throughput Cumulative Probability F(x) 100 Probability p(x) 0.04 0.03 0.02 0.01 0 100 150 200 250 300 Average Parts per Minute 80 60 40 20 0 100 350 150 200 250 300 Average Parts per Minute 350 Figure 2-38: PDF and CDF for the Overall and Conveyor Sub-system Throughput PDF: Vision System Throughput CDF: Vision SystemThroughput 100 Cumulative Probability F(x) 0.035 Probability p(x) 0.03 0.025 0.02 0.015 0.01 0.005 0 60 70 80 Average Parts per Minute 80 60 40 20 0 60 90 PDF: Robot Throughput Cumulative Probability F(x) 100 0.025 Probability p(x) 90 CDF: Robot Throughput 0.03 0.02 0.015 0.01 0.005 0 33 70 80 Average Parts per Minute 33.5 34 34.5 Average Parts per Minute 35 80 60 40 20 0 33 33.5 34 34.5 Average Parts per Minute Figure 2-39: PDF and CDF of the Vision and Robot Throughputs 35 104 In summary, while the underlying distributions of the various sub-systems of the parts feeder are definitely not normal, when the average throughput in units of parts per time is taken, a normal distribution may be used to model the data (and therefore the feeder). All PDF and CDF plots not shown here are included in Appendix 7.1.4. 2.5.10.2 Computing New System Parameters As both computer vision systems and robots increase in speed and decrease in price, it is expected that those sub-systems of a flexible parts feeder will be upgraded. What is then desired is to know a priori what the effect of the upgrade will have on the overall throughput of the system. A similar situation occurs during the design and construction of a new flexible parts feeder. Intelligent trade-offs needs to be made between the speed and throughput of the system versus the cost of the system. In order to determine the throughput of the system after an upgrade or the throughput of a new system, the relationship between the performance of the sub-systems and the overall system must be understood. The mean (µ) and the standard deviation (σ) of both the time per part and the average parts per minute are parameters that are desired. Each will be examined below. The first property to be examined is the mean of the time per part (or, as referred to in the previous section, part interarrival time). As explained in Section 2.4.1, the operation of the feeder was serial. Figure 2-40 is a time line of the sequences which must occur for parts to be retrieved. Part Number 1 2 3 F2 Total Part Feed Time: F1 R2 C3 V3 t +F 3 +F 2 F1 +F 2 F1 =0 e Figure 2-40: Time Line of Part Retrieval Sequence R3 t= t= C2 e im nT F1 t= e im tT bo R1 Ro sio V1 Tim C1 or 0 ey t= nv Vi Co V2 F3 105 The case of multiple feeder moves and vision snapshots can be shown, by inspection, to be the same as the above case, as shown in Figure 2-41. Total Part Feed Time: F1 Total Part Feed Time: F1 t= F1 e Tim +V 2 V1 e im tT bo R1 Ro n sio Vi 0 e e e e Tim or ey +C 2 nv C1 Co t= V2 Tim F1 t= e im tT bo R1 Ro n sio Vi e Tim V1 Tim or ey nv C2 Co n sio Vi t= Tim or ey nv C1 Co 0 = Figure 2-41: Time Line with Multiple Conveyor Moves From these figures, it is easy to see that the total time to acquire a part is simply the sum of the times required by each subsystem. F i = C i + Vi + Ri (2.8) where Fi is the time require to retrieve part i. Ci, Vi, and Ri are the time spent by the conveyors, vision system, and robot in presenting, finding, and retrieving part i. For the case where a feeder advance is not needed, a time of 0 is used (this can be see in the figure during the second part retrieval). Using this information, the determination of the overall mean simply becomes the addition of the means of average part time required for each sub-system. In the following section, the subscript ‘‘ppm’’ will be used to denote parts per minute and the subscript ‘‘iat’’ will denote 1st order interarrival time. µFiat = µCiat + µViat + µRiat (2.9) The next quantity to examine is the average throughput of the system in parts per minute. Determining the mean of the average throughput is a little more involved than the previous case. First, the mean of the overall system in terms of the interarrival times (or total part feed time) can be expressed as µFppm = 60n n ∑F i=0 (2.10) i 106 This formula is a little different from the standard average in that n, the total number of parts, is divided by the sum of the times (rather than the opposite). This is required because the part feed time (Fi) is in seconds per part but is desired in parts per minute. The 60 is to change the time scale from seconds to minutes. Next, the average throughput of each component in units of parts per minute. µCppm = 60n ; n ∑C µVppm = 60n ∑V i i=0 ; n µRppm = 60n n ∑R i i=0 (2.11) i i=0 Equation (2.8) is now substituted into Equation (2.10) as follows: µFppm = 60n n ∑(C + V + R ) i i i i=0 (2.12) 1 = n n n ∑C ∑V ∑R i i=0 60n i + i=0 60n + i i=0 60n Note that the bottom terms are the inverse of the average throughput of each subsystem. Substitution yields the equation for the average throughput of the system in terms of the average throughput of the sub-systems: µFppm = 1 1 1 1 + + µCppm µVppm µRppm (2.13) This is a series addition because the process is serial. The next parameter to examine is the standard deviation of the interarrival time. Since the standard deviation is simply the square root of the variance, that parameter will be used in the following. (Converting from variance to standard deviation is just a matter of taking a square root.) The variance of the system is determined using the standard formula as follows: 107 n n ∑(F ) ∑(F ) − nµ 2 2 σFiat = E [ ][ ] (F ) ( ) 2 2 − E Fi i 2 i i=0 = 2 Fiat i n (2.14) i=0 2 − µFiat = n Using the same formula, the variances of the feed time required by each sub-system can also be expressed as: n ∑(C ) 2 i 2 σCiat = n ∑(V ) 2 2 − nµCiat i=0 i 2 σViat ; n n i=0 = ∑(R ) − nµ 2 2 − nµViat 2 σRiat ; n 2 Riat i = i=0 (2.15) ; n Equations (2.8) and (2.9) are substituted into Equation (2.14) as follows: n ∑(C + V + R ) − n(µ 2 i 2 σFiat = i ) 2 Ciat + µViat + µRiat i i=0 (2.16) n Expanding the squares and rearranging yields n ∑(C ) 2 i 2 σFiat = n ∑(V ) i=0 i + n ∑(R ) − nµ 2 2 − nµViat i=0 2 Riat i i=0 + n n n n ∑C V − nµ i=0 ∑V R − nµ CiatµRiat i i −2 n (2.17) n ∑C R − nµ CiatµViat i i −2 n 2 2 − nµCiat i=0 n ViatµRiat i i −2 i=0 n By examination, the first three terms are the variance of each sub-system. The last three terms are the covariance of the sub-systems. This yields Equation (2.18) for the variance of the system in terms of the sub-systems. 2 2 2 2 [ ( ) ( ) ] ( ) σFiat = σCiat + σViat + σRiat − 2 Cov C,V + Cov C,R + Cov V,R (2.18) The variance of each sub-system is easily found, however, can the covariance between two of the sub-systems be determined if the sub-systems were not operated at 108 the same time? For example, perhaps data had been collected for a functional system online while the data for a potential new robot was collected in a different test. Can the covariance between the existing vision system (or conveyor system) and the potential new robot be determined? Examining the formula for determining covariance yields the answer. ( ) ( ) Cov X,Y = E XY − µx µy (2.19) Obviously, both means are know, but can the expected value, E(XY), be determined? The formula for the expected value is ( ) ∑∑xy p(x,y) E XY = x (2.20) y Examining the above equation shows that it is impossible to determine the covariance of two distributions unless those distributions have been generated by the same process§. This is somewhat intuitive since it makes sense that one cannot determine the interaction between two systems if the data examined was not generated by the systems actually interacting. Consider the following hypothetical example. Imagine that the time required for the robot to retrieve a part is inversely proportional to the time required by the vision system to find that part (in reality, obviously not the case). Then, unless the robot and vision system are actually run together, there will be no such interaction and examining data generated from the vision system and robot operating alone will not display such a relationship. The final parameter to examine is the standard deviation of the average throughput in parts per minute. As in the previous case, the variance will be examined in place of the standard deviation. The first step is to write the variance of the system as a whole and the variance of the sub-systems. ___________________________________________________________________________________ § As an aside, if the three sub-systems were completely independent, then the value of the covariances between them would be 0 and the variance of the overall system could be determined. However, as will be shown in the next section, the sub-systems are not independent and the system variance cannot be determined. 109 n ∑(F 2 σFppm = ) − nµ 2 i=0 n n ∑(C 2 σCppm = 2 Fppm ppmi ) − nµ 2 ∑(V 2 Cppm ppmi i=0 n ; n 2 σVppm = n ) − nµ 2 ppmi i=0 ∑(R 2 Vppm ; n 2 σRppm = ) − nµ 2 ppmi i=0 (2.21) 2 Rppm n Now, as previously, the system variance may be expressed in terms of the sub-system averages. Equation (2.13) shows µFppm in terms of the sub-systems, but a substitution for Fi is also needed. By examination, Fi in terms of the sub-systems has the same form as the substitution for µFppm, the inverse of the sum of the inverses. Making these two substitutions yields   ∑   n i=0 2 σFppm = ( 1 ) ( 2 1 1 1 + + Cppm Vppm Rppm      − n     1 ) 2 1 1 1 + + µCppm µVppm µRppm      (2.22) n Now, there is a problem. The equation cannot be expanded and then partitioned in terms of variance and covariance because the sums of sub-system values appear in the denominator. This prevents any further simplifying of the equation and makes it impossible to determine the variance of the overall system from knowledge of the variances of the sub-systems. This, again, makes sense since it is impossible to determine the interaction of two components if the components are not tested together. After examining the four parameters, it is clear that the average of the part interarrival time and average of the throughput in parts per minute for the overall system can be determined from knowing each sub-system’s rates individually. It is, however, impossible to determine the variance of the system, for both cases (interarrival time and throughput), when only the variances of the sub-systems are known. 110 2.5.10.3 Correlation Between Sub-systems of the Flexible Parts Feeder The final statistical property to be examined is the interaction between the various sub-systems of the flexible parts feeder. This is accomplished by examining the correlation between the time each sub-system spent in getting a part (i.e. if the vision system required a long time to find a part, then on average, did the robot require a long time to retrieve the part?). This is important for several reasons. First, understanding the interaction between the sub-systems of the feeder is important for a complete understanding of the feeder system. Second, as explained in the previous section, understanding the correlation between the sub-systems of the feeder is necessary in determining the throughput of the entire system if only the throughputs of the subsystems are known. There are three sub-systems in the feeder (conveyors, vision system, robot) and therefore there are three possible interactions: conveyor - vision system, conveyor - robot, and vision system - robot. A correlation coefficient is determined for each interaction. The correlation coefficient is found using the following equation. ( ) Cov X,Y ρx,y = (2.23) σx σy The covariance is not used directly because it is susceptible to scaling problems (changing the scale of the variable, from second to hours for example, will change the value of the covariance). ρ is normalized by the standard deviation of both variables and does not change with a linear scaling of the variables. The range of ρ is ±1 (-1 ≤ ρ ≤ 1). A value of ±1 indicates a linear relationship between the variables (i.e. y = ax+b). In general, ρ ≥ 0.8 indicates a strong relationship, 0.5 < ρ < 0.8 indicates a moderate relationship, while ρ ≤ 0.5 indicates a weak relationship. Table 2-21 shows the correlation coefficients between the feeder sub-systems for the tests. It is clear that there is a fairly strong relationship between the conveyor and 111 the vision system while there is little correlation between the robot and either the conveyor or vision system. Plastic Snap Rings Vision vs. Feeder Vision vs. Robot Feeder vs. Robot Plastic Sockets 0.8210 Clear Plastic Disks 0.8841 5 16 0.8696 Inch and 3 8 Inch Nuts 0.5696 Mixed Nuts and Sockets 0.4494 -0.0205 -0.0460 -0.1257 -0.1452 -0.1329 0.0139 -0.0555 -0.1297 -0.1435 -0.1102 Table 2-21: Correlation Coefficients from Feeder Tests A second means of examining the correlation is by plotting the raw data. By examining the data visually, it is also possible to see the dependent relationships. Figure 2-42 shows the data for the clear plastic disks and the mixed nuts and sockets. In the top two plots, the light grey represents the vision processing time, the dark grey represents the robot time, and the thick black line represents the conveyor advance time (note that it is 0 for the first 300 disks fed and for the first 5500 mixed parts fed). In the bottom two graphs, the light grey represents the conveyor advance time, the dark grey represents the robot time, and the thick black line represents the vision processing time. The plots were generated by sorting the data (from smallest to largest) using either the conveyor advance times or the vision processing times. The top plots show the clear plastic disks and the mixed nuts and retainer data when sorted by the conveyor advance time. The discrete nature of the conveyor advance time can be clearly seen (especially in the mixed nuts and sockets data). The relationship between the conveyor and the vision processing time is clearly seen. In both cases, however, the robot time is unrelated to the conveyor and vision system. In the bottom two graphs, the data was sorted by the vision processing time. Again, the relationship between the conveyor and vision system is distinct while the robot time is fairly constant. 112 Clear Plastic Disks: Sorted by Conveyor Time 10 Mixed Nuts and Sockets: Sorted by Conveyor Time 5 4 Time (seconds) Time (seconds) 8 6 4 2 0 0 1000 2000 Number of Parts Fed 0 3000 Clear Plastic Disks: Sorted by Vision Time 0 2000 4000 6000 Number of Parts Fed 8000 Mixed Nuts and Sockets: Sorted by Vision Time 5 4 Time (seconds) 8 Time (seconds) 2 1 10 6 4 2 0 3 3 2 1 0 1000 2000 Number of Parts Fed 3000 0 0 2000 4000 6000 Number of Parts Fed 8000 Figure 2-42: Interarrival Times for the Feeder Sub-systems An explanation of the dependence between the feeder and the vision system is possible if the physical system and mode of operation is examined. The feeder uses the following method, shown in pseudo code, to find a part. While (Part Found == False) {Advance the Feeder} Return the Part Location This process continues until a valid part has been found. This, then, is the reason for the dependence between the conveyor and the vision system. The movement of the feeder is driven by the vision system. But to determine that no parts are in the windows, the vision system must take a picture. This leads to a situation where at least two pictures are required every time a conveyor advance happens. Hence, in general, when the vision time is large, the conveyor advance time will also be large. 113 The difference in the correlation coefficient between the two test cases (clear plastic disks: 0.88, and mixed nuts and sockets: 0.45) can be explained by examining the parts themselves. The disks are much bigger that the mixed parts and therefore more conveyor advances are required. There is also a greater possibility of multiple conveyor advances because the disks do not feed as well as the mixed parts. In the case of the mixed parts, many less conveyor advances were required. Hence, the dependence is not as strong because there are less instances when multiple feeder advances were needed and more vision processing required. This is confirmed by noting that while about 300 disks were retrieved without a conveyor advance (about 10% of the total parts fed), there were about 5500 mixed parts retrieved without a conveyor advance (about 75% of the total parts fed). The slight dependence between the vision system and robot for the cases of mixed nuts and mixed nuts and sockets (0.15 and 0.13) can be explained by examining the physical layout of the workcell versus the method of locating parts in the vision window. The vision system does some basic processing on all the parts in the vision window before attempting to locate a valid part (i.e. determining the centroid location, area, perimeter, etc.). After the preprocessing, the system then begins to pop candidate objects off the queue. Therefore, when there is a longer period of time required to preprocess, there is a larger number of parts in the vision window. When there is a larger number of parts in the vision window, there is a good chance that a good part will be found near the bottom of the vision window because the vision system processes candidate parts beginning from the bottom of the window. Because the lower part of the vision window is nearer the part drop location, there is a good chance that a reduced robot time will accompany a slightly larger vision process time. However, the size of the vision window versus the speed of the robot versus the speed of the vision system make this a weak correlation. A second reason for the reduced correlation is the rotational variance in the part location. If the robot has to rotate a large amount to grasp the part, the time difference between moving 114 to a position in the bottom of the window versus the top of the vision window is negated. The rotation of the part in the vision window has no dependence on where the part is located in the vision window and is therefore an orientation requiring a lot of wrist rotation is just as likely to happen near the bottom of the vision window as the top. A similar argument can be made for the slight dependence between the conveyor and robot. When a conveyor advance has occurred, there is a greater chance that a valid part will be located near the bottom of the vision window. Again, because the vision system locates parts at the bottom of the vision window first, the part found by the vision system will be the one that is closest to the bottom of the vision window. Since the bottom of the vision window is nearer the robot, less time should be required for the robot to retrieve the part. Hence, in general, when the conveyor time is large the robot time should be low. As before, the size of the vision window versus the speed of the robot as well as the rotation of the part tends to lessen the dependence. 2.6 Conclusions A functional flexible parts feeding system has been designed and implemented. The system consists of three conveyors working together. Two of the conveyors are under closed-loop servo control while the third, return conveyor is driven by a fixed-speed AC motor. The system has been shown to feed a variety of parts with no physical modifications and only slight modifications to the control code based on the geometry of the part. Preliminary testing has been performed on several different parts. A new metric has been constructed to better describe the throughput of a vision based flexible parts feeder. The metric breaks the feeder into three sub-systems, the conveyor system, the vision system, and the parts retrieval system. The overall throughput is then a combination of the individual throughputs of the sub-systems. This allows for a better 115 understanding of the throughput of the complete system. Testing has shown throughputs of approximately 10 to 30 parts per minute for the complete system for a variety of parts. Lastly, a statistical analysis of the results of the testing was completed. This examined types of parts distributions which could be used to model the feeder and its sub-systems, methods for determining the overall system properties (average and standard deviation of throughput) given only the sub-system properties, and the correlation between the feeder sub-systems. A exponential distribution fit the overall system, feeder, and vision system throughputs. Therefore, a Poisson process can be used to model the overall system and two of the feeder sub-systems. A normal distribution fit the robot time well. After the data was converted into an average part per minute, all the data was fit by a normal distribution (due to the Central Limit Theorem). It was determined that the average interarrival time and average throughput of the system could be determined from the properties of the sub-systems. However, the standard deviation of the interarrival times and throughput could not be determined from only the properties of the sub-systems (due to the variance between the sub-systems not being equal to 0). Finally, it was determined that the conveyor and vision sub-systems are dependent while the robot is mostly independent of the rest of the sub-systems. 2.7 Future Work While a functional feeder had been constructed and tested, there is still much work to be done. Three main thrusts are needed in future work. One in hardware, one in further testing, and one in theory. 116 Hardware • Industrialize the current design Further Testing • Wider variety of parts • Examine flexible feeding of rolling (cylindrical and spherical) parts • Examine the effects of the number of parts in the bin versus system throughput • Examine alternate forms of removing parts from a bulk hopper • Determine the effects of system parameters on system throughput • Hardware redesigns to improve throughput • Establish the long term (several weeks) reliability and throughput of the system Theory • Determine underlying distributions to model feeder sub-systems • Determine physical explanations to accompany distribution models • Examine parameters other than simply interarrival time and average throughput • Determine metric for part size versus vision window size versus system throughput • Examine and explain the oscillations in the parts flow through the feeder • Examine and explain the sudden jumps in the variance of the system throughput • Find a method of determining system throughput by examining a CAD model of the candidate part • When multiple parts are being fed, find a method of determining the relative throughput of each part when all the parts are fed. Table 2-22: Future Work on Flexible Parts Feeding 2.7.1 Hardware Several hardware related areas of the current design require further work. First, the mounting hardware needs to be redesigned for ease of adjustment. Changing the angle of the current inclined conveyor is time consuming and difficult. It is also limited to angles between 30° and 40°, a wider range of angular adjustment could be useful. The 117 ramp which leads from the inclined conveyor to the horizontal conveyor could also be improved. It needs to be designed such that it provides a smooth transition between the two conveyors regardless of the angle of the inclined conveyor. The packaging of the conveyor control system also needs to be updated. Currently, two electrical boxes house the controller and power supply. An enclosure system needs to be designed and constructed for worker safety. Finally, the walls which form the sides of the conveyors and the bulk hopper need to be updated. Currently, a mix of Plexiglas and cardboard are used where as a uniform sheetmetal system would be more functional and aesthetically pleasing. The second area for hardware improvement is in flexible feeding of rolling parts. Current flexible feeder technology (including the CWRU design) lacks the ability to easily feed rolling parts. Some initial work in experimenting with roughly textured belts has shown promising results, but further testing and work is required. A second approach, which appears promising for rolling parts feeding is a rapidly reconfigurable bowl feeder which would enable feeding of a wide variety of parts with little or no change of hardware. Another area for future work entails examining alternate methods of spilling parts onto the horizontal conveyor. The current inclined conveyor could be replaced by another means of transferring parts from a bulk hopper to an underlit conveyor. For example, a possible solution is to use a generic bowl feeder to scatter parts onto the horizontal conveyor. By removing any part specific escapements on the track of the bowl, a wide variety of parts can be fed with no feeder alterations. Lastly, changes in the design and layout of the system which could improve system throughput need to be examined. For example, the use of multiple robots could greatly improve the throughput of the system by allowing multiple parts to be retrieved from the system at once. As has been shown in preliminary testing, the robot is currently the limiting factor in the overall throughput of the system. A second example would be in 118 the integration of a new vision system. A new system could improve throughput by decreasing the amount of time which is required to locate a candidate part. 2.7.2 Further Testing While the preliminary testing has yielded some insight into the operation and performance of the feeder, it has uncovered more questions than it has answered. The resolution to some of these questions can be found by further testing. In general, a much wider variety of parts needs to be tested in the feeder. Only four different types of parts were tested for this dissertation. Many more parts need to tested. This will yield a better overall view of the system and give insight into the type of parts that do and do not feed well. From this, it should be possible to devise guidelines about what types of parts are best suited to flexible feeding. This should help in the design of new parts for flexible feeding applications. Another area which needs further testing is the effect of the number of parts in the bin on the overall throughput of the system. During testing, there was never enough parts to completely fill the bin. In some cases, the mixed nuts for example, there were not enough parts to even fill the system during operation. How the system responds to the number of parts in the bin is an important parameter in determining how often the bin needs to be replenished. A second goal is to determine the throughput of the system as the bin is emptied. This could give an indication of the ‘‘penalty’’ to throughput for not keeping the bin sufficiently filled. Further testing needs to be done to examine the effects of various system parameters on the overall throughput. System parameters are parts of the system that can be quickly altered (either in software or hardware). The angle of the inclined conveyor, the speed profile of the inclined and horizontal conveyors, the distance moved by the conveyors are examples. Understanding the effects (either great or minimal) on the system is important to maximizing the feeder’s throughput. It is also important in shortening the time required to introduce a new assembly into a workcell. If much time 119 is required to ‘‘tune’’ the parameters of the parts feeder, then the time before a new assembly is being produced will be expanded. Finally, further long term testing needs to be performed. In an industrial setting, the feeder would be expected to run indefinitely with little intervention from the operator (other than loading parts). It is currently unknown how the feeder will perform over long periods of time. The components which are prone to failure need to be first determined and then redesigned to produce a more reliable parts feeder design. A second benefit is determining the long-term throughput capabilities of the system. Over time does the throughput remain constant, or does it begin to falter as the components of the system wear out? How robust is the system as it components begin to wear? The only way to determine the answers to these question is to run the system for extended periods and observe the results. 2.7.3 Theory Further work needs to be done in examining the theoretical processes underlying the operation of the feeder. A truly thorough understanding of the feeding system cannot be obtained until the properties and processes governing the system are determined. The statistical distributions which describe the feeder and its sub-systems need to be further examined. Thoroughly understanding the underlying distributions is a necessary part of understanding the complete feeding system. A second point is to understand, physically, why the processes are modeled by a certain distribution. This could yield insights into the physical operation of the feeder and allow more intelligent redesigns of the system. Parameters other than simply the 1st order interarrival times and average throughputs need to examined. For example, examination of the feeder data in the frequency domain provided some intriguing results. Perhaps examining the data in other lights could reveal other underlying principles of the feeder system. 120 A metric needs to be determined for relating the size of the part to the size of the vision window to the expected throughput of the system. This could help in the design of feeders for new parts. While this seems like a simple ratio, complications arise from two sources: the two-dimensional nature of the vision window versus the three-dimensional nature of the parts and the area to physical size discrepancy. While the vision window is simply a two-dimensional plane, the parts are three-dimensional. When attempting to define a metric for part versus window size, the three-dimensional nature of the parts must be accounted for. For example, a flat disk would have much different properties in the feeder than would a thick cylinder of the same diameter even though they both have the same silhouette when standing on end and viewed from above. The second problem is that two parts may have the same area but different shapes. Consider a flat circular disk and a flat rectangular strip which is long and narrow. While they both have similar areas, it could be possible that the thin strip would be too long to even fit in the vision window while the disk would feed with no problem. The mechanism causing the oscillations in the feeding rate need to be determined and explained. Secondly, the process which causes the abrupt change in the variance of the system throughput needs to be found. These two results (probably due to the system behaving in a non-linear manor) are the most puzzling seen during testing and need to be explained. Lastly, and perhaps the most ambitious goal, is to determine the throughput of the system given only a CAD model of the part. A design tool such as this would allow designers to quickly try many different designs for components and know immediately how well the design would perform in a flexible feeder. One could even envision a system which could refine the design of a component based on its feedability. The user would give the design tool a candidate design and request that the design be refined to improve feedability. The system would then test and alter the design automatically. An added feature of the design tool could be the ability to determine the relative throughputs of 121 individual part types when multiple parts are fed with one feeder. This type of information could be used to help determine the ratios of the types of parts loaded into the bulk hopper when feeding multiple parts. For example, if 38 inch and 5 16 inch nuts were being fed on the same feeder (as in the tests), the parts would have to be added to the hopper in a ratio of 54% 5 16 inch nuts to 46% 3 8 inch nuts to maintain a consistent number of parts in the hopper. 122 3 Modularity in Flexible Manufacturing Workcells 3.1 Introduction For a workstation to be considered agile (or flexible), it has to have the ability to be quickly reconfigured between different assemblies. Modularity can provide an enabling technique for quick changeover, but if not done properly, swapping assembly operations between different workcells could become problematic. Tool offsets can be used to define gripper geometry and assembly locations on modular tables and pallets, however, if they are not correctly defined, modularity is still hampered. Procedures need to be developed which specify how the offsets are determined so that the same assembly hardware and end effectors may be used at any workcell without additional work. To facilitate the ability to interchange modular hardware, it is beneficial to separate the offsets into two groups, one corresponding to physical dimensions in the workcell and the other to the geometry of the assembly specific hardware. As presented in Chapter 1, if a factory of many similar workcells were constructed it would be advantageous to be able to perform any assembly at any of the workcells. Then, when a particular assembly was required, the next available workcell could be used (rather than waiting for the workcell on which the assembly was initially run to become available). By segmenting the offsets into those which are robot specific and those which are assembly specific, interchangeability can be realized. To implement the offsets, homogeneous coordinate transforms are used. These transforms mathematically define the relationship between relative coordinate frames. While homogeneous transforms have been in use in robotics since its inception, the organization and determination of offsets (or transforms) used to enable modularity in workcells is a difficult and complex process. Unless the proper guidelines and procedures are followed, interchangeability between similar robot workcells will not be possible. In 123 124 the following sections, guidelines will be developed to consistently determine and assign offsets such that modular hardware may be exchanged between workcells with confidence. 3.2 Background There is a large body of previous material dealing with offsets and their application to industrial systems. Homogeneous coordinate transforms have been around for many years. Robotics, since its inception, has used offsets to describe the geometry of the robot’s surrounds. The metal forming and machining communities has used offsets for even longer. The following section deals with two aspects of the history of offsets. The first deals with the use of offsets in machine tools. There is much to be learned from examining this field. Secondly, a brief review of the application of offsets to the robotics field will be examined. It is from these roots that the theory and application of offsets developed here is created. 3.2.1 Offsets in CNC Machining While tool offsets used in robotic applications are well established, the CNC machining industry has developed a more robust set of standards for their definition and use. If CNC machine tools are to be used as an example of how to implement tool offsets in a flexible workcell, a further examination of CNC offsets is required. Beginning in the late 40’s, computer control was introduced to machine tools. Soon CNC machine tools became versatile manufacturing machines. Given the proper computer program, tools, and rough stock almost anything could be machined. For the machines to be truly flexible, however, it was necessary to develop a consistent approach to teaching tool offsets and part locations. Without this, setup time was greatly increased, running a job on a machine other than the one on which it was setup was impossible, and software generated off-line needed extensive revision before being usable. This increased machine down time and decreased productivity, which, given the 125 equipment cost of CNC equipment, was not an economically sound practice. A well developed set of standards has been developed over the years which alleviate this problem. It is these types of standards which need to be developed for flexible automation workcells. 3.2.1.1 Machine Tool Offsets are Simpler than Robotic Offsets In many ways, the task of establishing standards for CNC tool offsets is much easier than for robotic workcells. Many of the traditional problems which make it difficult to establish offsets for robotic cells are not present in machine tools. Machine tools, as a whole, tend to be more repeatable and accurate than most industrial robots. This added accuracy allows the machine tool to go to absolute positions in its work envelope. A robot, in contrast, while repeatable, is not able to accurately go to absolute locations in its workspace. Each location is usually taught, however this makes it impossible to move the assembly to a similar workcell. This inaccuracy in robots means another layer of offsets must be employed to account for each individual robot’s internal calibration. Another area which eases the machine tool’s employment of offsets is in the geometry of the ‘‘end effectors’’. In the case of machine tools, the ‘‘end effectors’’ are drills, endmills, and cutting tools. These tools have simpler and more easily describable geometries than complicated robotic grippers. The tip of the tool (the point where the tool transform ends) is readily definable in the case of a drill or endmill while it is difficult to define in the case of a robotic gripper. The tip of a turning tool in a lathe would obviously be the point of the tool. In the same manner, the end of an endmill would be a logical tool tip. In machining cases, some point of the tool is in contact with the material being cut and this location is defined as the tool tip. In the case of a robotic gripper the tool tip is a much more arbitrary point. Should the tool length be to the end of the fingers, or to the top of the fingers. Given a more complicated gripper, an articulated hand being an extreme case, how could one reliably describe the tool tip. 126 The accuracy of the tools used in machining centers is much higher than those used in robotic applications. Manufacturing tools, by design, must be highly accurate. A 1 inch diameter drill that was actually was 11 16 inches would be useless for its intended purpose. By the same token, an endmill that was labeled as 1 2 of an inch in diameter would also be of little use if it was greatly out of tolerance. It is also easy to accurately measure the size of a machine tool. End effectors for robots, on the other hand, are not easy to gage. They also involve moving components, which makes it more difficult to determine a location from which to make a measurement. For example, is the diameter of the gripper taken to be when the gripper is open or closed. This makes determining offsets for robotic grippers less straightforward. In addition to the size of the tools themselves, the method of mounting tools is also more accurate with machine tools. Rigid, accurate, repeatable tool holders are readily available for most machine tools. For example, when attaching an endmill to a vertical machining center, it can be assured that the endmill is concentric with the spindle (if it was not, the machine would not be very useful). Robots, in contrast, usually only provide a generic bolt hole pattern on a flange. This method of mounting is not as accurate and precludes the possibility of simply bolting the gripper onto another robot without determining a new gripper transform. Another factor which makes the implementation of modular machining centers less difficult is the construction of the machining center vs. a robot. The workspace of a machining center is defined by the machine itself. The x and y axis of the machine move the workpiece under the z axis (or quill) as work progresses. There is no calibration of the machine to the workcell since the workcell is defined by the machine. In contrast, a robot is simply a piece of equipment in a workcell. It must be calibrated to the workcell to be useful. Without calibration, it is impossible for the robot to successfully reach arbitrary locations in the workcell. 127 Another advantage of a machining center over a robotic workcell is the ability to determine tool offsets on the fly. Since the tools are simple compared to robotic grippers, a simple touch probe may be used to quickly determine a tool offset on the fly. This can also be used to alter a tool offset during operation to compensate for tool wear. Given the complexity of most robot grippers, this is currently not possible. Some type of vision based calibration procedure holds the best hope for adding this feature to a robotic cell. The only unknown which is left is the position of the workpiece on the table of the machine. This can be taken care of by the use of a workshift. This workshift is a simple transform which moves the origin of the machine’s coordinate system to an arbitrary location (usually the corner of a workpiece). A probe may be used to find this offset automatically each time a new piece is loaded into the machine. Many unknowns exist in a robotic workcell, however. The location of the robot relative to the workarea, the tool offset needed for the gripper, the location of table hardware in relation to the table frame, the location of the pallet in the robot’s workspace, and the location of parts on flexible feeders are examples of unknowns. And, unlike a machine tool, it is difficult to accurately and consistently determine these parameters. 3.2.1.2 Explanation of Machine Tool Offsets In most machine tools there are only two types of offsets, tool offsets and a workshift. Tool offsets are used to define the geometry of the tool in relation the quill of a machining center or a turret of a lathe. They are simple offsets which only require two parameters. In the case of a machining center, the offset is the diameter of the cutter and the length of the cutter. This is given in relation to the quill of the machine. The diameter of the cutter is used to allow the machine to compensate for the fact the cutter is of finite size. Without this offset, the machine would cut the shape or form of the part too large or too small. The tool length is used to determine the amount to raise the quill of the machine to allow the tip of the tool to be in the correct location. With a lathe, the offset is given as an x, y, and tool nose radius value. The x and y parts of the offset relate 128 the position of the tool tip to the center of the turret to which the tool is mounted. This allows the machine controller to drive the tip of the tool along the correct contour to produce the part. The tool nose radius value os used to compensate for the fact that the tool is not a sharp point. This allows the machine to cut tapers and radii to the correct size. The second offset used is a workshift. The workshift is used to move the origin of the machine’s coordinate system to a more suitable place. This allows the machine program to be based on a coordinate system attached to the part rather than the coordinate system attached to the machine. Programming relative to the part has two advantages. First, dimensions may be read directly from the print and second, the program may be used at any machining center regardless of machine geometry. 3.2.1.3 An Example Factory As an example, consider the hypothetical factory described in the introduction which uses 10 vertical machining centers to produce a wide variety of molds for the plastic industry. Each mold is machined from a common sized billet of aluminum. Each machining center has a bank of common cutting tools available for use whose offsets are initially determined off-line using an optical tool setter (e.g. Parlec Parsetter [66]) and updated on the fly using a touch probe. A robot is used to load billets onto pallets which are transported to the machines via a conveyor system. When an order is received, the next available machine is selected. A blank billet is routed to the machine while the program to create the mold is downloaded to the machine’s controller. The program is written based on dimensions from the CAD drawing of the part and specifies that tools be used that are available at the machines. The program does not specify any tool offsets as they are stored locally at each machine. When the material arrives at the machine, a workshift offset is calculated using a touch probe and the machine begins producing the part. Through out the process, the machine can monitor tool wear and update its offsets 129 as necessary to maintain the necessary tolerances. When the part is finished, it is routed to an unloading station. While the ‘‘factory of the future’’ described in the introduction is hypothetical, the situation discussed above is in wide spread use. If it is hoped to implement a flexible manufacturing factory, it seems logical to examine how a flexible machining factory is deployed. Specifically, how are tool offsets used to allow a wide variety of machines to produce the same part given the same program. The question now becomes, what can be learned from machining centers and how can that knowledge be applied to flexible manufacturing. 3.2.1.4 Lessons From Machining Center Offsets The first thing which is immediately evident from machining centers is the development and application of standards to all aspects of the system. Standards are in place (ISO 25.060.X, ISO 25.080.X, ISO 25.100.X) which define all aspects of the tooling including the geometry of the tools, the shape of the tools and their function, and the method of mounting tools to the machine. In addition to standards such as those mentioned, a set of standards describing robotic offsets and the method for determining them are needed to ensure interchangeability between workcells. A set of standards defining how a robot mounts to a workcell and how tools mount to a robot’s flange could also be useful to enable the quick replacement of robots which are failing or technologically out of date. The second lesson to be learned from machining centers is the separation of offsets into two categories: those which relate the geometry of the tool to the quill of the robot and those which relate the location of the workpiece to the world coordinate system of the machine. For example, tool offsets specify the geometry of the tool to the quill of the machine. They are specific to the tool and are valid regardless of the machine at which they are used. In contrast, the workshift allows the machine to determine the location of a part within its work envelope. Each machine will determine the workshift 130 differently depending on the exact geometry and dimensions of the particular machine. By constructing the machine control program relative to the part any machine may use the same program once the workshift has been determined. There are two lessons to be learned from machine tools. The first, it is necessary to establish standards to ensure that methods determined to construct robotic offsets are always valid. The second, that offsets be separated into groups which allows each offset to be valid independent of the geometry of the workcell on which it was determined. 3.2.2 Robot Offset Background There has been a considerable amount of previous work done in the area of robotic offsets. There has also been some work done on the applicability of off-line programming to manufacturing. That is, how can one specify physical assembly locations using only a simulation of the workcell. In addition, most modern robotic programming systems and languages include functions for setting up and using offsets (Adept’s TRANS command [67], for example). However, there are usually no guidelines which explain a method of determining offsets. Furthermore, to date, no work has been done trying to develope a general method for specifying offsets which will enable modular reconfigurable workcells. Smith and Nitsan [68] describe a reprogrammable assembly system under development at SRI International. In this system, the assembly station is composed of multiple coordinate frames which are all related back to a single ‘‘reference’’ coordinate frame. A ‘‘pointy’’ probe is used to calibrate the coordinate systems back to the reference system. Paul [69], in the context of motion trajectories, describes a process of defining multiple coordinate systems all related back to a ‘‘base’’ system. Each coordinate system has multiple relative locations defined, which the robot uses. An example would be a block with two holes. A relative coordinate system is established on the block, and the position of the holes are defined relative to this coordinate system. Then, if the block is 131 moved, the locations of the holes need not be retaught. Only the position of the block needs to be determined. Paul also used a directed transform graph, which is used later, to represent an otherwise complicated series of homogeneous transforms. Takase, Paul, and Berg [70] introduced a structured approach to programming locations in a robotic workcell. In this paper, many coordinate locations are established and related back to a ‘‘world’’ system. This paper also discusses, briefly, which locations can be programmed from prints, which need to be taught, and the implications of ‘‘per print’’ vs. taught. A discussion of programming methods is also given. Woollett [71] introduced a method of automatically teaching robot locations. This is in the context of reducing on-line teaching times of off-line generated programs. A single degree of freedom touch probe is used to determine locations. By using the probe in different directions, full 6 DOF data can be generated. Routines exist for determining positions of pegs, holes, and surfaces. Zhuang, Roth, and Sudhakar [72] developed a method of determining both the relation of the robot base to the world frame and the robot’s tool offset at the same time. This is done using homogeneous coordinate transforms. Quinet [73] has discussed some of the problems inherent in off-line programming and workcell calibration for off-line programming. Some of the problems are differences between the model of the robot and the actual robot and differences between the geometric model of the workcell and the actual workcell. Yong, et al. has compiled a thorough discussion of the off-line programming of robots. Included is an extensive list of problems and errors encountered during programming. Wilson [74] describes the problems encountered when trying to design a system to be flexible as well as reliable. Some of the problems which are faced when designing for reliability and flexibility are discussed. 132 3.3 Theory It should now be clear that implementing the factory of flexible workcells described in the introduction will require a mathematical description of the spacial relationship between locations in the robot’s work envelope. Homogeneous coordinate transforms fit this need well. Their extensive use in robotics is also a benefit since the offsets used for tools, modular tables, and pallets should be a natural extension of the robot. Paul introduced the use of digraphs in the description of coordinate transforms to aid visualization of the relationship between various transforms. They will be used in the rest of this chapter to describe the relationships between the various coordinate systems used to implement the offsets. 3.3.1 Homogeneous Coordinate Transforms During any given assembly, there will be many locations in the workcell whose locations must be known. These include modular table locations, pallet locations, and locations of parts on the flexible feeders. In addition to these locations, there are also tool offsets which relate the end of the gripper to the robot’s flange. While it would be possible to describe all the offsets in a single (world) coordinate system, it would be completely counter to all the attempts to modularized the workcell. In addition, the tool offsets, which are defined relative to the moving end of the robot, would be constantly changing depending on the current location of the robot. To be modular, it is necessary to relate the locations of positions and the tool offsets to coordinate systems in which they are stationary. The locations on the modular tables need to be related to a coordinate system located directly on the table. Likewise in the pallet, pocket fixture locations need to be related to a coordinate system located in the pallet. In the case of parts on the flexible feeders, their locations need to be related to the camera frame. Finally, the geometry of the gripper needs to be relative to a coordinate system attached to the flange of the robot. Once the relative positions are known, the robot simply needs to determine the location 133 of the underlying coordinate system. Then all the relative locations are known. For example, consider a modular table with 5 assembly locations. Once the location of the modular table is known, all the assembly locations can then be computed. Homogeneous transforms enable this by providing a mathematical model which relates points in space to various coordinate systems. 3.3.1.1 Positions and Orientations Positions are points in space. These points are defined relative to a coordinate system, however the point itself does not depend on the coordinate system to exist. Vectors relate the positions of points in space to the origin of a coordinate system and are composed of 3 terms as in Equation (3.1) where i, j, and k are unit vectors (a underscore ~ designates a vector and a overscore ^ designates unit length). The 3 terms are found by projecting the vector onto the three orthogonal axes of the coordinate system. It is important to realize, however, that the same point may be represented by many different vectors defined in different coordinate systems. ^ p = x i∼^ + y∼j^ + zk∼ (3.1) ∼ Points are generally listed in the form of a column matrix (or a transpose column matrix) to aid in equation formulation. [] x p= y = x z [ y z ] T (3.2) Since the same point may be expressed in a number of different coordinate systems, generally it is located relative to a coordinate system which is convenient. Then, when needed, its position relative to any other coordinate system may be determined. Defining a position in space by a vector is typically not enough information for an offset. A robot must be told, not only where to go, but how to orient its hand relative to that location. For example, if a cube is to be retrieved with a parallel jaw gripper, does 134 the robot position the gripper horizontally from the side of the block or vertically from above the block. Both methods ultimately position the jaws of the gripper at the same point, however, they do not have the same orientation at that point. To specify a position and orientation in space, a coordinate system is positioned at the point with its axes aligned with the desired orientation. The combination of a point in space to define position with an attached coordinate system (the point is located at the origin of the attached system) to define orientation is know as a frame. Thus, by specifying a frame, a complete location and orientation is defined. Frames are described by homogeneous transforms (developed in the next section) which are specified relative to a coordinate system, however, the frame itself does not depend on the coordinate system to exist. Note, the term frame and coordinate system are typically used to describe the same thing, a position and orientation in space. In general, the term frame is used to describe a position/orientation while the term coordinate system is the position/orientation relative to which the frame is defined. However, their use is interchangeable. It is assumed in a workcell that there is a world coordinate system, WCS, (or world frame) to which all other frames must ultimately be referenced. However, each frame in the workcell need not be directly defined in the WCS, transforms allow each frame to be defined relative to any other. Therefore, many different transforms may be used to describe the same frame relative to different coordinate systems. The frame itself has not changed, only the transform. Generally, each frame is defined relative to a convenient coordinate system and then determined in the WCS when needed. 3.3.1.1.a Notation Obviously, as the number of frames and points in the workcell increases, keeping track of all the information becomes difficult. It is, for example, important to remember the relationship between frames (which frame is defined relative to which coordinate system) and to remember which transforms are related to which frames. To facilitate 135 this, a notation, as defined by Craig [75], will be used. In this notation vectors (or points) w are defined as a name with a leading superscript, p. The leading superscript describes the coordinate system (or frame) to which the vector is relatively defined. In this case, vector p is defined relative to frame w. A second notation describing vectors is with a w leading superscript and subscript, v p. This specifies vector p defined relative to frame w but specified relative to frame v. A transform (or frame) is defined as a name with a w leading superscript and subscript, v S. The leading subscript defines the frame name and the superscript describes the coordinate system to which the frame is defined. In this w case, the transform v S describes frame v relative to frame w. The leading super/sub script notation will allow equations, defined later, to be easily checked for consistency. The last w notation example is the frame as defined above with an additional trailing sub-script, v Sx. The trailing sub-script indicates that only the specific part of the transform is being w referenced. In the proceeding example, the term v Sx means the x component of the transform which defined the frame v relative to coordinate system w. Since each transform is created from six quantities, there rotations and three positions, it is possible to specify any one of the quantities singularly. This notation will appear in Section 3.7.3.3.a where the derivation of tool offsets is discussed. Now that frames have been introduced, there is still the business of determining a frame in some coordinate system other than the one in which it is defined. First, the case in which the coordinate systems differ only by a translation is examined. Next, the case in which the coordinate systems differ by only a rotation is examined. Finally, the general case is described. 3.3.1.1.b Translation 1 Consider a vector, p, which is defined relative to frame 1. Now consider another 0 frame, 0, which is offset from 1 by a translation. Let the vector qOrigin_1 define the 136 0 position of frame 1 relative to frame 0. Then the vector p defined in frame 0, p, can be determined using vector addition. 0 1 0 p = p + qOrigin_1 (3.3) Note, however, this only works when the two coordinate frames, 1 and 0, are at the same 1 orientation in space. So, as an example, if a point is defined by vector p as (1, 1, 1) and 0 the vector qOrigin_1, which defines the location of frame 1 in relation to frame 0 is (2, 2, 1), 0 then the vector p in frame 0, p, is found as (1, 1, 1) + (2, 2, 1) = (3, 3, 2). Figure 3-1 shows this graphically. Figure 3-1: Translational Offset 3.3.1.1.c Rotation Next, consider the case of only rotation. The origins of frame 0 and frame 1 are coincident. To determine the vector p in frame 0 when it is known relative to frame 1, a relationship between the two frames must be known. To determine this relationship, write the three unit vectors from frame 1 in relation to frame 0. This yields 3 column 137 vectors which may be written as a 3x3 rotation matrix. Each column of this matrix is one of the three unit vectors of frame 1 written relative to frame 0. [ 0^ 1∼i 0^ 1∼j 0^ 1∼k ] (3.4) The vector p defined in frame 1 can then be determined in frame 0 by simply premultiplying the vector by the 3x3 matrix. 0 p= ∼ [ 0^ 1∼i 0^ 1∼j ] 0^ 1 1∼k p ∼ (3.5) Using Euler angles, three successive rotations may be performed to arrive at any given orientation. The transformations corresponding to rotation about each of the three axes (x, y, and z) can be expressed as ( ) [ ( ) [ 1 Rot x,θ = 0 0 Rot y,θ = [ cos(θ) 0 − sin(θ) cos(θ) Rot z,θ = sin(θ) 0 ( ) ] 0 cos(θ) sin(θ) 0 − sin(θ) cos(θ) 0 1 0 ] sin(θ) 0 cos(θ) − sin(θ) cos(θ) 0 ] 0 0 1 (3.6) (3.7) (3.8) Since rotation is not commutative, the order of rotation must be specified. Euler angle sets, which are 3 ordered rotations, may be used. While there are 12 Euler angle sets, the ‘‘z-y-z’’ angle set will be used (also called the 3-2-3 Euler angle set). That is, a rotation about z followed by a rotation about the new y followed by another rotation about 138 the new z. Assuming a rotation of ψ about z followed by a rotation of ϕ about y followed by a rotation of θ about z yields the following transform [ cθ z,θ y,ϕ z,ψ rot rot rot = sθ 0 ( ) ( ) ( ) − sθ cθ 0 ][ 0 0 1 cϕ 0 − sϕ sϕ 0 cϕ 0 1 0 ][ cψ sψ 0 ] − sψ cψ 0 0 0 1 (3.9) Where cθ means cos(θ) and sθ means sin(θ). When combined the complete transform becomes    cψcϕcθ-sψsθ - cθcϕsψ -cψsθ cθsϕ   rot z,θ rot y,ϕ rot z,ψ = cϕcψsθ + cθsψ - cϕsψsθ + cψcθ sθsϕ     - cψsϕ sϕsψ cϕ    ( ( ( ) ( ) ( ) ( ) ) (3.10) ) This describes the complete orientation of a coordinate system with respect to another coordinate system. For example, consider a point defined by vector p 1 [ p= 1 ∼ 1 ] T 1 1 (3.11) 1 relative to coordinate system 0S. The coordinate system 0S is rotated from a base frame, 0 WS, 0 by the following Euler angle set (z,y,z) = (90,45,-90). Note that frame WS is the WCS 0 for the system. The point, defined in frame 0, p, becomes ∼   − sin( − 90)sin(90) 0 0 1 p = 1S p =  ∼ 0   0  ( [ 1 = 0 0 0 1 Sqrt(2) − 1 Sqrt(2) ) 0 ( ) − cos(45)sin( − 90)sin(90) sin(45)sin( − 90)   1  1 sin(45)sin(90)  1 cos(45)  0 ][ ] [ ] 0 1 Sqrt(2) 1 Sqrt(2) 1 1 1 = Sqrt(2) 1 0 Figure 3-2 is a view of the two coordinate systems and the point. [] (3.12) 139 Figure 3-2: Rotational Offset 3.3.1.1.d General Rotation and Translation Now the desire is to perform a translation and rotation at once, using a concise mathematical form. To accomplish this, a homogeneous transform is used. The transform is created by augmenting a 3x3 rotation matrix with a 3x1 position vector to form a 4x4 matrix. The form of the matrix is specifically   S=   R 0        D   s  (3.13) Where R is the 3x3 rotation matrix, D is the translation part, P is the perspective part, and s is the scaling factor. Scaling and perspective information is used mostly in graphics (with the exception of camera calibration). The bottom row can have no effect on the transform by setting it to [ 0 0 0 1]. The representation of vectors must also be altered slightly to ensure the matrix multiplications are valid. The new vector representation is a 4x1 vector where the first three values are as were previously defined and the fourth 140 value is a scale factor. The scale factor divides the other three terms of the vector and in offset applications is set to 1, as shown in Equation (3.14). [ p= a ∼ b c ] s T (3.14) where x = a s, y = b s, z = c s The x, y, and z in the second line of Equation (3.14) refer to the same quantities as in Equation (3.2). In practice, any frame may be defined relative to any coordinate system by a homogeneous transform. The translational part of the transform is the position of the frame’s origin relative to the coordinate system (and measured in the principal directions of the coordinate system). The rotational part of the transform is the rotations, using an Euler angle set, which the frame must undergo to arrive at its final orientation. The second important property of a general transform is its inverse. This will become important in solving a set of transform equations. A general solution of the inverse is computed as the following (with s set to 1)   u −1 v = uS =  vS   RT 0        − RTD  1  (3.15) u Physically, the inverse of the transform v S is a transform that relates the position and v orientation of the base coordinate system (frame v) to frame u, which is written uS. As an example of a general (rotation and translation) transform, consider that u frame u is defined relative to a coordinate system v by homogeneous transform v S. In addition, the coordinate system v (or frame v) is defined relative to the WCS by v transform WS. The location of frame u in the WCS is now required, so the transforms are multiplied together (in the correct order) to determine the answer. The correct order is always from right to left starting with the transform defining the frame location. This is 141 the same as the way the rotational transforms were arranged in the previous section. w Assume that frame v is translated by vector p and rotated by ‘‘z-y-z’’ Euler angles of (90°, ∼ v 90°, 0°) relative to the WCS. Also assume that the frame u is translated by vector p and ∼ w v rotated by Euler angles (45°, 90°, -45°) from frame v. Vectors p and p are defined as ∼ ∼ [ p = [20 w p = 25 ∼ v ∼ 25 40 20 10 v ] 1] 1 T (3.16) T u which leads to the following for transforms WS and v S  0  v  0 S = W −1   0 −1 0 0 0 0 1 0 0  1 2  u  −1 2 vS =  − 1 Sqrt(2)  0  25  25 40  1 −1 2 1 2 − 1 Sqrt(2) 0 1 Sqrt(2) 1 Sqrt(2) 0 0 u 20  20 10  1 (3.17) v now, to determine the location of frame u in the WCS, pre-multiply v S by WS to get the u desired transform, which is WS. Notice how the subscript of the first transform ‘‘cancels’’ with the superscript of the next transform (in this case, the second transform). This allows a quick check that the transforms have been written in the correct order. This becomes increasingly important as the complexity of the system expands. Performing the multiplication yields  0  v u u  0 WSv S = WS = −1   0 −1 0 0 0  1 2  Sqrt(2) 1 − =  −1 2  0  0 1 0 0 25  25 40  1  1 2  1 2 −   − 1 Sqrt(2)  0  −1 2 − 1 Sqrt(2) 1 2 0 −1 2 1 2 − 1 Sqrt(2) 0 − 1 Sqrt(2) 0 − 1 Sqrt(2) 0 5  35 20  1 1 Sqrt(2) 1 Sqrt(2) 0 0 20  20 10  1 (3.18) 142 The resulting transform can be interpreted as follows. The location of the origin of frame u relative to the WCS is 5 units in the x, 35 units in the y, and 20 units in the z (of the WCS). The orientation of frame u can be seen in the columns of the rotational part of the transform. The first column is the projection of the x axis of frame u onto the axis of the WCS. In this example, the x axis of frame u is pointed into the quadrant defined by positive x, negative y, and negative z (of the WCS). . Figure 3-3: General Homogeneous Transform (Note that the magnitude of each of the columns, when taken as a 3x1 vector is 1, for example, column one is Sqrt(1 4 +1 2 +1 4 ) = 1). Examining the second column shows the projection of the y axis of frame u onto the WCS. It is in the quadrant defined by negative x, negative y, and positive z. Lastly, the third column shows the projection of the z axis of frame u onto the WCS. From this, it can be seen the vector is in the x-z plane and is 143 pointed in the negative x, negative z direction. Examining Figure 3-3, a graphical representation of the example problem, shows this to be the case Figure 3-4: Many Coordinate Frames Lastly, examine a general case of multiple frames all related by multiple relative homogeneous transforms. Consider that there are a total of seven frames, numbered 1 7. Consider also that frame 5 is defined relative to frame 4 which is define relative to frame 3 which is defined relative to frame 2 which is defined relative to frame 1, which is the WCS. Frame 7 is defined relative to frame 6 which is defined relative to frame 1. Figure 3-4 depicts this graphically. The problem is now to determine the transform from frame 5 to frame 7. Mathematically, this series of frames may be written as 1 2 3 4 5 2S 3S 4S 5S 7S 1 6 = 6S 7S (3.19) 144 5 The desired transform, 7S, can be solved for by pre-multiplying each side by inverse 5 transforms until only 7S remains on the left-hand side. 5 7S 3.3.1.2 = 5S − 1 4S − 1 3S − 1 2S − 1 6S 7S 4 3 2 1 1 6 (3.20) Potential Pitfalls In Using Homogeneous Transforms While homogeneous transforms are extremely useful and are widely used in robotics, they can be a difficult concept to grasp on a fundamental level. There is also a great potential for making errors in both transform definitions and transform use. This section will outline some potential problem areas where it is easy to make errors. 3.3.1.2.a Translation First It is important to remember in a general 4x4 homogeneous coordinate transform, that the translation is performed relative to the current coordinate frame, then the rotation is performed from the newly translated position. This is important when considering the tool transform developed later in this chapter. In those transforms, it is desirous to have the rotation performed first followed by translation. To accomplish this, two offsets are defined, one with just rotation followed by one with just translation. 3.3.1.2.b Definitions of Rotation There are two methods of defining three rotations, which are necessary for arriving at a new orientation in space. The first is to define the rotation relative to the current state of the rotated frame. For example, rotate ψ about current z (which is aligned with base z to start), then rotate ϕ about the current y, then rotate θ about the current x. Each such set of three rotations in a specific order are known as Euler angle sets (a total of 12 exist). The second method of defining rotation is to specify all three rotations about the stationary axis of the base frame. For example, rotate ψ about base z, then rotate ϕ about base y, then rotate θ about base x. This is known as fixed axis rotation (order is important in either case). It is then important to understand what 145 method was used in relating coordinate systems so that the proper homogeneous transforms may be constructed. Property: Performing three rotations about rotating axes is equivalent to performing the same three rotations in the opposite order about fixed axes [11]. Derivation: The key to deriving the above relationship is realizing that a rotation, θ, about any arbitrary axis is the same as first rotating the arbitrary axis to be coincident with a known axis of a coordinate frame, performing a rotation, θ, about that axis, then rotating the arbitrary axis back to its original orientation. Begin with a moving frame coincident with a base (or fixed) frame and assume an x-y-z Euler angle set is used. First, perform a rotation about the moving x axis. Since the frames are coincident, this is the same as performing the rotation about the fixed x axis. Next, perform a rotation about the moving y axis. However, this could also be viewed as rotating the moving frame back to a position coincident with the base frame, performing the rotation about the moving frame’s y axis (which is the same as performing a rotation about the fixed frame’s y axis since they are coincident) and then rotating the moving frame back to its original orientation. This can be written mathematically as { }=RR RxRy Rx− 1Rx x y (3.21) where R is a rotation matrix about the axis specified by its sub-script. Examining this equation shows that the Rx− 1Rx term in the braces is simply I. Therefore what is left is simply rotations about the fixed axes in the opposite order. Now considering three rotations, the following actions are performed. First, rotate about the moving x (which is coincident with the fixed x) then rotate the moving frame back to be coincident with the base frame. Perform the rotation about the moving y (which is coincident with the fixed y), then rotate the moving frame back to the position it was in after the first rotation about x. Now, rotate the frame back to be coincident with the fixed frame (this requires two rotations, the first to ‘‘undo’’ the rotation about x and the second to ‘‘undo’’ the 146 rotation about y). Perform the third rotation about the moving z (which is again coincident with the fixed z) and then rotate the frame back to the position it was in after the first two rotations. The frame is now in its final orientation. This series of rotations can be written as follows { { } }{R R } = R R R RxRyRz Ry− 1 Rx− 1Rx Ry −1 x x X Y Z (3.22) Now examining this equation shows that the terms inside the braces all equate to I which just leaves the three rotations about the fixed axes in the opposite order of the rotations as specified about the moving axes. Therefore, a suitable homogeneous transform matrix can be constructed for rotations specified about either fixed or moving axes. 3.3.2 Digraphs - A Brief Definition In all but the simplest of cases, attempting to visualize all the offsets in their proper order is futile. To allow the easy visualization (and therefore, understanding) of the offsets, digraphs are used. A digraph is ‘‘a finite non-empty set V, whose elements are called points, together with a set A of ordered pairs (a,b) called arcs, where a and b are distinct members of V’’[76]. To put this into less mathematical terms, a digraph is a number of points in space (points) connected by lines through space (arcs). Figure 3-5 is an example of a digraph. The indegree of a point is the number of arcs ending at that point. The outdegree of a point is the number of arcs originating at that point. For example, in Figure 3-5, point A has indegree 1 and outdegree 3 while point E has indegree 3 and outdegree 0. 147 C A D E B Figure 3-5: An Example Digraph The question now becomes, how is this used to more easily illustrate the relationship between coordinate systems in a robotic workcell? Equate the points of a digraph with coordinate systems and the arcs with homogeneous transforms. Then a digraph could represent a series of coordinate systems linked together by a series of homogeneous transforms. As an illustration, consider the situation shown in Figure 3-3, which shows three frames joined by two transforms. The same system can be represented by the digraph in Figure 3-6. In this digraph, point w represents the base frame, arc v u (w,v) represents wS, point v represent the first frame, arc (v,y) represents v S, and point u represents the final frame. w v wS v u vS u u wS Figure 3-6: Digraph Representation of Figure 3-3 The benefit of this approach becomes evident when taking into consideration the complexity of a complete workcell. A workcell utilizing two modular tables, multiple flexible feeders, multiple grippers, and multi-pocketed pallets could have as many as 30 different coordinate systems. Trying to relate and visualize all those systems without a graphical representation would be difficult. As a further example, consider Figure 3-4, a system consisting of seven coordinate frames. Attempting to explain this or draw this in 148 detail is difficult and time consuming. Yet, Figure 3-7 shows the above situation as a digraph. It is clear that this is a much simpler way of depicting offsets. 7 6 7S 6 2 3S 1 2S 1 6S 2 1 3 4S 3 4 5S 4 5 5 7S Figure 3-7: Digraph Representation of Figure 3-4 3.4 Modularity Enabled by Vision After examining transforms, the question arises, ‘‘Is there an automated way of determining the position of work tables and pallets in relation to the robot’s world coordinate system?’’ While it would be possible to manually teach the location of a modular table at system start up, it would be prone to error and counter productive. Manually teaching the location of each pallet as it arrives at the workcell during operation would be futile. Depending on many factors (the size of the product being produced, the number of parts in the assembly, and the physical size of the pallet itself as examples) several pallets each minute could be entering and leaving the workcell. It would not be practical to manually teach each new pallet location in this instance. Machining each pallet precisely, while functional, is also a less than ideal solution. High cost, more chance of jamming errors, and gradual wear of the components are all problems with this approach. The best solution is a system than can accurately locate both the modular tables and pallets automatically, quickly, accurately, while at the same time minimizing necessary tolerances, chance of jamming and wear on the system. With the introduction of reasonably priced machine vision systems, the above criterion are reachable. 3.4.1 Vision Allows . . . Using a machine vision system to locate assembly hardware and pallets has many advantages. Perhaps the most important advantage is the ability to quickly locate 149 items in relation to the robot automatically. As an example, consider the process of registering a pallet into the world coordinate system of the robot. Since the pallets arrive in the same general area each time, the robot is taught a position in which the arm mounted camera can ‘‘see’’ the pallet. In the CWRU workcell, three circular dots (1 2 ’’ in diameter) are located on the pallet and form a localized coordinate system. Figure 3-8 shows a view of a pallet with vision registration marks. When a pallet arrives, the robot moves to the taught location and determines the position of the dots in the camera’s coordinate system. Using a camera calibration transform (determined at system installation or after a camera has been physically moved or altered), the location of the dots are transferred to the world system of the robot. Once the location of the dots are known, a local coordinate system may be established using one dot as the origin, a second dot as a point on the x axis and a third dot as a point on the y axis. Y X ig Or in Figure 3-8: Vision Registration Marks on Pallet Using this system as the pallet relative coordinate system, the position of the pallet relative locations can be determined in the robot’s world frame. All this can be done in a few seconds when the pallet arrives. This allows the system to quickly determine the location of pallets during operation. 150 This type of ‘‘on-the-fly’’ registration has many advantages over a hard located system (a system in which actuators and hardened dowel pins are used to locate pallets). Since the vision system is a non-contact method of registration, the accuracy does not slowly degrade over the life of the assembly as mating surfaces wear. Another advantage is a greater immunity to jamming. In many cases, accurately locating a pallet or modular table involves lifting precision ground pins into matching holes. Since the pins are being used for positioning, there must be little difference between the size of the pins and the holes into which they fit. This situation can easily lead to jamming and sticking if they are not perfectly aligned or become dirty or corroded. Since the pallet is not required to arrive at a precise location in the vision based approach, much looser tolerances can be used on the locking mechanism which holds the pallet or modular table in place. After the pallet or table is locked down, the vision system can easily determine its exact location. Using loose tolerances greatly reduces the chances of jamming or sticking. The vision based approach can be accurate. Using the proper lenses and CCD sensor sizes, accuracy on the order of thousandths of an inch is easily obtainable. See Section 3.4.3 for a discussion of improving the accuracy of locating pallets and modular tables in a workcell. Some opponents to using vision claim cost as a prohibitive reason, but as time progresses, this continues to becomes a weaker argument. As hardware and computing systems become more powerful and less expensive, the cost of vision systems will continue to drop. Secondly, as flexible feeding systems (which use vision) become more prevalent, vision systems will already be present in the system. Compared to the computational intensity required for flexible parts feeding, the requirement for pallet and modular table registration is small. It is usually possible to add an additional arm mounted camera, to be used for pallet and table registration, to an existing vision systems without adversely affecting its performance. 151 3.4.2 Problems using vision While a machine vision system is well suited to pallet and modular table registration, there are a few problems and cautions that must be attended to if the system is to perform as expected and desired. For a vision system to be useful, the camera must be calibrated to the robot. The calibration uses a homogeneous coordinate transform to relate the location of objects in the vision frame to locations in the robots world coordinate system. The parameters of this 4x4 transformation matrix must be determined before the system can be used. The calibration of a camera to a robotic workcell is not a trivial task. It usually involves moving a disk (or some other type of target) around in the vision window while recording the robot positions in the world coordinate system and the corresponding target location in the vision coordinate system. A regression is then performed to determine the values of the transform matrix which relates the location of the vision window to the robot’s world system. This is a tedious and error prone process and is not repeatable. The same calibration procedure can be run several times in succession with widely varying results. Usually it is a matter of repeating the calibration until acceptable results are obtained. Many vision systems have built in calibration routines, which help greatly, but it is still a tedious process to determine a valid camera calibration. The accuracy of the system is only as accurate as the calibration. While this can be well within acceptable limits, as was discussed in the previous paragraph, obtaining a good calibration is a difficult process. The camera itself tends to be rather fragile in comparison to the rest of the system. Any slight movement of the camera relative to its mounting position on the robot’s arm can render the current calibration useless. With the robot arm moving throughout the workcell, extra care must be taken to ensure that it does not hit anything. 152 Lastly, obtaining proper lighting is one of the biggest challenges of vision systems. Without consistent, repeatable lighting, repeatable results cannot be obtained from the vision system. Light sources outside the workcell, such as overhead building lights and windows letting in sunlight, can cause havoc on a vision system. A system cannot be called robust if it only works (literally) on sunny days or when no overhead lights are burned out. Therefore, great care must be taken to insulate the system against unwanted sources of light which could degrade performance. 3.4.3 Improving Accuracy As mentioned in the previous section, accuracy of the machine vision system can be a source of error. The error typically comes from two sources: errors in the camera calibration and improper setup of the physical system (camera, lenses, . . . ). Errors from the improper setup of the system can be minimized by carefully adjusting the system. A 6 degree of freedom camera mount was designed to allow the cameras to be properly aligned with the rest of the system. Figure 3-9 shows this mount. It allows the camera to be adjusted in 6 independent degrees of freedom (3 translations and 3 rotations) to ensure that the camera is properly positioned over the vision window. Errors introduced because of the camera calibration can be minimized in two ways. First, make the field of view of the camera as small as is possible. For example, when setting up a stationary camera over a flexible parts feeder, adjust the field of view of the camera to fit the underlit window. Making the window bigger will not help the system, and will only magnify the error in the camera calibration. In general, the larger the field of view, the smaller the pixel to millimeter ratio, and therefore the less accurate the returned position. 153 Figure 3-9: 6 DOF Camera Mount Secondly, when designing a vision registration system for modular tables and pallets, make the dots which are used to set up a local coordinate system as far apart as possible. The farther apart the dots are, the less rotation error that will be introduced into the system. Since three points are used to determine the local coordinate system, any error in determining the location of the dots can become errors in the resulting localized coordinate system. The error introduced is constant in translation, but linear in rotation. An error of 1 mm in the reported location of the origin of the local coordinate system will be a constant error in the localized coordinate system. In contrast, a position error resulting from an error of 1° in the orientation of the local coordinate frame will grow linearly as the distance from the origin increases. The following equation determines the error in fixture locations given an initial error in the position of the local coordinate frame. εx and εy are the translational errors in the position of the coordinate 154 frame, εθ is the rotational error in the coordinate frame, and r is the radial distance from the origin. Total εx = εx + rεθ Total εy = εy + rεθ (3.23) By putting the vision registration dots far apart, the rotational error of the local coordinate system can be minimized and therefore the error in any fixture location is also minimized. 3.5 Methods of Implementation Now that transforms have been reviewed the question becomes, ‘‘How can homogeneous transforms be applied to a robotic system to enable a modular workcell ?’’ While there are many ways in which to apply the transforms (or offsets) which will allow the workcell to complete its task, most will not allow for the ‘‘factory of identical workcells’’ scenario which was examined in Section 3.1. Consider a simple pick and place motion of the robot. In the most simple case, all that is needed is two taught locations to which the robot moves. No offsets are used. The robot moves to the first location, grasps a part, then moves to the second location and releases the part. Taking the same simple pick and place situation to the opposite extreme yields a much more complex system. Multiple localized coordinate systems may be used to compute a final part orientation while multiple tool offsets lead from the flange of the robot to the tool tip (for example, offsets from the flange to a quick changer to a remote center compliance device to a rotary wrist mechanism, to a pneumatic actuator and to the tool tip). In the first case, the assembly can only be run on the workcell on which it was setup. Once taken apart, the locations must be retaught before the system can run again. In the complex case, many parts of the workcell could be changed without affecting the ability of the robot to finish its task. Physically different workcells may also be used to perform the same assembly. The question becomes how to achieve a balance between simplicity and non- 155 reusability versus complexity and ultimate reuse. That is, what is the least complex selection and application of offsets which will allow a modular, reconfigurable system? The problem which makes the selection and application of offsets so difficult is uncertainty in the physical dimensions of the constructed system. Unless great care is taken to ensure alignment and sizing, it is difficult to determine the exact placement and alignment of components of a workcell. For example, a complex gripping system might be composed of a quick connect tool plate, a remote center compliance device, a rotary wrist, and two grippers. All these components would be bolted together, however, the accuracy of any of the connection points could be off by as much as the difference between the diameter of the screw holes and the bolts. Given all these uncertain joints, it is impossible to accurately predict the location of the gripper tip with respect to the quick changer. Other sources of error include the uncertainty in the construction of assembly hardware and the error in the repeatability of the robot. All these uncertainties make it difficult to construct a modular reconfigurable system. However, by encapsulating the uncertainty, modularity may be achieved. The following sections will examine various methods of implementing offsets. Each will discuss the merits and drawbacks of the particular method. Finally, in Section 3.6, the chosen method will be discussed. 3.5.1 Precision Machine Everything The first case is one in which everything is precision machined. There would be no uncertainty in any positions or locations and the robot would be accurate and repeatable. All the tool offsets and assembly locations could be calculated from mechanical drawings and directly entered into the control program. Then, simply by specifying where the robot should go and what offsets should be used, the system would work. This is what is done with CNC machines. Since everything is precisely machined, tool offsets are quickly and accurately determinable, and the machine is accurate there is no problem in using this method. Unfortunately, manufacturing workcells are not 156 accurate or repeatable enough to use this method. Even if extra care was taken to ensure that the tools and assembly fixtures were precisely machined, the differences in the internal calibration and accuracy of each individual robot at different workcells would make this approach fail. There is also the difficulty in accurately determining (or for that matter defining) the tool tip of a robotic gripper. 3.5.2 Bolt Everything Down, All Locations Taught This is the most straightforward method of setting up a workcell. There are no offsets used, only taught locations. No extra effort is taken to accurately construct or mount assembly hardware or grippers. The robot is manually steered into a pick or place location and the location of the flange of the robot recorded. Then by moving the flange of the robot to this position at a later time, the gripper will be in the correct place. As an example, consider picking a part from one location and placing it at another location. The two locations are simply taught to the robot and it is instructed to move between these locations. While a functional approach to offsets, it can lead to many problems in more complex workcells. First, the system is interdependent, if the gripper is altered in anyway, then all the assembly locations must be retaught. Second, if errors begin to appear during workcell operation, it is often difficult to determine the source of the problem and fix it. Finally, there is no possibility of swapping the assembly operation between similar workcells. This setup is marginally useful if the workcell is only going to be used for one, simple assembly. 3.5.3 Precision Mount: One Tool Offset, Taught Locations In this setup, the modular tables are accurately mounted in the workcell and the pallets are precisely fixtured when they enter the workcell. The work tables, pallets, and grippers themselves are constructed without precision and the errors in construction are accounted for in the offsets. The tool offset is determined by placing a part on the flexible feeder and using the vision system to determine its location. The tool offset is then constructed to successfully pick the part from the feeder. (This assumes a vision based 157 flexible feeder is being used. If that is not the case, the tool offset is entered per print and the pick location is taught.) This offset is then used when going to assembly locations. Each assembly location is taught as a location in the robots world coordinate system using the offset determined when retrieving the part. This method is attractive since only one offset is used for the tool. It seems logical that since the tool has not changed, then the tool offset should not change either. While this method is functional (and in wide spread use), it has several drawbacks. First, when attempting to swap the assembly to another workcell, the assembly will fail because of inaccuracies in the mounting of the robots and because of each robot’s unique internal calibration. The second problem with this method occurs when the tool offset is modified to improve the quality of the part retrieval. Since all the assembly locations were taught using the same tool offset, modifying that offset to better retrieve the part causes all the assembly locations to fail. After the offset has been modified, all the assembly locations need to be retaught. Lastly, the argument that one offset should represent one tool fails for a tool that changes configuration during operation (such as a rotary jaw gripper, see Section 5.4.3). Such a tool has a different geometric configuration when it is at the assembly location versus when it is at the retrieval location. 3.5.4 Precision Mount: Many Tool Offsets, Per Print Locations This case is similar to the previous case in that the modular tables are precisely mounted and pallets are precisely fixtured in the workcell. In this case, however, there are multiple tool offsets, one for each pick or place location. The assembly locations are entered into the system per print. While the modular tables themselves are not machined or assembled with precision, any errors in the locations on the tables are accounted for in the tool offsets. This method has one major advantage over the previous, the tool offset for each location may be altered without affecting any other location. This allows, for instance, a single assembly location to be modified slightly without disturbing the rest of the operation. There are still problems, however. They are mostly encountered when 158 attempting to run the assembly at another workcell. Since the worktable or pallet is precisely fixtured, errors in the internal calibration of the robot and mounting of the robot in the workcell will cause the operation to fail. There is a perception that by teaching multiple tool offsets, extra work is being done. However, when it is realized that either tool offsets or locations have to be taught to account for errors in the construction of the table or pallet it becomes clear that no extra work is performed. 3.5.5 Locate at Start-up: One Tool Offset, Taught Locations This method eliminates the precision mounting of the modular tables and pallets and instead registers the table into the workcell using a vision system. One tool offset is used for each tool and each assembly location is taught. The tool offset is determined by placing a part on the flexible feeder and using the vision system to determine its location. The tool offset is then constructed to successfully pick the part from the feeder. This offset is then used when the rest of the assembly locations are taught. This method is better than the previous in that it can be run at other workcells without modification. Because the assembly locations on the modular tables and pallets are determined by the vision system, which has been calibrated to the particular nuances of each robot, the assembly will occur successfully. The problems with this method, however, are the same as with those in Section 3.5.3. When the tool offset must be modified to improve the reliability and quality of retrieving parts from the feeder, all the assembly locations must be retaught since they are based on the original tool offset. 3.5.6 Locate at Start-up: Many Tool Offsets, Per Print Locations As in the previous section, this method also determines the locations of table and pallets using a vision system. An arm mounted camera is used to locate and register the modular tables and pallets into the world coordinate system of the robot. The spatial relationship between the camera’s vision frame and the robot’s world frame account for any inaccuracies due to internal robot calibration. In contrast, however, the assembly 159 locations on the worktable and pallet are entered into the robot’s control program as they appear on the prints. Any inaccuracies arising from the construction of the tables and pallets are accounted for in multiple tool offsets. The tool has an offset for each pick or place location. This allows each location to be to be manually altered for optimal performance without affecting the other locations. No extra work is incurred with this method since either a location or a tool offset must be taught for each assembly area to account for inaccuracies in table, pallet, and gripper construction. This method is employed in the CWRU workcell. 3.5.7 Tool Offsets The last two topics of this section deal with the end effector of the gripper and not the system as a whole, which is a subset of the above methods. In general, a tool may be described with as little as a single offset to a large number of offsets. For example, in Section 3.5.5 when it says one tool offset is used, that could be one physical offset or multiple physical offsets concatenated together to form a single offset. The reason for using multiple offsets is to localize parts of the gripper that might need to be changed or replaced during operation and to make it easier to manually alter the offsets to improve the performance of the system. 3.5.7.1 One Offset per Tool In this method, only one transform is used to relate the location of the tip of the tool to the flange of the robot. This method is the simplest way to use offsets, since only one offset is constructed. The problem with this method is found when attempting to manually alter an offset to improve the system performance and reliability. A general homogeneous transform first performs a translation then a rotation. When altering an offset, it is convenient to visualize the intended movement of the tool along axes aligned with the part or fixture. For example, if a long slender rod (a pencil) with a localized coordinate system centered at its midpoint and the x axis pointing lengthwise is being grasped by the robot, it is convenient to describe a modification to the tool offset in the 160 coordinate system attached to the rod. If just a single transform is used, then the x, y, and z components of the offset will be aligned with the coordinate system of the flange of the robot since the rotation of the coordinate system would not occur till after the translation. This would make it more difficult to adjust the transform because a move along the length of the rod would not correspond to a change in only the x or y value of the offset. 3.5.7.2 Two Offsets per Tool Using two offsets per tool has all the simplicity benefits of the single offset case, but it adds the ability to align the tool coordinate system with the gripper fingers. In the case of one offset, the translation comes before the rotation, but by using two offsets, it is possible to define the first offset as pure rotation and the second offset as pure translation. In this way, the rotational offset is used to align the tool coordinate system with the gripper fingers and then the translational offset is used to account for the physical distance between the flange and the tool tip. Using only two offsets can, however, have disadvantages. When a complex gripping system is used (multiple grippers on a rotary wrist with a force transducer and remote center of compliance, for example), one cannot account for all the parts of the gripper with individual offsets (since there is only a single translation). If a part of the gripper is replaced or altered, the entire gripper offset would need to be retaught rather than only modifying the affected transforms. 3.5.7.3 Multiple Offsets per Tool One overall tool offset is determined by concatenating many offsets which physically represent various parts of the gripping system. As in the previous example, a complex gripping system might be composed of a quick change tool plate, a RCC device, a force transducer, a rotary wrist, and a pneumatic gripper. A single offset could be defined for each of these pieces of the tool. The first offset would go from the flange of the robot to the end of the quick change tool plate, the next from the tool plate to the end of the RCC 161 and so on. The final offset would end at the tip of the tool. The reason for using multiple offsets is to help keep track of each module. It is easy to visualize a series of transforms linking the progressive parts of the gripper. This also takes care of the problem of altering the offset. The coordinate system can be rotated to align itself with the parts before the end of the gripper is reached. This ensures that the x, y, and z components of the final transform will be aligned with the part allowing for easy adjustment. Lastly, this concatenation of offsets allows the gripping system to be modified and the offset to be easily corrected. If, for instance, the force sensor from the hypothetical gripping system is removed, by simply removing the offset responsible for the force sensor and concatenating the remaining offsets, a new offset for the modified gripper may be obtained. The problem, however, with this approach is the uncertainty induced during the assembly of the gripping system. Without a lot of extra work the absolute dimensions and positions of the components of the gripping system relative to one another cannot be known, it simply adds complexity to the system by defining a multitude of offsets if they are not physically accurate. 3.6 Proposed Method For use in the agile manufacturing workcell at CWRU, it was chosen to employ the method discussed in Section 3.5.6 and Section 3.5.7.2. All modular table locations and pallet locations are programmed per print and multiple tool offsets are used to account for any inaccuracies in system assembly. For each specific tool offset, two physical offsets are used. The first offset is used to align the tool coordinate frame with the coordinate system on the part fixture, the second offset is used to translate from the quick change master plate mounted on the flange of the robot to the tool tip. This method has been found to be most versatile and least complex way in which to enable a modular reconfigurable workcell. The following two sections examine the offsets used for two typical workcell tasks: retrieving a part from a vision based flexible feeder and placing a part into an 162 assembly fixture located on a vision registered, modular table. These are two of the most common tasks performed in a workcell and serve as a good overview of the use of offsets. A detailed discussion of each offset will follow in Section 3.7. It is important to understand the layout of the offsets in the system before examining them in detail because some of the offsets are composed from different sources. For example, the offset which describes the location of the table relative coordinate system is composed from two sources, the vision system and the physical workcell calibration. The height of the worktable is constant for each workcell. Once the system is constructed, the height of the frame on which the worktable mounts does not change. However, the height of the frame at different workcells will differ. The x-y location and rotation of the worktable, in contrast, is determined on the fly by the vision system. During system start-up, the system determines the x-y location and rotation of the worktable then combines that with the height information from the initial workcell calibration to determine the overall worktable transformation. 3.6.1 Retrieving a Part From a Flexible Feeder The world coordinate system of the robot and the workcell are coincident and form the base coordinate frame for the following discussion. To successfully retrieve a part, the robot must align the coordinate system located at the tip of its grippers with the coordinate system aligned with the part on the flexible feeder. To determine the location of the part on the feeder, the camera mounted over the vision window on the feeder is used to acquire an image of the part. A vision algorithm is used to locate the part in the coordinate frame of the vision system. A transform matrix, which relates the coordinate frame of the vision system to the world coordinate system of the robot, is used to determine the location of the part in the robot’s world coordinate frame. After determining the x-y position of the part, the height of the part is entered into the transform. The value is simply the height of the belt of the flexible feeder determined relative to the robot’s WCS. Equation (3.24) shows this. 163 WCS Part S WCS = cameraS camera part S (3.24) This is shown graphically by the digraph in Figure 3-10. The dotted line represents the adding of information to make the transform of the part location in the WCS WCS, Part S, complete. It is not a complete transform in itself. Part x, y, θ Part WCS cam WCera S Camera Frame S Feeder Height Figure 3-10: Locating a Part on a Flexible Feeder in the WCS After the location of the part in the WCS has been determined, the position of the tip of the tool relative to the flange of the robot must be determined (the robot controller, using forward kinematics, knows the location of the flange of the robot). At the flange of the robot, the first offset applied rotates the Z axis of the coordinate system to a positive, vertical orientation. This offset is examined in Section 3.7.2.6. The next offset moves the coordinate system to the end of the quick connect master plate and rotates it to align with the master plate. Section 3.7.2.7 examines this offset. Two gripper offsets are used to define the location of the tip of the gripper in relation to the quick connect master plate. The first offset aligns the coordinate system on the quick connect master plate with the coordinate system attached to the part. The second offset moves the coordinate system to the tip of the tool. Tool offsets are examined in Section 3.7.3.3. Equation (3.25) shows this. Flange ToolS Flange = Z VerticalS Z Vertical QuickConnect ToolRotation QuickConnectS ToolRotationS Tool Translation S (3.25) Now, by aligning the coordinate system at the tip of the tool with the coordinate system attached to the part, the robot can successfully retrieve that part. Figure 3-11 shows a digraph of the system with all the offsets in place. Part Loc Camera Frame S Tool Trans S QC Offset Tool Rot Tool Trans Q ui ck C T o on o l nec Ro t t ui Z ck V Co erti nn cal ec t S = Z Vertical Q S S Part Loc Flange Frame V Fla er ng tic e al Robot’s WCS CS e W ang Fl Z Camera Frame Ca m er W aF ra CS m e S 164 Tool Rot S Figure 3-11: Retrieving a Part from a Flexible Feeder To actually perform this action, the robot controller needs to know the location to place the flange of the robot such that tip of the tool is aligned with the part. The robot must know the flange location because the inverse kinematics in the robot’s controller only describes the robot from the base to the flange. In other words, the robot’s controller does not actually control the position of the tip of the tool, it controls the location of the flange and uses the inverse tool offset to determine the proper flange position to produce the desired tool motion and position. Therefore, the correct flange location can be determined by examining the digraph in Figure 3-11 and moving from the robot base to the robot’s flange CCW along the graph. Doing this, the proper flange location is given by the following transformations, as illustrated in Equation (3.26). WCS Flange S 3.6.2 WCS = Camera Frame S Z Vertical − 1 Flange − 1 Camera Frame Tool Rot − 1 Quick Connect − 1 Tool RotS Quick Connect S Z VerticalS Part Loc S Tool Trans S (3.26) Placing a Part at an Assembly Location To successfully place a part into an assembly fixture on a modular table, the robot must align the coordinate system attached to the tip of the gripper to the coordinate system attached to the table location. To determine the fixture location on the modular table, the robot uses the arm mounted camera to determine the location of the local frame attached to the table. The homogeneous transform, which relates the vision coordinate frame to the robot’s world frame is used to determine the location of the three fiducial points in the robot’s world frame. Once these three locations are known, a coordinate system may be set up on the table and a transform computed which relates the location of the table frame to the world 165 frame. To determine the height of the table relative coordinate frame, the height of the table frame is used. The position of the table location, Table Loc p1S, (which is itself a transform from the table relative frame to the fixture location) is post-multiplied by the table position transform to determine the location of the fixture in the robot’s world frame. The position of the table location is determined by examining the mechanical drawing which was used to construct the table. The location as called out on the print is entered for the table relative location. Equation (3.27) illustrates this. WCS p1 S = TableWCS Loc S Table Loc p1S (3.27) This is shown graphically in Figure 3-12, The dotted line represents the adding of WCS information to make the transform of the table relative frame in the WCS, Table LocS, complete. It is not a complete transform without this information. cam WCera S Camera Frame S Table Frame Height Table Loc x,y,θ Table Loc WCS Figure 3-12: Determining a Local Table Coordinate System in the WCS After the location of the fixture is known, the robot has to move itself into a position where the tip of the gripper is aligned with the fixture position in the world frame. The tip of the gripper relative to the robot’s flange frame is determined using four offsets similar to those defined in Equation (3.25). Actually, the first and second offset, which rotate the flange frame to vertical and defines the quick connector are exactly the same. The tool rotation and translation offsets accounts for any inaccuracies in the construction of the work table. Figure 3-13 shows all the offsets necessary to place a part on a modular table. Table Loc Fixture Loc S Fixture Loc = Tool Trans Tool Rot Tool Trans S ck C T o on o l nec Ro t t ui QC Offset Q Z Vertical ui Z ck V Co erti nn cal ec t Flange Frame Q S S V Fla er ng tic e al Robot’s WCS CS e W ang Fl Z Table Loc Ta bl WC eL S oc S S 166 Tool Rot S Figure 3-13: Placing a Part into a Fixture on a Modular Table As with the previous case, since the robot’s controller only really controls the position of the flange, the robot must determine this location when the tool tip is coincident with the fixture location. Equation (3.28) mathematically describes this situation. WCS Flange S = TableWCS Loc S Z Vertical − 1 Flange − 1 Table Loc Tool Rot − 1 Quick Connect − 1 Tool RotS Quick Connect S Z VerticalS Fixture LocS Tool Trans S (3.28) Section 3.7 below lists all the transforms which are used in the workcell. The placement of the transforms is important in ensuring that the workcell is both functional and reconfigurable. Without the proper selection of offset, it would be impossible to guarantee that any assembly could be performed at any workcell without a lot of reteaching of offsets and assembly locations. The offsets are broken into two groups, those specific to an assembly and those specific to a workcell. If a transform is generated using a vision system coupled with a physical dimension (such as the local coordinate system on a modular table), then the two parts which make up the total offset are discussed individually in their own section. 3.7 Tool Offset Components To enable the modularity of the system, the offsets need to be separated appropriately. By grouping the offsets, they become easier to teach and maintain and allow any assembly to be performed at any workstation. If offsets are not properly grouped, then those pertaining to the workcell and those pertaining to the assembly become intertwined and it becomes impossible to move an assembly to another workcell. 167 The offsets are divided into three different classifications as explained in the following sections. The first class includes offsets which are directly related to the workcell. They are inherent in the construction of the physical workcell and have nothing to do with the assembly. The second class includes offsets which are directly related to the assembly. They are related to the physical hardware used for assembly and are not related to the particular workcell being used. The final class includes offsets which are determined at runtime. They are used to relate the first two classes of offsets to one another. They are usually determined by a vision system, but could be found by some other type of registration device. 3.7.1 Simplifying Assumptions Before proceeding into a detailed discussion of the offsets, the simplifying assumptions on which the following is based needs to be discussed. The assumptions concern the orientation in which the modular tables, pallets, and vision based flexible parts feeders are mounted in the workcell. Specifically, what is the relationship between the orientation of the world frame of the robot and the orientation of the components? While the following is going to refer specifically to worktables, the argument is equally applicable to pallets and vision based flexible feeders as well. The underlying problems and equations are the same. The key to solving the case of a worktable mounted at any angle relative to the robot is in the vision registration of the table in the robot’s world frame. The first problem is determining the camera calibration. Most camera calibration routines make the assumption that the plane in which parts are resting is parallel with the x-y plane of the robot. This reduces the calibration to a 2-D problem and allows the calibration procedure to proceed without altering the height at which the robot picks and drops the target. Calibrating a camera whose viewed plane is not aligned with the robot’s x-y plane is difficult. This difficulty is due to the fact that the problem cannot be reduced 168 to two dimensions. In the general case, the world z location of the object cannot be set because it is dependent on the x-y location of the object in the vision window. The second problem is the camera, which is only capable of determining 3 independent coordinates of the location of the table, the position (x and y) and orientation (θ) in the camera frame. In general, however, there are six unknowns in the location of the table (relating to the 6 degrees of freedom for a 3-D body in free space), x, y, z, and three Euler angles. The other three unknowns, the height of the table and the skew of the table relative to the camera, are dependent on the construction of the workcell and must be taught to the system. In the discussion that follows (Section 3.7), it is assumed that the plane in which parts are retrieved and the plane in which modular tables and pallets rest is parallel to the x-y plane of the robot’s WCS. This allows the equations derived to be examined and explained easily. However, the method of determining offsets and the tool offset calculator (presented in Section 3.7.3.3.b) are applicable to the general case. They are not limited by the assumptions in Section 3.7. The final general topic discussed is a definition of the height of a modular table, pallet, or flexible feeder. This question becomes relevant when attempting to calibrate a camera in the general case. The difficulty lies in determining what, physically, is the height of the table. There is confusion because the camera plane, the robot’s x-y plane, and the resting plane of the parts seen by the camera are all skewed one to another. The key to understanding the problem is realizing what is being specified by the height. Since the camera cannot return the physical distance to the object seen in the image, this is the quantity which is being specified by the height. A definition of the height is then the following: The height of a modular table, pallet, or flexible feeder is the euclidean distance between the origin of the robot’s world coordinate system and the plane in which the table, pallet, or flexible feeder is located. The distance vector is defined as being normal to the plane in which the table, pallet, or flexible feeder is located. 169 3.7.2 Offsets specific to the workcell The offsets described in this section are related to the physical workcell and not to any hardware which is specific to a particular assembly. They are used to relate the position of the robot to its physical environment. In the case of SCARA type robots, this coordinate system is located at the base of the robot with the positive z axis pointing up, the positive x axis pointing out the front of the robot and the positive y axis directed to complete a right handed coordinate system. 3.7.2.1 Height of a Modular Table Frame This offset relates the height of the frame which supports the modular tables to the base of the robot. Using the definition stated above, this dimension is the distance from the origin of the robot’s world coordinate system to the top of the table frame (and normal to the table frame). This offset accounts for the variation in the heights of the table mounting frames in relation to the robot. This dimension is combined with information returned by the arm mounted camera during the modular table registration to allow the assembly to be successful if the height of the modular table changes (when moving the assembly to a different workcell, for example). The top of the frame which supports the modular table is used as the reference location rather than the top of the table itself so that the thickness of the plate used for the table does not matter. For a SCARA robot, the offset is determined in the following manner. First, a pointer of known length is attached to the robot. The length of the pointer may be accurately measured using a set of vernier calipers or a similar tool, as shown in Figure 3-14. This length should be measured from the top face of the quick connector to the tip of the pointer (as shall be discussed in Section 3.7.2.7, the offset of the robot mounted quick connector is measured to the bottom of its main body). Next, the pointer is lowered over the table until it is just touching the surface of the frame. If the pointer will not touch the table, a flat block of known height may be placed on the frame. The pointer is 170 then lowered until it touches the block rather than the frame. When the pointer is touching the frame (or block), the location of the flange of the robot in the robot’s world coordinate system is recorded. Figure 3-15 shows this relationship. Figure 3-14: Measuring the Length of the Pointer Tool The z value of the quick connector offset (Section 3.7.2.7) is added to the length of the pointer (and to the height of the block if one was used). That value is subtracted from the height value of the flange of the robot (the z component of the current robot location) to determine the table height. Equation (3.29) illustrates: WCS Table Height = FlangeSz − ( Z Vertical Quick Connect Sz + Block ) Height + Pointer Length (3.29) The above procedure is used to determine the height of each table frame in the workcell. It needs to be done separately for each table frame because there is no guarantee that each table frame will be at the same height. This value only needs to be determined once when the workcell is constructed. It does not need to be recalculated unless the robot or the table is reinstalled. 171 Figure 3-15: Measuring the Height of the Table Frame 3.7.2.2 Height of a Flexible Feeder This offset relates the height of a flexible feeder to the base of the robot. This dimension is the distance from the origin of the robot’s world coordinate frame to the top of the belt of the flexible feeder. Variations in the mounted heights of the flexible parts feeders are accounted for with this offset. When combined with the results of a vision routine used for parts recognition, a complete transform describing the location of a part on the feeder can be constructed. This offset is necessary because the camera used to locate parts on the flexible feeder cannot determine the height of the part in its camera coordinate frame. Since the feeder is composed of a flat belt, this value is constant for any part being fed. This offset is determined in a similar manner to the table frame height. Using the same pointer as before, after positioning the robot over the flexible feeder, slowly 172 lower the pointer until it comes into contact with the feeder belt (often, a flat block is not needed since the feeder is typically physically mounted higher in the workcell). When the pointer is touching the feeder belt, the location of the flange of the robot in the robot’s world frame is noted. This is shown in Figure 3-16. The height of the feeder is then determined by adding the length of the pointer (as determined in the previous section) to the z value of the quick connector offset (Section 3.7.2.7) on the robot. This value is subtracted from the height of the flange of the robot (the z component of the current robot location) to determine the feeder height. WCS Feeder Height = Flange Sz − ( Z Vertical Quick Connect Sz + Pointer ) Length (3.30) Figure 3-16: Measuring the Height of the Feeder As in the case of the table frame, a separate height must be determined for each feeder since each feeder may be at a slightly different heights. This value needs to be 173 calculated when the system is constructed. It only needs to be recomputed if the robot or feeder has been moved. 3.7.2.3 Height of the Pallet This offset specifies the height of the pallet relative to the base of the robot. The distance measured is the vertical difference between the top of the pallet and the origin of the robot’s world frame. Variations in the height difference of pallets at different workcells are accounted for in this offset. When combined with the data returned from the vision based pallet registration, a transform directed from the base of the robot to the pallet is created. As discussed earlier, this dimension is, in general, the height difference between the robot and whatever system is employed to transport sub-assemblies between workcells. If a method of parts transport other than a traditional conveyor is being used, AGV’s for example, this could refer to a height of the tray that the AVG carries. What is important is that the height of the pallet is know in relation to the origin of the robot’s coordinate system. This value needs to be determined to the top of the pallet with no fixturing attached (since different fixtures might be different thicknesses). The pallet must also be in the position that it is in when an assembly is occurring. For example, if a modular conveyor system is being used, the pallet lift transfer unit used to transfer the pallet off the main line should be fully lowered before the height is determined. If an AGV is being used, it should be in its fully docked position before this measurement is made. The height is determined using a procedure similar to the previous two examples. First the pointer is attached to the robot. In this case, as with the table frame, a flat block may be needed as an extension. After the robot is positioned over the pallet, it is lowered until the pointer is touching the pallet (or block if it was needed) (shown in Figure 3-17).The location of the flange of the robot is noted and the height of the pallet is calculated in the following manner. The thickness of the block (if needed) is added to the 174 z component of the quick connect offset and the length of the pointer. This value is subtracted from the height of the flange (the z component of the current robot location). Equation (3.31) shows this. WCS Pallet Height = FlangeSz − ( Z Vertical Quick Connect Sz + Block ) Height + Pointer Length (3.31) As in the previous two cases, this value only needs to be determined once during the setup of the system. It then needs to be recalculated only if the relationship between the pallet delivery system and the robot is changed. Figure 3-17: Measuring the Height of the Pallet 3.7.2.4 Registration Picture Locations In general, an arm mounted camera is used to locate the modular tables and pallets. While there is no physical reason that a dedicated camera could not be used for this task, economic concerns suggest the use of an arm mounted camera. In the case of the modular table and pallet, the number of pictures taken is much less than for flexible feeding, therefore steering the robot to the picture taking location does not affect the 175 throughput of the system. It is not economically justifiable to place a camera over each modular table location when it would be used only once during system start-up. 3.7.2.4.a Modular Table Registration Location Locations need to be taught to the robot which will place the arm mounted camera over the registration dots on the modular tables. These location need only be taught once. Since all modular tables are mounted in generally the same location and have their registration dots in the same relative locations, any mounted table should present the dots to the camera from the taught location. Because the dots are moved farther apart to minimize error, multiple picture taking locations are needed. One dot is seen at each picture location. This actually simplifies the registration program since an algorithm is not needed to determine which dot is at the origin, which dot is in the direction of the x axis, and which dot is in the direction of the y axis. In the case of a SCARA robot, the camera is usually mounted on the end of the second link of the robot. In this case, the third and fourth axes of the robot may be conveniently positioned to decrease the possibility of a gripper or air hoses getting in the view of the camera. Figure 3-18 shows an example of the vision registration dots. Figure 3-18: Vision Registration Marks on a Modular Table 176 3.7.2.4.b Modular Pallet Registration Location Locations need to be taught which allow the robot’s arm mounted camera to ‘‘see’’ the registration dots on a pallet. Since all pallets should have their registration dots in the same relative locations, these locations need only be taught once. Generally, it is best to let the conveyor, AVG, or whatever is used to transport the pallet into the proper location so that an actual pallet location is seen. Often, the registration dots on pallets are close enough together to be seen in a single camera frame. In this case, only a single picture location needs to be taught. When only one location is used, an algorithm must be used to differentiate between the three dots (so that the vision system may determine which dot represents the origin, which dot represents the x-direction and which dot represents the y-direction). Usually this is accomplished by making the distance between the dots differ by a small amount so that by comparing distances, the dots may be correctly identified. Figure 3-19: Half-full Pallet with Three Registration Dots Figure 3-19 shows a half-full pallet with three registration dots. A simple explanation of the algorithm is the following. First the program computes the distance between each dot and it neighbors. This yields three values, the distance between dot 1 177 and 2, between 1 and 3, and between 2 and 3. Then by inspection, the origin is the dot which is not involved in the maximum distance, the dot in the x direction is the one not involved in the minimum distance, and the remaining dot is in the y direction. 3.7.2.5 Camera Calibration Images are acquired by a frame grabber from a CCD video camera and are composed of an array of rectangular pixels. Images themselves have no intrinsic calibration. That is, given an object in the image, there is no way to tell how big it is in the real world or its location in the robot’s world coordinate system. Camera calibration solves these problems. First, it determines the scaling factors so that the real size of objects in the image can be determined. Because, in general, pixels in an image sensor are not square, a different scale factor is needed in the x and y directions. Next, it provides a way of determining the location of an object in a robot’s WCS, based upon its location in an image. This is accomplished by the use of a homogeneous transform. This transform relates the location of the camera frame to the world coordinate system of the robot. Several robot manufactures, Adept for example, provide utilities for determining camera calibrations when using their vision software and robots. A more through discussion of camera calibration can be found in many references ([77][78][79] are examples). There are basically two types of calibrations, differentiated by the method used to mount the camera: stationary or robot mounted. The difference between them is in the homogeneous transform that converts positions in the image into positions in a robot’s WCS. With a stationary camera, this transform is fixed and is returned by the camera calibration routine. It needs to be recomputed only when the camera is moved. When a camera is mounted to a robot, this transform changes whenever the robot is moved. In this case, the camera is mounted to link 2 and looking downward. The transformation returned is then from the camera to the robot’s link 2 frame. Whenever the robot is moved, the complete transform from the robot’s world frame to the camera frame is 178 recomputed. Note that the height of the image greatly affects the transform. Therefore, a separate calibration transform is required for each picture plane height viewed by the camera. In the case of a flexible manufacturing workcell, there are several cameras that need to be calibrated. Fixed cameras are located over each feeder. Vision algorithms use the camera calibration to return the location of parts on the flexible feeder to the robot in the world coordinate system. A camera is also mounted on the arm of the robot which must be calibrated. This calibration is used by the vision system to determine the location of modular work tables and pallets in the world coordinate system of the robot. Without the cameras being properly calibrated, a flexible workcell would not function. 3.7.2.6 Flange Coordinate Frame ‘‘Fix’’ Most robotic manufacturers follow the Denevit Hartenburg[80] convention for determining the internal kinematics of their robots. This convention leads to a coordinate system attached to the flange of the robot which has its z axis pointing away from the end of the robot. In the case of industrial SCARA type robots, this leads to the z axis of the flange pointing straight down. When a positive move in the z axis of the flange frame is performed, the robot moves down. This can cause a lot of confusion when teaching assembly locations to the system because the world coordinate system of the robot has its z axis pointing up. It also makes the system as a whole more difficult to visualize because one instinctively think of ‘‘positive’’ as pointing up. Finally, it is much easier to manually check the offsets (visually make sure they are ‘‘in the ball park’’) when all the z axes of the intermediate coordinate systems are positive up. The z vertical offset ‘‘fixes’’ the flange coordinate frame such that the positive z axis is pointing up by rotating the coordinate system through 180°. The form of the transform can vary depending on the Euler angle set chosen by the manufacturer. In the case of an Adept SCARA robot, it is a 180° rotation about the y axis of the flange. It has 179 the form TRANS(0,0,0,0,180,0)§. This procedure has the disadvantage of breaking the built in APPROACH and DEPART commands of the robot controller (if they are so equipped). A work around, however, is to specify all approaches and departs as negative values. 3.7.2.7 Quick Connector Offset This offset is used to relate the position (translation and rotation) of the quick connector to the flange of the robot. All quick tool changers are composed of two parts, a part that permanently mounts to the robot (the master plate) and a part that is attached to each tool being used at the robot (the tool plate). This offset accounts only for the master plate. The offset associated with the tool plate appears in the tool offset, discussed in Section 3.7.3.3. This offset does include any additional mounting adapters which are sandwiched between the flange of the robot and the quick connector. The offset must be determined in several steps. It is important that the procedure be followed exactly as specified or the determined offset will be in error. The goals are as follows. First, a zero angle reference of the coordinate system attached to the flange of the robot needs to be established. Second, the master tool plate needs to be attached to the robot and the translational portion of the offset determined. Finally, the rotational portion of the offset can be determined. It is important that the translational portion of the offset be determined before the rotational portion. This is necessary because the centerline of the master tool plate must be the center of rotation in z when determining the rotational offset. If the translational offset were not determined first, then the center of the flange would be the center of rotation and not the centerline of the master tool plate. If the centerline of the tool plate is not in the proper location, the correct rotational offset will not be determined. Two instruments must be constructed to determine the rotational offset. The first instrument is a flat plate that can be mounted to the flange of the robot. The plate should ___________________________________________________________________________________ §The standard Adept transform is of the form: TRANS(x,y,z,yaw,pitch,roll) where a Z-Y-Z Euler angle set is used. 180 be designed such that it extends away from the flange at 0° relative to the flange coordinate system. Most robot manufactures provide a keyway or dowel pin hole for alignment with the flange coordinate system. One side of the plate must be on the center line of the flange. The second instrument is a similar plate mounted to a tool plate of the quick connector. One side of the plate (the same relative side) needs to be on the center line of the quick connect tool plate. It is important to machine the plates and mount them precisely and accurately. There are few links in the chain of offsets that comprise the system that must be determined accurately. This, however, is one of them. Not precisely determining the quick connector offset can prevent an assembly process, which was initially taught and run at one workcell, to be successfully run at a different workcell. The first step is to attach the first plate to the flange of the robot and drive the robot to a convenient location with its flange at an angle of 0°. Store the location as a temporary location in the robot controller, it will be needed during the third step of this procedure. Next, a dial indicator needs to be set against the plate and adjusted to read 0. After adjusting the indicator to read 0, do not disturb the indicator. If it is bumped or moved, the entire procedure will have to be redone from the start. This establishes the zero angle of the flange. The next step is to attach the master plate of the quick connector to the robot and determine the translational offset. The z part of the translational portion of the offset of the quick connector should be calculated from the flange to the shoulder of the master plate, excluding any post extension (Figure 3-20). The selection of the shoulder of the master tool plate as the reference surface is not critical. If a different type of quick connector is used, then a suitable reference plane could be chosen. What is important is that it is a repeatable measurable surface. While the z offset can simply be measured or determined from a drawing, the x and y values of the offset must be found using a different procedure. This is done by setting up an indicator (different from the one in the previous step) and repeatedly approaching the same x-y-z world location at various 181 flange angles. By examining the readings of the indicator at diametrically opposing angles (180° between them), the correct offset can be determined. Figure 3-20: Physical Location of Flange Quick ConnectSz First examine the 0° (+x) reading and the 180° (-x) reading. If the indicator was more positive in the 0° direction, then the offset must be input as negative. Conversely, if the reading was more positive in the 180° direction then the offset must be input as positive. The value of the offset is simple half the absolute difference of the two readings. For example, it the indicator read 0.010 when approaching from +x and 0.000 when approaching from -x, then the offset would be specified as -0.005. This value translates the frame attached to the master tool plate 0.005 in the -x direction which aligns the frame with the centerline of the tool plate’s post. After determining the offset in the x direction, the offset in the y direction must be determined. The y offset is entered after examining the 90° (+y) and 270° (-y) directions (using the same procedure as above). After calculating the offset, it should be checked and further refined by rerunning the above procedure with the just determined translational offset turned on. Simply set the rotational portion of the offset to 0 for this 182 test. That quantity will be determined next. Appendix 7.3.1 lists a program, written in Adept’s V+ programming language, that performs this step of the procedure. The final step in determining the quick connector offset is determining the rotational difference between the flange and the master plate. The tool plate which has the flat plate attached to it is attached to the robot. After turning on the translation part of the quick connector offset, the robot should be carefully driven to the same location as it was during the first step of this procedure. (Be sure to not bump the indicator or the entire procedure will have to be redone). As a safety measure, it is wise to approach the position from above to ensure that the indicator is not disturbed. Now, the robot needs to be rotated slowly until the plate is against the indicator and it again reads 0. The angle of the robot is then the negative of the rotational offset of the quick connector. This offset needs only to be determined at system setup. It does not need to be recalculated unless the quick connector (master plate) is removed from the robot. 3.7.3 Offsets Specific to the Assembly The offsets described in this section are related to each individual assembly. They are not related to the physical workcell, but are valid for the assembly when performed at any workcell. They are used in three places, modular tables, pallets, and grippers. While the workcell specific offsets are directly related to the WCS of the robot, assembly specific offsets are directly related to various local coordinate systems. The local coordinate system for a modular table is located at the registration dots, the local coordinate system for a pallet is located at the registration dots, and the local coordinate system for a gripper is the coordinate frame located at the end of the master tool plate which is attached to the flange of a robot. 3.7.3.1 Modular Table Fixture Locations Modular table offsets are used to relate the location of fixtures on modular tables to the registration block. Since both the fixtures and registration block are rigidly mounted to the table, the offsets do not change when the table is moved to another 183 workcell. The table relative frame’s origin is located at the center of the middle registration block at a height equal to the table frame height (Section 3.7.2.1). Each location is a homogeneous transform. After the system registers the modular table at system start-up, all the table relative fixture locations can be determined in the robot’s world coordinate system. This is done by combining each table relative transforms with the location of the table’s coordinate system as returned by the table registration routine. The actual values of each fixture location offset should be entered per print, even though the modular table is not machined to a high tolerance. This make inspecting and identifying the table offsets easier. Any errors introduced during the assembly of the table will be accounted for in the tool offsets. 3.7.3.2 Pallet Fixture Locations This offset relates the position of pockets on the pallet to the local coordinate system on the pallet. The local pallet coordinate system is located at the center of the middle registration dot at a height equal to the pallet height (Section 3.7.2.3). Pockets are required to securely hold the parts in position as they are being transported from one workcell to another. Many times, multiple parts are loaded on a single pallet before being transported. In this case, an array of pockets is used. In all cases, the robot must be capable of placing parts into the pocket locations on the pallet. For this to be accomplished, each location must be known in the robot’s world coordinate system. After the pallet is registered by the system, the world locations of the pockets are determined by combining the location of the pallet’s local coordinate frame (returned from the pallet registration routine) with each local pocket offset. As in the case of the modular tables, the values of the offsets are entered per print with any errors due to assembly (such as the tolerance in the screws and screw holes used to bolt components together) being accounted for in the tool offset. 184 3.7.3.3 Tool Offsets Tool offsets are used to relate the location of the tip of the gripper to the coordinate system attached to the master quick change tool plate on the robot. The robot knows the location of its flange and, using the quick connector offset, knows the location of the end of the quick connector. To perform useful work, however, it needs to know the location of the tip of the tool. This offset tell the robot that location. Since the offset is relative to the quick connector on the robot, it is independent of the workcell (and robot) being used and only depends on the geometry of the grippers. Tool offsets are divided into two categories. Tool offsets used for retrieving parts from a vision based flexible parts feeder and tool offsets used for picking and placing parts at known fixture locations. Separate offsets are employed for several reasons. So that fixtures need not be precision machined, the unknown errors are encapsulated into the gripper offsets. It is then easier to trouble shoot and maintain the system. Secondly, some grippers (such as the rotary jaw gripper, Section 5.4.3) change configuration. It then does not make sense to use the same offset for the gripper after it has greatly changed its geometry. The following three sub-sections will examine tool offsets in greater detail. First, the underlying equations will be examined and formula for determining tool offsets will be derived and presented. Second, a tool offset calculator will be introduced and examined. Finally, procedures for determining tools offsets for both picking and placing parts will be presented. 3.7.3.3.a Computing the Vector Equations This section is devoted to the derivation of the equations used in determining tool offsets. In the most general case of a 6 DOF robot placing a part onto a modular table which is not mounted orthogonal to the robot, the complete vector equation has seven homogeneous transforms. Figure 3-21 shows the digraph of the situation. Table Loc Fixture Loc Fixture Loc = Tool Trans Tool Rot Tool Trans S Q QC Offset ui ck C T o on o l nec Ro t t ui Z ck V Co erti nn cal ec t Z Vertical Q S Flange Frame V Fla er ng tic e al S Robot’s WCS S CS e W ang Fl Z Table Loc Ta bl WC eL S oc S S 185 Tool Rot S Figure 3-21: Placing a Part on a Vision Registered, Modular Table The resulting matrix equation is shown in Equation (3.32). Retrieving a part from a flexible feeder is simply a sub-case of this more general situation. The modular table/table relative location is simply replaced by the position of the part on the feeder as determined by the vision system. WCS Table Loc Table Loc S Fixture LocS WCS = Flange S Flange Z Vertical Quick Connect Tool Rot Z VerticalS Quick Connect S Tool RotS Tool Trans S (3.32) The unknown transform is the tool offset. Rearranging yields the following matrix equation which can be solved for the tool transform. Tool Rot Quick Connect Tool TransS Tool RotS Vertical − 1 = QuickZConnect S Flange − 1 WCS − 1 WCS Table Loc Z VerticalS Flange S Table Loc S Fixture LocS Tool Rot Quick Connect Tool Trans S Tool RotS Connect = Quick Fixture LocS = Desired Tool Offset (3.33) What can then be seen is that the tool offset is actually the position of the modular table fixture defined in the quick connect coordinate frame. By restricting the general case to one in which the z axis of all the coordinate systems are vertically aligned, a much simpler case is realized. This is typical for most industrial SCARA type robot installations§. The simplification comes from the fact that SCARA type robots are only capable of four axes of independent motion with the z axis of the robot fixed in a vertical orientation. With the z axis locked in the vertical orientation, the vertical degree of freedom is effectively decoupled from the horizontal plane. Since the robot is only capable of rotation about the vertical axis (in reality, rotation occurs at the first two axes of the robot, however, these motions only relate to the planar location of the robot and not the rotation of the flange coordinate frame), the rotational degree of freedom is also ___________________________________________________________________________________ §If a robot has more that the standard four degrees of freedom, such as a fifth axis, then the restriction does not hold and the more general case must be examined. 186 not affected by the location in the horizontal plane. This allows the problem to be solved in three independent steps: one equation for rotation about the z axis (in terms of the Adept system, the yaw term of the offset), another independent equation for the vertical (the translational offset in the z axis), and third, a system of two equations for the remaining two unknowns in the plane (the translational offset in x and y). In the rest of this section, the following naming convention will be followed. The name of the variable will describe the physical quantity according to Table 3-1. Physical Quantity Table Frame Position Table Relative (Fixture) Position Quick Connector Offset Flange Location Resulting Tool Offset Variable Name Table Loc Fixture Loc Quick Connect Flange Tool Table 3-1: Physical Quantities and Variables Names These quantities can be represented in a number of different coordinate systems. Table 3-2 shows the different coordinate systems and their variable representation. The world coordinate system is located at the center of the base of the robot. It is the coordinate system from which all others are referenced. The table or pallet coordinate system is the system which is local to the pallet or modular table. The flange coordinate system is the system which is located at the flange of the robot with its z axis pointed in a vertical direction. The 180° rotation about the pitch axis may have to be applied to the end of arm frame returned by the robot’s controller (see Section 3.7.2.6) if the flange frame is pointed down. The quick connector coordinate system is the system referenced from the end of the quick connector mounted to the robot. It is the frame in which the tool offsets ultimately needs to be known. 187 Coordinate System World Coordinate System Table or Pallet Relative Coordinate System Flange Coordinate System Quick Connector Coordinate Frame Tool Coordinate System Variable Name WCS Table Loc Flange Quick Connect Tool Table 3-2: Coordinate Systems and Variable Names If it is assumed that a SCARA robot is being used, the y rotation and the second z rotation terms of all the offsets may be set to 0. Inserting this constraint Equation (3.33) yields the following matrix which represents the tool offset.   cos Φ   − sin Φ   0  0 () ()    ToolY 0  WCS Table Loc WCS Flange  1 Table Loc Sz + Fixture LocSz − Flange Sz − Quick ConnectSz 0 1  () cos(Φ) sin Φ ToolX 0 0 0 (3.34) where Φ = Flange Sθ + Quick ConnectSθ − Table LocSθ − Fixture LocSθ WCS Flange Flange ToolX = − Quick ConnectSx cos WCS − FlangeSx cos WCS ( Table Loc ( S cos( S sin( Table Loc + Fixture Loc and ( Flange Quick ConnectSθ Table Loc )− Flange Quick ConnectSy )− S )+ WCS Flange FlangeSθ + Quick ConnectSθ + Table Loc Sx cos + Fixture Loc WCS WCS Flange FlangeSθ + Quick Connect θ WCS FlangeSy ( sin Flange Quick ConnectSθ ( sin WCS Table Loc Sy WCS Flange FlangeSθ + Quick ConnectSθ WCS Flange WCS FlangeSθ + Quick ConnectSθ − Table Loc Sθ y WCS Flange WCS FlangeSθ + Quick ConnectSθ − Table Loc θ ( sin ) S) x ) ) WCS Flange FlangeSθ + Quick ConnectSθ ) 188 ( Flange ToolY = Quick ConnectSx sin − Fixture Loc Table Loc )− S )+ ( S sin( S cos( + Fixture Loc ( S cos( Flange Quick ConnectSy WCS Flange FlangeSθ + Quick ConnectSθ − Table Loc Sx sin Table Loc )− ( WCS + FlangeSx sin WCS Flange Quick ConnectSθ cos WCS Flange y WCS Flange FlangeSθ + Quick Connect θ Flange Quick ConnectSθ ) WCS Flange FlangeSθ + Quick ConnectSθ WCS Table Loc Sy cos ) ( WCS Flange FlangeSθ + Quick ConnectSθ ) ) S) x WCS Flange WCS FlangeSθ + Quick ConnectSθ − Table Loc Sθ y WCS Flange WCS FlangeSθ + Quick ConnectSθ − Table Loc θ While this at first glance appears to be a complicated set of equations, a careful examination of each term leads to some interesting insights. To make sense of each term, the general form of a homogeneous transform, derived from a z-y-z Euler angle set, is examined.  cθcϕcψ-sθsψ - (cθcϕsψ) -sθcψ  sθcϕcψ + cθsψ - (sθcϕsψ) + sθcψ  - (sϕcψ) sϕsψ 0 0  cθsϕ sθsϕ cϕ 0   Y  Z   1  X cθ  sθ = 0  0 − sθ cθ 0 0 0 0 1 0 X  Y Z  1 (3.35) ϕ = 0, ψ = 0 where cx = cos(x) and sy = sin(y) and θ = yaw, ϕ = pitch, and ψ = roll. The right most terms X, Y, and Z are the translational parts of the transform. (This is the same as Equation (3.10) with the translation included.) If the restriction of a SCARA robot is applied, the pitch and roll terms (ϕ and ψ) are set to 0. The resulting matrix describes a rotation about z, Equation (3.8), with a translation. If the tool offset transform matrix, Equation (3.34), is now compared term by term to this simplified transform matrix, interesting insights can be gained. First, since the z axis is always perpendicular to the x-y plane, the coordinate systems attached to each individual offset all have their z axes pointed vertically. This allows the z translation values of each transform to be treated as though they were all in 189 the same reference frame. Also, since all rotations are about the z axis, they to can be treated as though they were all in the same reference frame. Examining the 3x3 sub-matrix which represents rotation, it can be seen that the angle Φ in Equation (3.34) is the same as θ in Equation (3.35) with the sign on the sin() term switched. Therefore, noting that sin() is an odd function and that cos() is an even function, it can be seen that θ is equal to -Φ. Φ is simply the rotation of the tool offset and so Quick Connect ToolSθ can be written as Quick Connect ToolSθ = −Φ = − ( WCS Flange FlangeSθ + Quick ConnectSθ )+ WCS Table Loc Table Loc Sθ + Fixture LocSθ (3.36) Next, examining the z term of the translation part of the transform yields the simplified equation for the z portion of the tool offset Quick Connect ToolSz WCS Table Loc WCS Flange = Table Loc Sz + Fixture LocSz − FlangeSz − Quick ConnectSz (3.37) Finally, the x and y part of the transform can be examined. Grouping the terms according to the original offset in which they were defined and examining both the x and y terms simultaneously, the equations can be written as a single 2x2 matrix equation. 190 [ ] Quick Connect ToolSx Quick Connect ToolSy   cos = -  -sin  ( ( ) ( S) ( Flange sin Quick ConnectSθ Flange Quick Connect θ cos Quick Connect θ Flange  )  S )  Flange Quick ConnectSθ [ ] Flange Quick ConnectSx Flange Quick ConnectSy   WCS Flange WCS Flange sin FlangeSθ + Quick ConnectSθ  WCS  cos FlangeSθ + Quick ConnectSθ Sx  Flange - WCS S  -sin WCS  Flange WCS Flange cos FlangeSθ + Quick ConnectSθ  Flange y FlangeSθ + Quick ConnectSθ     WCS Flange WCS Flange sin FlangeSθ + Quick ConnectSθ   cos FlangeSθ + Quick ConnectSθ WCS Loc Sx  TableWCS + S  -sin WCS  Flange WCS Flange cos FlangeSθ + Quick ConnectSθ  Table Loc y FlangeSθ + Quick ConnectSθ    WCS Flange WCS WCS Flange WCS sin FlangeSθ + Quick ConnectSθ − Table Loc Sθ  cos FlangeSθ + Quick ConnectSθ − Table Loc Sθ +  -sin WCS Flange WCS WCS Flange WCS cos FlangeSθ + Quick ConnectSθ − Table Loc Sθ FlangeSθ + Quick ConnectSθ − Table Loc Sθ  ( ( ) ( ) ( ( ( ) ) ) ( ) ( ( ( [ ] ) ) (3.38) [ ] ) ( ) (      ) ) [ ] Table Loc Fixture LocSx Table Loc Fixture LocSy Now examining each of these terms individually, their physical meaning becomes clear. The first term,   cos   -sin  ( ( ) ( S) ( Flange sin Quick ConnectSθ Flange Quick Connect θ cos Quick Connect θ Flange  )  S )  Flange Quick ConnectSθ [ ] Flange Quick ConnectSx Flange Quick ConnectSy is the offset associated with the quick connector master plate, with its translation portion rotated into the tool plate frame. As discussed in Section 3.3.1.2.a the translation part of the tool offset occurs before the rotation part. However, when assembling the tool offset, all the components of the other offsets must be converted to a uniform coordinate frame before being summed. This term in the tool offset is the x and y portions of the quick connector offset (as defined in the coordinate frame of the flange) rotated into the quick connector frame. They have to be rotated into the quick connector frame because that is the frame in which the tool offset is defined. 191 The rotation matrix differs from a regular rotation matrix because the sign of the sin() terms are switched. This shows that the angle which the translational portion of the offset must be rotated through is actually the negative of the angle of the offset. This is expected since the rotation follows the translation in a homogeneous transform. Rotating the translational part of the offset into the resulting coordinate system requires the use of the negative angle of the transform. The second term,   cos    -sin  ( WCS Flange FlangeSθ + Quick ConnectSθ ) ( ( WCS Flange FlangeSθ + Quick ConnectSθ     WCS Flange S + S Flange θ Quick Connect θ   WCS Flange sin FlangeSθ + Quick ConnectSθ ) ) ( cos [) ] WCS FlangeSx WCS FlangeSy is the location of the tool flange rotated into the quick connector coordinate frame. The angle of rotation is a combination of the angle of the quick connector and the flange because the flange is in the world frame and, to be defined in the quick connector frame, it must be rotated through a combination of both angles. The signs of the sin() terms are again switched indicating the negative of the angle is actually being used. The third term in the definition of the x-y component of the tool offset   cos   -sin  ( ( ) ( S) ( WCS sin FlangeSθ + Quick ConnectSθ WCS Flange FlangeSθ + Quick Connect θ cos FlangeSθ + Quick Connect θ WCS Flange Flange  )  S )  WCS Flange FlangeSθ + Quick ConnectSθ [ ] WCS Table Loc Sx WCS Table Loc Sy is the location of the origin of the modular table rotated into the quick connector coordinate frame. It can be seen that the angle of rotation is the same as that in the previous term. This is to be expected since the flange and the location of the table frame origin are both defined in the world coordinate system. 192 The final term of Equation (3.38)   cos   -sin  ( ( WCS Flange WCS FlangeSθ + Quick ConnectSθ − Table Loc Sθ ) ( ) ( WCS Flange WCS FlangeSθ + Quick ConnectSθ − Table Loc Sθ WCS Flange WCS sin FlangeSθ + Quick ConnectSθ − Table Loc Sθ WCS Flange WCS      ) [) cos FlangeSθ + Quick ConnectSθ − Table Loc Sθ ] Table Loc Fixture Loc Sx Table Loc Fixture Loc Sy is the location of the fixture on the modular table rotated into the quick connector coordinate frame. The angle of rotation includes the flange and quick connector rotations and the negative of the table frame orientation. The negative sign results because in Equation (3.32), the table relative transform is located on the opposite side of the equation from the flange and quick connect terms. Therefore, the negative table origin angle rotates the table relative position into the world frame. Once in the world frame the flange and quick connect angles align it with the quick connect frame. A physical explanation of the x and y components of the tool offset can now be made. The tool offset (in the x-y plane) is the vector that extends from the quick connector to the table relative location. However before they are added, the vectors must all be expressed in the same coordinate frame. Equation (3.38) simply sums the vectors after they have been rotated through the required angle to align them with the quick connect frame. The complete tool offset can now be explained. The angular component is a sum of the angles of the other offsets. Since all the rotations are about the z axes, and all the z axes are pointed in the same direction, the angles can be added directly. The z component is the sum of the other z offsets. Again, since the z axes are aligned, the offsets can be added directly. The x-y components are also simply the sum of the other x-y offsets. However, because the frames of the other offsets are not aligned, each component must be rotated into a common frame before adding. The derivation of the tool offset for picking a part from a flexible feeder proceeds in the same way as for the modular table case. The only difference is the offsets for the origin of the modular table and the table relative fixture location are replaced by a single 193 offset which points from the base of the robot to the part on the flexible feeder. This offset is in the world coordinate system of the robot and is returned by the vision system which is used to locate the part. Modifying the above equations for this case is accomplished by replacing the table origin location with the flexible feeder part location and removing the table relative parts of the equations. As discussed in Section 3.3.1.2.a it is desirable to input the tool offset as a rotation then a translation. As defined in Equation (3.38), the translation proceeds the rotation (as can be seen in the x and y components of the offset being defined in the quick connect coordinate frame). The resulting tool transform is             T =         1  R 0 I 0      T      1      0      1 R 0 (3.39) where I is the identity matrix. What is actually desired is      R 0      0      1 I 0    ✲  T     1   (3.40) where T✲ is a modified translation matrix. The rotation matrix is the same in both cases because the final orientation of the coordinate frame is the same. The translation part must be transformed, however, because the translation is occurring with respect to a rotated coordinate frame. Since the overall transform is the same, Equations (3.39) and (3.40) are equal. Setting them equal, the new translation may be solved for.      I 0     ✲   T =      1  R 0      0      1 -1      R 0      T      1 (3.41) 194 Now, given any transform, it can be converted to rotation followed by translation by first doing the rotation of the original transform followed by a translation as defined by Equation (3.41). 3.7.3.3.b Tool Offset Calculation Program The tool offset calculator was developed to ease the job of determining tool (or gripper) offsets. When running the agile manufacturing cell, it is necessary to determine a tool offset for each instance of the robot approaching a pick up or drop off location. For any given assembly this can amount to many offsets. While it is possible to determine the offsets by hand, it is much easier to enter the numbers into a software program and have them automatically calculated. The program is written in C and runs under the XWindows system on Unix based systems. The graphical portion of the program is written using the XForms[81] development libraries. Figure 3-22 shows the main window of the system. The source listing for the portion of the program which actually calculates the resulting tool offset is in appendix 7.3.2. The program functions by solving the equation of homogeneous transforms, Equation (3.33), which is formed when the robot’s gripper is holding a part at its final pick up or drop off location. The base frame of the robot is used as the world frame of the system. This makes the program applicable to any system whether it involves SCARA type robots or not. The assumptions made during the previous section are not required here. 195 Figure 3-22: Tool Offset Calculator Program The program is comprised of three major sections. The top of the window is the input bar. It contains two radio buttons to allow the mode of the program to be set. The current mode is indicated by the small box in the radio button being highlighted. The mode of the program indicates whether an offset to be determined is for placing parts onto a modular table or pallet or is for retrieving parts from a flexible parts feeder. The distinction is in the data entered into the program and the equation which is solved. Three buttons complete the input bar. The first is the Compute button which is used to find a tool offset once all the information has been entered. The Help button displays the help window, and the Exit button terminates the program. 196 The middle area of the program’s window is the input section. It contains four boxes used to input data into the program. The upper left box is used to input the quick connector offset. The lower left box is used to input the location of the robot’s flange. The upper right box is used to input either the location of the origin of the table or pallet coordinate system if the program is in the modular table mode, or the location of a part on the flexible parts feeder as reported by the vision system if the program is in the flex feeder mode. The lower right box is used to enter the location of table or pallet fixtures relative to the table or pallet local coordinate system. If the program is in the flex feeder mode, this box is grayed out. The bottom area of the program’s window is used to output the resulting gripper transform. The first box is used to output the transform as three translational offsets and three Euler angles. The second box is used to display the offset in the form required by V+, Adept Robotics programming language. The final box lists the transform as a homogeneous matrix. A complete description of the program with example calculations appears in appendix 7.2. 3.7.4 Positions Calculated During Operation The final set of offsets used at any give workcell for assembly are the locations which are generated at runtime during operation. These positions form part of the vector loop which is solved to calculate many of the offsets and so need to be explained. There are three different types of locations which are generated during operation. At system start-up the modular worktable is registered into the world coordinate system of the robot. The returned location is the origin of the local coordinate system which is established on each modular table. The arm mounted camera is used to locate the work tables. The camera returns the x-y position and θ rotation of the table frame. This information is coupled with the height of the table frame to determine the complete homogeneous transform from the robot’s WCS to the origin of the table relative frame. 197 The origin of the localized coordinate systems on each pallet is calculated each time a new pallet enters the workcell. This location is used to calculate the pallet pocket locations. The arm mounted camera is also used to determine this location. The camera returns the x-y position and θ rotation of the pallet. This information is coupled with the height of the pallet frame to determine the complete homogeneous transform from the robot’s WCS to the pallet’s local coordinate frame. The most frequently generated position is the location of parts on the flexible parts feeder. A separate camera is located over each feeder to allow pictures to be acquired instantaneously. The camera returns the x-y position and θ rotation of the part on the feeder which is coupled with the feeder height to construct the complete homogeneous transform describing the location of the part relative to the robot’s WCS. The ability to generate accurate locations based on the vision system is the crucial component of enabling modularity in workcells. Without this ability, flexible, modular manufacturing would not be possible. 3.8 Testing Now that an infrastructure of homogeneous transforms has been developed to enable a modular reconfigurable workcell, it needs to be tested in a real world situation to determine and verify its usefulness. To facilitate this testing, the CWRU prototype agile manufacturing workcell (discussed in Chapter 1) will be used. First, the method of testing and a description of the actual test will be presented, followed by an examination of the results and a description of further testing to be performed. 3.8.1 Method of Testing To test the applicability of the offsets for use in multiple workcells, two workstations with Adept550 robots were used. One workstation was designated as the setup station while the other station was designated as the generic assembly station. The setup station was used to determine the tool offsets that were necessary to successfully 198 complete the assembly. The assembly was then moved over to the generic assembly station and the assembly ran without reteaching any offsets. One hundred assemblies were run at each station and the success of each was observed and recorded. 3.8.2 Description of Testing 3.8.2.1 Assembly Sequence The assembly chosen for testing was the headcap portion of a common flashlight. This assembly was chosen for two reasons. First, due to previous workcell testing, there was an ample supply of parts for assembly and secondly, grippers (described in Chapter 4) and modular table assembly hardware had already been developed. In addition, during previous workcell testing the assembly had proven itself to be reliable. This was an important factor since the purpose of the test was to determine the applicability of the offsets, as presented previously, to multiple modular workcells. Choosing an assembly that was not reliable would make it difficult to determine if the errors seen were due to problems with the offsets or problems with the assembly itself. The assembly itself is the first half of the headcap assembly as described in Section 5.4.2.2, repeated here as it pertains to the testing. The assembly consisted of three components, a lens ring, a lens, and a reflector. The parts are described in the following section. The lens ring / reflector / lens gripper system, described in Section 5.4.4.5 and 5.4.4.6, was used to handle the parts. The assembly proceeded as follows. First a lens ring was retrieved and placed into the fixture on the modular table. Second, a lens was retrieved and placed into the lens ring. Finally a reflector was retrieved and placed into the lens ring on top of the lens. The robot then moved to a safe location and a pneumatic press mounted on a linear slide moved into position over the assembly fixture and seated the lens and reflector into the lens ring. Lastly, the complete sub assembly was removed from the fixture and placed into a pocket on a pallet. There were a total of nine pockets on the pallet used to hold completed subassemblies. During the testing, the system was programmed to halt after every nine sub- 199 assemblies so that the pallet could be manually emptied. After the pallet was emptied of complete sub-assemblies, the process began filling the pallet from the first pocket again. Care had to be exercised so that the physical position of the pallet was not disturbed as the sub-assemblies were being removed since the pallet was registered into the workcell only at the beginning of the test. 3.8.2.2 Parts Three parts were manipulated during the testing, the lens ring, the lens, and the reflector. Each part is described in detail in Sections 5.4.1.5, 5.4.1.6, and 5.4.1.7 respectively. The lens ring is a circular ring of plastic approximately 23 8 inches in diameter and about 11 8 inches long. The lens is the translucent plastic disk and is about 21 8 inches in diameter and about 1 16 of an inch thick. The reflector is made of plastic with a metallic rim on the back for conductive purposes. The large end of the reflector is approximately 21 8 inches in diameter. A circular opening in the smaller end of the reflector is about 3 8 of an inch. The conductive metal rim is cup shaped and is about 13 8 inches in diameter. Figure 3-23 shows all three parts. Lens Ring Lens Reflector Figure 3-23: Parts Used for Offset Testing 3.8.2.3 Workcell Preparation Before the assembly could be performed, the workcells had to be prepared for use. Workcell preparation included determining quick connector offsets, camera calibrations, modular table and pallet fiducial picture locations, and the heights of the feeder, the modular table frame, and the pallet. Determining these values for the setup workcell was 200 especially important since they were used when determining the assembly relative offsets (described below). First, the quick connector offset was determined for each Adept 550 robot. The rotational part of this offset was ignored. Care was taken to ensure the quick connector was attached to each robot in the same orientation relative to the flange (within the tolerance of the bolt holes). This, coupled with the fact that all three parts used for the example assembly are rotationally symmetric, made an exact measure of the rotational offset unnecessary. In the more general case of robots with different kinematic configurations, the rotational offset could not be ignored. Table 3-3 shows the two offsets (values are in millimeters). Workcell Setup Cell Generic Cell x -0.012 -0.076 y -0.026 -0.064 z -35.6108 -35.6108 yaw 0.0 0.0 pitch 0.0 0.0 roll 0.0 0.0 Table 3-3: Quick Connector Offsets After determining the quick connector offsets, appropriate locations from which to acquire images of the modular table and pallet fiducials were determined. This was accomplished by mounting a modular table in position and manually moving the robot to a location from which it could see each fiducial. The program to determine the location of the modular table in the robot’s world coordinate system required that each fiducial be in a separate image. Therefore, three fiducial image locations were defined. The same technique was employed to determine the pallet fiducial image location. The program to determine the pallet location requires that all three fiducials be seen in a single image so only one image location was determined for the pallet. Since both workcells use the same style of robot and have similar geometric layouts, the same positions were used for both robots. In general, this would not be the case and unique fiducial image locations would have to be determined for each workcell. The camera used to acquire the fiducial images was mounted to the end of link two of each of the robots. 201 Therefore, the locations were determined with only the ‘‘gripfix’’ offset in place. Table 3-4 lists the locations (in the robot’s world coordinate system, in mm). x Setup Cell Modular Table Loc 1 Modular Table Loc 2 Modular Table Loc 3 Pallet Loc Generic Cell Modular Table Loc 1 Modular Table Loc 2 Modular Table Loc 3 Pallet Loc y z yaw pitch roll 220 204 270 418 -302 -133 -148 -15 330 330 330 330 0 0 0 0 0 0 0 0 -150 -160 -135 -96 219 205 270 439 -320 -133 -147 -38 330 330 330 330 0 0 0 0 0 0 0 0 -150 -160 -96 -96 Table 3-4: Modular Table and Pallet Picture Locations Lastly, the cameras at each robot were calibrated. Two cameras were required at each workcell. One camera to locate parts and one camera to determine the relative location of the modular table and pallet. Three camera calibrations were therefore required, as listed below. • One used to determine the location of parts on the flexible feeder. • One used to determine the location of the modular table. • One used to determine the location of the pallet. While it is theoretically possible to use a single offset for the last two cases (afterall, the camera does not move relative to link two of the robot between the two different fiducial image locations), it is not possible in practice due to different heights of the modular table fiducials and the pallet fiducials. This difference in height causes objects in the same planer location relative to the camera’s image sensor to appear at different locations on the image sensor due to parallax in the camera’s optics. Attempting to use offsets determined using an incorrect camera calibration at a different workcell from where they were initially determined would cause errors. To provide a uniform surface and background on which to perform the calibration of the arm mounted cameras, a thin (1 8 ’’), flat white, steel plate was used to support the calibration disk as it was moved to various locations in the vision window. It was important to use a thin plate 202 so that height variations between the calibration surface and the actual fiducials was minimized. Flat white was chosen as a color to minimize reflections while maximizing contrast with the black calibration disk. The camera calibrations were determined using Adept’s calibration routine. This routine directs the robot to move a circular disk in the vision window. As the disk is moved, the robot controller notes the location of the disk in the vision window and the location of the flange of the robot. After generating many data points, a fit is made to determine the relationship between the camera and the robot. As previously mentioned, the vision system enables the modular workcells as developed in this chapter. Therefore, the accuracy of the camera calibration was considered of utmost importance. To this end, each camera calibration was extensively tested to determine its accuracy. For testing, the Adept calibration testing routine was used. This routine functions by determining the location of the disk using the vision system and then manipulating the disk using the robot. By comparing the location of the disk in the robot’s WCS determined by the position of the robot (using the inverse kinematics of the robot’s controller) with the position of the disk in the robot’s WCS determined by the vision system (using the camera calibration transform), a measure of the goodness of the calibration can be determined. The error value returned is the euclidean distance between the location of the center of the calibration disk as determined by both methods discussed in the previous sentence. The calibration for each camera used to locate parts was tested at several places throughout the vision window, including the middle of the window and all four corners. The center and four corners of the each vision window was also tested for the camera calibration at the pallet fiducial image location. In the case of the calibration used to locate the modular table, the center and corners of the vision system were tested as well as the center of the vision window at each fiducial location. This was accomplished by moving the robot to each fiducial image location, placing the thin steel plate in the vision 203 window, and then testing the camera calibration by placing the calibration disk in a position coincident with the modular table fiducial. Figure 3-24 shows the errors in the vision system at the setup workcell while Figure 3-25 shows the errors in the vision system at the generic workcell (error values are in thousandths of an inch). Each circle shows the relative position of the test disk in the vision window during testing. 0.0023 0.0055 0.0022 0.0008 0.0032 0.0027 0.0070 0.0037 0.0020 0.0099 0.0042 Feeder Calibration Test @ Setup Workcell 0.0034 Top of Vision Window 0.0136 0.0029 Feed Direction, Top of Vision Window 0.0062 0.0038 0.0030 0.0073 Pallet Calibration Test @ Setup Workcell 0.0121 0.0042 Top of Vision Window 0.0070 0.0025 0.0056 0.0078 0.0095 0.0110 Table Calibration Test @ Setup Workcell Vision Window Centered on Table Fiducials Table Calibration Test @ Setup Workcell Figure 3-24: Robot / Camera Errors at the Setup Workcell The calibration used to locate parts at the generic workcell had large errors at the corners and edges of the vision window due to the light table (used to simulate a flexible feeder) not being flat over its entire surface. This was not a problem, however, since the parts were always fed in the center of the table where the calibration was acceptable. 204 Lastly, the heights of the feeder at each robot (the height of the light table in the case of the generic workcell), the modular table frame, and the pallet were determined. This was accomplished through the use of a pointed tool of known length. Using this pointer, each height was determined as described in Sections 3.7.2.1, 3.7.2.2, and 3.7.2.3. Table 3-5 shows the resulting heights (in mm). 0.0226 0.0041 0.0013 0.0006 0.0014 0.0034 Top of Vision Window 0.0015 0.0054 Top of Vision Window 0.0077 0.0007 About Part Size 0.0147 0.0222 0.0032 Feeder Calibration Test @ Generic Workcell 0.0041 Pallet Calibration Test @ Generic Workcell 0.024 0.0020 Top of Vision Window 0.0013 0.0005 0.0027 0.0028 0.0072 0.0042 Table Calibration Test @ Generic Workcell Vision Window Centered on Table Fiducials Table Calibration Test @ Generic Workcell Figure 3-25: Robot / Camera Errors at the Generic Workcel Workcell Component Heights Setup Cell Generic Cell Flexible Feeder Height 43.233 49.043 Modular Table Height -82.027 -81.637 Table 3-5: Workcell Component Heights Pallet Height -51.207 -51.477 205 3.8.2.4 Assembly Preparation After determining the offsets used to geometrically describe the workcells, it was necessary to determine the offsets which are specific to the assembly. These include the location of fixtures on the modular table, the location of fixtures on the pallet, and gripper offsets used to retrieve and place parts. All the offsets were determined at the setup workcell and then used (without alteration) at the generic workcell. The offsets which relate the position of fixtures on the modular table were determined by using the per print locations. There were a total of four positions taught on the modular table, a lens ring drop location, a lens drop location, a reflector drop location, and a position where the robot is clear of the press. The location where the robot is clear of the press was taught relative to the modular table since the press is mounted on the table. Care must be exercised, however, if the offset was used at a workcell with a kinematically different robot since it could be possible that the gripper would clear the press while some other part of the robot could still be in its way. In this test case, since the same style of robot was used at both workstations, this was not a problem. Table 3-6 lists the modular table locations (in the table’s relative coordinate system, in mm). There is no yaw or pitch rotations associated with any location since the table was mounted in the x-y plane of the robot’s world coordinate system and no roll rotation since all the parts are rotationally invariant. Lens Ring Drop Lens Drop Reflector Drop Press Clear x 120.65 120.65 120.65 340 y 158.75 158.75 158.75 -81 z 60.325 66.675 69.85 285 yaw 0.0 0.0 0.0 0.0 pitch 0.0 0.0 0.0 0.0 roll 0.0 0.0 0.0 -135 Table 3-6: Modular Table Assembly Locations Like the modular table, the pallet relative locations were also determined by examining the print. There were a total of 9 pallet locations on a 3x3 grid. This yielded Table 3-7 which lists the pallet locations (relative to the pallets local coordinate system, in mm). As with the modular table, there is no rotation associated with the locations 206 since the pallet is in the x-y plane of the robot and since the sub-assemblies are rotationally invariant. Pallet Location Number 1 2 3 4 5 6 7 8 9 x y z 38.1 38.1 38.1 127.0 127.0 127.0 215.9 215.9 215.9 38.1 127.0 215.9 38.1 127.0 215.9 38.1 127.0 215.9 12.7 12.7 12.7 12.7 12.7 12.7 12.7 12.7 12.7 yaw 0 0 0 0 0 0 0 0 0 pitch 0 0 0 0 0 0 0 0 0 roll 0 0 0 0 0 0 0 0 0 Table 3-7: Pallet Assembly Locations Lastly, the gripper offsets used to retrieve and place parts were determined. In general, an offset is required for each part retrieval or part placement which occurs during an assembly cycle. In this case, the pallet fixture (including the vision fiducials) was machined out of a monolithic block of nylon. This allowed the location of each pocket on the pallet (a total of 9) to be known exactly relative to the vision fiducials. The end result being that a single offset could be used to drop sub-assemblies at all of the pockets. In general, if the exact location of each pocket relative to the vision fiducial is not known, then a separate gripper offset must be taught for each location. For example, the modular table shown in Figure 3-26 contains 10 pocket locations machined into two separate blocks of nylon. A third, separate, block of nylon is used for the vision fiducials. In this case, an offset must be determined for each pocket location since it is impossible to know the exact location of each pocket relative to the vision fiducials. Any inaccuracies in the assembly of the table would cause the exact locations of the pockets to be uncertain. If the fixtures and vision fiducials on this table had been machined out of a single piece of nylon, then one offset would have been sufficient for inserting a part into any pocket. To determine the offsets required to retrieve the three parts, the procedure outlined in Section 3.6 is used. First, a part was placed in the gripper and then the robot 207 was moved to a position on the flexible feeder. After applying the tool offset to ‘‘fix’’ the flange coordinate system, the location of the robot’s flange was noted. Next, the gripper was opened and the robot moved to a location out of the vision window. Figure 3-26: Modular Table Requiring Multiple Tool Offsets The part was left sitting in the vision window. Care had to be taken to ensure the robot was moved without disturbing the part. The vision system was used to determine the part’s location. Finally, the collected data (with the offset for the robot’s quick connector) was entered into the tool offset program and the proper tool offset was calculated. Table 3-8 shows the offsets determined for the three grippers when used to retrieve parts (relative to the quick connector, in mm). x Lens Ring Rotation Lens Ring Translation Lens Rotation Lens Translation Reflector Rotation Reflector Translation 0.0 -0.279 0.0 -2.348 0.0 -0.400 y 0.0 -0.028 0.0 1.996 0.0 -0.522 z 0.0 -186.98 0.0 -153.56 0.0 -171.20 yaw -45.299 0.0 -45.299 0.0 -45.299 0.0 pitch 0.0 0.0 0.0 0.0 0.0 0.0 roll 0.0 0.0 0.0 0.0 0.0 0.0 Table 3-8: Gripper Offsets for Retrieving Parts Next, the offsets used to place parts into the fixture on the modular table had to be determined. Again, the procedure in Section 3.6 was followed. First, the modular table 208 was mounted in the workcell and the location of the table determined. Next, the robot was instructed to retrieve a part from the flexible feeder. Then the robot was manually moved to the final part drop location. After ensuring that only the offset which ‘‘fixes’’ the flange coordinate system was in effect, the location of the flange of the robot was noted. Then by using the collected data in conjunction with the quick connector offset and the table relative fixture location, the proper tool offset was determined using the tool offset program. Table 3-9 lists the offsets which were determined for placing parts on the modular table (relative to the quick connector, in mm). No offset was determined for the position where the robot was out of the way of the pneumatic press since a gripper was not being utilized in that location. The same offset was used to place the lens ring on the fixture and to remove the completed sub-assembly from the fixture since the same gripper grasping the lens ring in the same position was used for both operations. Lens Ring Rotation Lens Ring Translation Lens Rotation Lens Translation Reflector Rotation Reflector Translation x 0.0 2.557 0.0 0.519 0.0 3.027 y 0.0 2.998 0.0 0.595 0.0 2.626 z 0.0 -196.82 0.0 -170.97 0.0 -190.94 yaw -135.23 0.0 -135.23 0.0 -135.23 0.0 pitch 0.0 0.0 0.0 0.0 0.0 00 roll 0.0 0.0 0.0 0.0 0.0 0.0 Table 3-9: Gripper Offsets for Placing Parts The last offset determined was used to place completed sub-assemblies into the pallet. While Section 3.6 does not give an explicit method for determining offsets used to place parts into a pallet, the same method as used for the modular table may be applied. First, the pallet was placed in the workcell and, using the vision system, its location in the robot’s world coordinates was determined. Next, a completed sub-assembly was retrieved from the modular table fixture. The robot was then manually moved to the part release position and the location of its flange was noted (as previously with only the ‘‘flange fix’’ offset applied). Finally, using the location of the pallet, the pallet relative location of the pocket, the location of the robot flange, and the quick connector offset in conjunction with the tool offset program, the proper offset was determined. As previously 209 stated, only one offset was used to place a completed sub-assembly into any pocket on the pallet. Table 3-10 lists the offset that was determined (relative to the quick connector, in mm). x 0.0 0.712 Drop Rotation Drop Translation y 0.0 0.072 z 0.0 -191.00 yaw -134.85 0.0 pitch 0.0 0.0 roll 0.0 0.0 Table 3-10: Gripper Offset for Completed Parts 3.8.2.5 Test Procedure After determining all the required offsets for the workcells and the assembly itself, the real testing could begin. To control the system during testing, three programs were used. The overall control program ran on a single board computer. It handed a series of V+ commands to the Adept controller which did the task of moving the robot and commanded the digital I/O to operate the grippers and table hardware. The second program run on the Adept controller was the robot motion sever. Its responsibility was to accept the motion command requests from the overall controller and cause the robot to perform the desired actions. A third, vision recognition program running on the Adept controller was responsible for locating parts. A single program was used to locate all the parts since each part had the same geometric properties (a donut). The flexible parts feeder was not used for testing. In actuality, the underlit area at the second robot was a light table. Parts were simply placed on the underlit section of the feeder or the light table by hand as needed. Care had to be exercised to ensure that the proper sequence of parts were given to the system since no checks were performed on the type of part located by the vision system. The operation of the system followed the sequence describe below. First, the system would determine the location of the modular table and the pallet in relation to the robot’s world coordinate system. Next, the system would try to locate a lens ring. After acquiring the lens ring, it was placed into the fixture on the modular table. Figure 3-27 shows this insertion. 210 Figure 3-27: Inserting Parts into the Moduar Table Fixture Next, the system would rotate the gripper so that the lens gripper was in position and would locate a lens. After retrieving the lens, it was inserted into the lens ring in the fixture (Figure 3-27). Next, the gripper was rotated back to the lens ring / reflector fingers and a reflector was located, retrieved and inserted into the lens ring (Figure 3-27). Next, the robot would move out of the way of the press, which would move into position over the fixture and seat the reflector / lens into the lens ring. Figure 3-28 shows this sequence. Lastly, the completed sub-assembly was retrieved from the fixture and placed into a pocket on the pallet (Figure 3-29). Figure 3-28: Before, During, and After the Pressing Operation After inserting the completed sub-assembly into the pallet, the system would index its integral part count (to stop the process after 100 parts had been completed) and 211 begin looking for the next lens ring. If the part was placed into the ninth pocket on the pallet, the system would pause to allow the pallet to be unloaded. Figure 3-29: Inserting the Completed Sub-Assembly in the Pallet 3.8.3 Results After the determining all the necessary system and assembly offsets and running the process as described in the previous section, the following results were observed at each workcell. 3.8.3.1 Setup Workcell The setup workcell performed the assembly of the 100 parts without error. No problems were seen with the retrieval or insertion into the modular table fixture of any part or with the removal of the completed sub-assembly from the modular table fixture and subsequent insertion into the pallet. 3.8.3.2 Generic Workcell The system ran the assembly sequence at the generic workcell with only a total of 5 errors for the 100 parts. Each time the error was the same, the failure to cleanly release the reflector at the modular table fixture. Three of the times, the reflector was lifted from the lensring by the open gripper and two of the times, the unpressed sub- 212 assembly was lifted from the fixture by the open gripper. There are several possible explanations for this error: • The offset used by the gripper is not entirely correct and is causing a misalignment between the reflector and the lensring in the fixture. This misalignment means that the center of the gripper is not coaxial with the center of the lensring. As the gripper opens, the reflector remains centered in the lensring. The end result is that the reflector is no longer positioned equally between the two open jaws of the gripper and as the gripper retracts from the drop location, the reflector is caught by one of the gripper’s jaws. • The metallic rim on the back of the reflector is used for grasping. It has been seen that on some reflectors the metallic rim is bent. This bend causes the rim to wedge in the jaws of the gripper which prevents the gripper from releasing the reflector. As the gripper retracts from the drop location, the reflector is left stuck in one of the jaws. • The alignment between the metallic rim on the back of the reflector and the plastic front of the reflector is misaligned. This mis-alignment causes the front of the reflector, which is inserted into the lensring, to be out of position for a smooth insertion (even with a good gripper offset). As with the first case, the plastic end of the reflector algins itself with the lensring as the gripper opens. This causes the metallic rim (which is not aligned with the plastic end) to not be centered in the open jaws. As the robot retracts from the drop location, the reflector is caught on one of the jaws of the gripper. Examining each of these possible causes of the problem in light of this section shows that only the first cause is of concern. While the second and third explanations for the error do cause the assembly to fail, it is the fault of the parts themselves and not the gripper offset used. Even if conventional techniques were used for the assembly (i.e. an automated insertion with a hard taught location), the assembly operation would still fail. There are two possible sources which could cause an error in the tool offset. The first would be a fundamental flaw in the layout of the tool offsets as presented here which would prevent offsets which have been determined at one workcell from being used at another. The second cause could be errors arising during the teaching of the offset. The first source of error can immediately be discounted. If there was a flaw with the method of offsets as presented, then none of the assembly operation would have worked. However, failures were only noticed during the insertion of the reflector. A second source of error is more likely. Examining the vision calibration at the setup workcell shows that 213 there could be almost 0.010 of an inch of error in the recorded location of the vision fiducial. Since the location of the fixture on the modular table is a part of the vector equation solved to determine the tool offset (Equation (3.33)), any error in the location of the modular table will manifest itself in as an error in the tool offset. This small error is usually inconsequential, however, in a high tolerance insertion (such as the reflector into the lensring), any small amount of error can cause problems. The second two explanations for the errors seen, namely bad parts, also are valid. When examining the reflectors which failed the insertion operation, one clearly showed a badly bent metallic rim which would account for the error. While the others did not exhibit a bent metallic rim, a mis-alignment between the rim and plastic front section is difficult to detect with a visual inspection. A second point supporting this case is the wear on the parts themselves. The parts used for testing had all been assembled many times during earlier workcell operations. Because of tight tolerances between the reflector and the lensring, the reflectors often would scrape on the internal threads of the lensring during the insertion. This causes large moments to be applied to the interface between the metallic rim and the plastic portion of the reflector. Since these two parts are only held together by a press fit, over time the moments cause the rim and plastic part of the reflector to become misaligned. Then, this mis-alignment causes the assembly operation to fail. Using new parts for testing would probably have helped prevent this type of error. To further test the bad part hypothesis, a second test was conducted. A mark was placed on the reflectors such that they could be placed on the feeder at the same angle multiple times. Then, the system was operated until a reflector insertion appeared ‘‘rough’’ (i.e. there was a lot of interference and scraping between the lensring and reflector). This reflector was then retrieved and repeatedly inserted into the system for assembly at the same initial angle. Each time, the insertion would either be rough or fail. When a different reflector was then used, the assembly proceeded normally. This 214 validates the point that a reflector whose metallic rim and plastic section are misaligned causes assembly failures. A large misalignment was not necessary to cause the errors, as a visual inspection of the reflector did not readily show any problem with the parts. It was important to ensure the reflector was retrieved at the same angle relative to the gripper for each trial. A metallic rim misalignment causes the location of the open end of the reflector to be displaced relative to the centerline of the gripper. This displacement is related to the angle of the reflector relative to the gripper. The last question to be addressed is why errors were not seen at the setup cell during testing? It seems logical to expect that if the parts were causing the error in the first place, then one would see errors at both cells. However, this can be explained by examining the results of the camera calibration for the modular table at both workcells Figure 3-24 and Figure 3-25). At the setup cell, errors at the table fiducials ranged from 7 to 10 thousands of an inch while at the generic workcell they ranged from 1 to 3 thousandths of an inch. This difference in error can be attributed to the mounting of the camera on each robot’s arm (how well aligned the CCD chip in the camera is with the surface being imaged) and the quality of the lighting near each workcell (a combination of overhead lights and lights in nearby flexible feeders). Since the tool offsets were determined at the setup cell, it would be possible for a slight amount of error to be introduced due to errors in the vision system, as discussed previously. These errors would not show up during testing at the setup cell because the worktable was not moved between the determination of the offsets and testing. Therefore, even if there was some error in the position of the modular table as reported by the vision system, the tool offsets accounted for that error and the assembly functioned properly. However, when the assembly was moved to the generic cell, this error became evident. The reason the problem was only seen with the insertion of the reflector is due to the high tolerance interference fit between the reflector and lensring. To show this to be the case, another test was conducted in which reflectors were used for the assembly that 215 were of slightly smaller diameter (about equal to the diameter of the lens). During this test, 100 assemblies were made and no errors were seen. The smaller reflectors were made by sanding a dozen of the regular reflector to a smaller diameter. Therefore, the errors seen at the generic workcell can be accounted for by the following explanation. A small amount of error in the calibration of the arm mounted camera at the setup cell caused the subsequent tool offset to be slightly incorrect. This was not noticed at the setup cell because the worktable was not moved after the offset was determined and before testing began. After moving the assembly to the generic workcell, the interference fit between the lensring and reflector, a few slightly misaligned reflectors, and a slightly incorrect tool offset cause several of the assemblies to fail. This demonstrates the importance of a good camera calibration, especially at the setup workcell and the importance of designing parts for assembly in an automated system. 3.9 Conclusions A method of determining and implementing workcell offsets has been presented in this chapter. This method uses standard homogeneous coordinate transforms to determine the location of all components of a workcell relative to the base of the robot used in the workcell. The transforms are separated into two general classes: those that are workcell specific, relating the position of the robot to items permanently mounted in the workcell (i.e. cameras, flexible feeders, etc.) and those that are assembly specific, relating the relative position and geometry of assembly specific hardware and grippers. This separation allows the assembly specific offsets to be determined at a setup workcell and then used at any other generic workcell. Vision is used to determine the position of assembly specific items relative to the workcell at system start-up. The method was then tested using two workcells and an assembly. One workcell was specified as the setup cell while the other workcell was specified as the generic cell. The offsets specific to each cell were determined and then the offsets specific to the assembly were determined using the setup cell. Then 100 assemblies were made using 216 the setup cell with no failures. Next, the operation was moved to the generic cell and 100 more assemblies were made. Five errors were seen during the run and all were attributed to bad parts and not to the offsets used. 3.10 Future Work While the testing thus far has provided promising results, much further testing needs to be performed. Several key area need to be studied to improve the confidence in the applicability of the offset method presented here to any generic assembly cell. These areas include: testing with SCARA robots other than an Adept550, testing with nonSCARA robots, testing with a workcell where the modular table and pallet are not in a plane of the robot’s world coordinate system, testing with a workcell with a different geometric configuration, and testing with other assemblies. Testing needs to be performed with a SCARA robot other than an Adept550. Since an Adept550 was used in both the setup and generic workcells, it is possible that small errors could have gone undetected due to the geometric similarities of the robots. In addition, due to the similarities, it was not necessary to determine the rotational offset associated with the gripper quick connector. Using a different robot at another generic assembly cell would validate the applicability of the rotational offset and ensure that the system was not working just because the robots were geometrically the same. Using the same arguments, testing the system at a generic workcell using a robot which does not have a SCARA geometry would also further validate the offsets. Any SCARA robot has a similar geometry and makes some of the offsets extraneous (i.e. the z axis of the robot is always pointing vertically therefore, it is uncoupled from the x-y plane). Employing a robot that is kinematically different will further validate the offset method by examining the cases where the z axis is not always vertically oriented. In all the above testing, the x-y plane of the modular table is always aligned with the x-y plane of the robot’s world coordinate system. To test the most general case, a generic workcell needs to be constructed in which the modular table is not mounted in 217 the x-y plane of the robot. This would allow the testing of the full three degrees of rotation associated with the offsets to be exercised. While the previous suggestions for further testing deal with exercising the full complexities of the offsets, testing the system using a different geometric workcell configuration would verify the applicability of the offsets to any generic workstation. This is simply another variation of altering the physical system to test that the method of offset determination is valid. For example, in the current tests, the setup and generic workcell both provide the modular table mounting position in approximately the same place relative to the robot (in fact, the exact same robot locations were used by the arm mounted camera at each robot to register the table into the workcell). Drastically changing the geometry of the workcell would further test the applicability of the offsets to many different workcell geometries. Lastly, testing the system using different assemblies would further test the interaction of the workcell specific and assembly specific offsets. Since the overall method of offsets presented in this chapter is completely dependant on this interaction, it is important that it be thoroughly tested. 218 4 Design For Manufacture and Assembly 4.1 Introduction Designing parts for use in a flexible automation system can have profound results on the overall effectiveness of the system. While simply attempting to automate the assembly of existing designs is possible, the resulting operation is often prone to error and continual failure. More than often, the root of many of the problems can be traced back to the parts and assembly procedures being used. Design for manufacture and assembly (DFMA) is the process by which designs and assembly sequences and procedures are altered to increase the ease and effectiveness of automated assembly. However, applying this approach to automation requires a paradigm shift in the approach to manufacturing if it is to be effective. In the past, design and manufacture tasks have been performed independently. In this scenario, the designer designs a product and ‘‘tosses it over the wall’’ to the manufacturer to produce. There is no interaction between the designer and manufacturer and often what results is a design that is difficult to produce using automation. What is required is a collaboration between all aspects of the engineering staff, beginning with product conception all the way through delivery. By tapping into the expertise of all engineering areas (design, automation, manufacturing, ...), an equally functional and high quality design will result, but it will be much easier to reliably manufacture in an automated system. In practice, this approach is often difficult to implement, especially if the product designers are employed by one sub-contractor, the machine builders by another, and the raw components manufactured by a third. However, time spent by all involved parties in mutual consultation at the design phase will far out weigh any inconveniences. Many times the objections to this approach to manufacturing comes from the designers and those in marketing who have a preconceived idea that they will lose 219 220 control. Their preliminary job function is to produce a product that the consumers will desire. However, this notion is often in error. The knowledge gained into the manufacturing process will far outweigh any ill effects. Making a part more manufacturable does not always mean a complete redesign. Alterations in part designs do not have to be drastic. For example, only a slight redistribution of mass may be necessary to improve the probability of a particular stable rest position, thereby improving flexible feeder throughput. Or a slight shifting of a vision registration fiducial can be sufficient to provide an asymmetry which can be used to determine pose. Or a larger chamfer can vastly improve the reliability of an assembly task. These types of small changes to a design can have a major impact on the quality and ease of automated manufacture. While many guidelines and procedures have been developed in the past (as will be discussed in Section 4.2), many of these guidelines are not directly applicable to flexible robotic assembly. Much of the previous work has been specific to manual assembly. It is the purpose of this chapter to first review the history of DFMA, to present rules and guidelines specific to flexible robotic assembly, and then to compare and contrast between the previous guidelines and the ones presented here. While there are many ultimate goals of design, ranging from ease of assembly to ease of disassembly and recycling, it is the purpose of this chapter to examine three areas of design which have a direct impact on the success of a flexible assembly system. Namely, design for assembly, feeding, and vision registration. 4.1.1 Assembly Design for assembly specifically addresses parts of the design that have a direct impact on the ease and reliability of assembly. There are many tasks that, compared to a human, a robot cannot do very well. These include inserting things into holes with little tolerance, compensating for variations in component size, performing assembly requiring a fine touch (or force feedback), and performing actions which require a range of motion 221 beyond which the robot is capable (i.e. screwing two parts together). By redesigning the components which make up the assembly, many of the problems can be avoided. Rules for improving assembly usually tend toward decreasing the necessary precision of the robot required to successfully complete the assembly and decreasing the chances of parts jamming when being assembled. 4.1.2 Feeding Design for feeding deals specifically with designing parts to improve their throughput in a vision-based flexible parts feeding system. This is different than designing parts for use in a bowl feeder or some other type of part-specific feeding device. In the case of a vision-based flexible feeding system, the main concern is to present the parts in a singulated fashion to the vision system and robot. Since all flexible feeders tend to work on the principle of randomly distributing parts onto a horizontal surface, the important design criterion is minimizing the number of statically stable rest poses of the component. 4.1.3 Vision The final design criterion deals with designing the part to be easily recognized by the vision system. The guidelines developed are even more specifically suited to backlit binary vision. This further criterion was specified because the flexible feeders (described in Chapter 2) use an underlit window to present the parts to the vision system. Also, binary vision algorithms are much faster to process and less sensitive to fluctuations in the lighting than gray scale algorithms. In this section, some of the guidelines determined actually contradicted some of the guidelines established previously. This was because many of the previous guidelines did not address vision-based flexible feeding, which has a particular set of unique requirements. 222 4.2 Survey of Previous Work In the late 1950’s and early 1960’s, companies began to realize that the current design methodologies and paradigms were not very applicable to the new style of automated manufacturing. In particular, robotic and reprogrammable manufacturing systems had many different concerns and requirements than those of previous years. From this realization, companies began producing guidelines which could be used to enhance the design of their products in relation to their manufacturability and assemblability. One of the earliest works dealing exclusively with this topic was produced by General Electric and was called the Manufacturing Producibility Handbook [82]. Throughout the 1960’s and 1970’s, a lot of internal research was done independently by many companies that realized the need to streamline their designs and processes for the evolving paradigm in manufacturing. By the 1980’s the concept of design for manufacturing and assembly was being embraced by many companies. During this time, many of the previously-determined rules were being quantified and programmed into computers for automated analysis of designs. During the 1990’s, more emphasis has been placed on designing not only for manufacture, but for the whole life of the product including: manufacture, service, repair, and, ultimately, disassembly and recyclability. Throughout this entire evolution, however, the basic premise of designing a product for ease of assembly has been constantly updated as the methods and techniques of manufacturing have changed. There are generally three different methods of employing some type of a design for manufacturability process to a product. The first method described below was the one which was initially used. It is the following of a general set of rules or guidelines. These rules generally are not quantitative in nature and require a human to interpret and apply to each specific and unique case. While this is a much better case than just blindly starting each design from scratch, it does require some skill and knowledge on the part of the designer to correctly interpret and apply the rules. 223 The second method, forwarded by Boothroyd and Dewhurst [83], employs a quantitative analysis of the design. Each part of the design is rated with a numeric value depending on its manufacturability. The numbers are summed for the entire design and the resulting value is used as a guide to the overall quality of the design. The product is then redesigned, using the numerical values as a goal to be minimized. By concentrating on areas of the design that contribute heavily to the overall score, the effects of the redesign can be maximized. This again, however, requires much insight and knowledge on the part of the designer. The third, and most recent development in this area, is in the automation of the entire process. By using a computer, quantitative analysis can be applied to the design. Then by building an expert system in the computer employing the general design rules, a system can be developed which can analyze a design and then optimize it by repeatedly applying the rules and evaluating the quality at each iteration. This last approach is still in its infancy, however, as the application of general rules to individual designs is a difficult and inherently qualitative process. It is this type of system that will ultimately allow the designer to conceive of a design, enter it into the computer, and then oversee the evolution of the design as the computer tries many variations in search of the ‘‘best’’ design. Now that a general history of design for manufacture and an examination of the general process has been presented, the rest of this section will examine a few specific cases of the creation and application of DFMA. It is, however, difficult to examine all the rules and guidelines previously determined, since they are so numerous. Generally what will be examined is the overall picture of the types of guidelines rather than specific rules themselves. Boothroyd Dewhurst, Inc. (BDI) was the first company founded whose primary service was design for manufacture. In fact, the now common letters ‘‘DFMA’’ are actually a trademark of the company. Beginning in the early 1970’s, Geoffrey Boothroyd 224 began work on an analytical tool for reviewing a design. The company was formed in 1982 as a result of the development of the software which would perform the analytical analysis. Since that time, the company has expanded their products to include all sorts of ‘‘design for’’ products. Currently they offer programs to help with the design of circuit boards [84], with manual assembly, with robotic assembly, and with machining. They also do a lot of work examining the economic justification of each design revision. There are many books and articles describing the design guidelines and goals presented [85][86][87]. BDI also teaches many classes on design for manufacture at companies all over the world. Scarr, Jackson, and McMaster [88], in 1986, compiled a list of over 60 rules and guidelines to be used in the design of products for automated assembly. Many of these rules were gleaned from the ever burgeoning supply of papers and conference proceedings on the subject. The purpose of the paper was to examine the necessary information to present to a designer and to determine an effective method of presenting that information. The paper concentrated on the development of design rules which are appropriate to robotic and automated assembly. Sprague [89], describes the design for manufacturability studies and endeavors undertaken at NCR during the 1980’s. In 1982, NCR began a formal program on implementing design for manufacturability throughout its operation. By 1989, the program had been officially named as Design for Excellence (DFX). The company described DFX as ‘‘Continuous improvement in concurrent product and manufacturing process development to focus developers’ attention from the beginning on all key product lifecycle considerations such as customer requirements, quality, time to market, cost of ownership, and operational complexity.’’ As an example of the results of the initiative, the 2760 retail terminal was redesigned and compared with previous versions. The results were an 80% reduction in 225 parts and assembly time, a complete elimination of screws and assembly tools, and a 69% reduction in parts suppliers. AT&T [90] has an extensive computer analysis program which analyzes circuit board designs for manufacturability which began in 1985. Since that time, an extensive array of rules (comprising over 30 categories) has been compiled. A computer program has been designed to allow the design engineer to immediately see the application of the rules to his particular design. Beginning with the selection of the actual components the system is used to automatically populate the board according to the design rules. Specialized components may be placed by hand as needed. Throughout the entire process (component selection and placement, interconnection routing, testability, and manufacturability), the software continually monitors the design, flagging any areas that are in violation of design rules. Since the beginning of the DFM program, time for the design and analysis of a circuit board dropped from several weeks to 30-45 minutes. In an attempt to begin to quantify many of the qualitative design rules, Kim et al. [91] defined a quantitative metric for the feedability of a particular polygonal part being grasped by a simple, parallel jaw gripper. A generic parts feeder was designed in which a flat parallel jaw gripper is used to reorient parts on a horizontal surface. After reorientation, the parts are in known locations on the conveyor belt. A metric, ‘‘Feedability’’, was developed to relate the design of the part with the amount of work required by the feeder to get the part into a known orientation. Using this metric, rules are formulated for part alteration which can increase the feedability, thereby making the part more suitable for use in the feeder. Another attempt at automating the application of manufacturability design rules was discussed by Kim [92]. In this approach, rather than examining the design from the component to finished product, the proposed design was examined in reverse. First, a completed design was specified and then taken apart in the computer. Candidate assembly schemes were then created by reversing the taking apart process. A computer 226 program, called ‘‘REV-ENGE’’ was created which could compute possible disassembly sequences. After determining problem location in the design, a possible redesign is suggested. One of the shortcomings of this approach, however, is the inability to analyze a design as it is being constructed. A complete design is required as the starting point of the process. There have been several publications [93][94][95] produced by the agile manufacturing team at Case Western Reserve University which also describe design guidelines. These guidelines have been determined over several years of working with actual parts on a flexible manufacturing system. They have been centered on three main areas, design for feeding, vision, and assembly. It is from these initial ideas that this chapter was written. 4.3 Guidelines, Rules, Experience This section is divided into 3 sub-divisions. The first examines design guidelines for assembly, the second guidelines for feeding, and the third, guidelines for vision enhancement. Many of the guidelines have appeared previously in the literature. However, they are presented here in the context of design for assembly in an agile manufacturing workcell. 4.3.1 Design for Assembly Many factors can affect the reliability of the assembly operation. Several guidelines have been determined which can improve the reliability and ease of assembly. While some of these guidelines are imposed because of the use of SCARA type robots, most of the guidelines are applicable to any robotic assembly: 4.3.1.1 Use Snap Fits Rather than Threads Use snap fits rather than threaded fits whenever possible. Threading a nut onto a rod or a screw into a threaded hole can be a tedious process for a robot to accomplish. Without some form of force feedback, the robot can only follow a prescribed path to 227 accomplish the task. The possibility of cross threading the screw is likely, resulting is a failed operation. Another problem is with the range of motion required to fully insert a screw. Since the robot will not likely be able to perform an unlimited amount of rotations, it will be necessary to release and regrip the screw several times before it is fully seated. This adds time to the operation and increases the possibility of mishandling the part. In contrast to a screw attachment, a snap fit is much easier for a robot to perform. No rotation is necessary, only a straight line motion is required to make the attachment. It is also possible to design a combination snap/screw fit. By using a shallow thread depth (usually a fine pitch or multi pitch thread), it is possible to snap the components together while still allowing the possibility of subsequently disassembling them using the thread fit. An example of this is the lid on many milk containers. They are designed to be a thread connection which can be snapped together for ease of automated assembly. 4.3.1.2 Minimize Assembly Forces Design parts to minimize assembly forces. While snap fits are advantageous to robotic assembly, if large forces are required to mate parts then dedicated assembly hardware may be necessary. Robots are only capable of a relatively small amount of force compared to a dedicated press (mostly due to their use of electric motors). This is especially true of smaller, inexpensive, table-top style assembly robots. Designing an assembly which requires a large force for completion will require additional, dedicated hardware. Since this requires the robot to place the parts and then move out of the way while the dedicated hardware is actuated, more time is required for the operation and there are more opportunities for part mis-handling and failure. 4.3.1.3 Design Generous Tolerances Design generous tolerances into mating components. This demands less precision when assembling, thereby increasing reliability. Robots, in general, are less precise than most dedicated assembly hardware. If parts are designed which require accurate 228 placement of the parts for mating, then problems are going to occur because of the inaccuracies of the robot. A generous chamfer will allow the robot to ‘‘miss’’ the assembly location by some small amount and still perform a successful assembly. 4.3.1.4 Design Smooth Gripping Surfaces Design parts with smooth surfaces where the gripper jaws will make contact. This will allow the gripper to more easily self-center the part as it is being acquired. A common problem when retrieving parts (especially from a vision based feeder) is the robot mishandling the pickup because of slight misalignment between the part and gripper. By designing the parts to slide relative to the gripper jaws, the robot can be misaligned with the part and still retrieve it properly. In contrast, parts with serrated edges tend to hang up on the edges of the gripper jaws rather than sliding into proper alignment. This guideline complements the gripper design guideline listed in Section 5.3.2.5 4.3.1.5 Design for Vertical Assembly Design products for vertical assembly for SCARA type robots. Since the prismatic joint on a SCARA robot is in the vertical direction, it is easier and quicker to assemble components in the vertical direction (stack up) rather than in another direction. Straight line motions (other than z) require the robot’s controller to perform coordinated joint motion. These moves are generally slower than only a single axis move. By designing for only straight-line z insertion, an increase in the speed of the assembly can be realized. 4.3.1.6 Minimize Assembly Components Design assemblies with a minimum number of components to reduce the number of grippers and feeders required. This is a rather obvious guideline and one of the first reported in the literature. By reducing the number of parts being handled, many benefits become evident. Among them, an increase in reliability, a decrease in system cost, an increase in throughput, and a decrease in product cost. These benefits are realized because of the decrease in grippers, feeders, and complexity of assembly. 229 4.3.1.7 Design Parts and Grippers Concurrently Design parts and end effector tooling concurrently. Concurrent design of parts and tooling allows the gripper to be designed to handle more than one part so that a minimum number of grippers is needed for any given assembly. It also allows for the gripper and component material to be matched (as discussed in Section 5.3.2.5) which can increase the reliability of the system. 4.3.2 Design for Feeding Lacking any specialized orientation hardware, parts tend to settle onto the horizontal conveyor in statically stable orientations. Because of this, it is important to consider the feeding system when designing parts. 4.3.2.1 Minimize number of stable poses Figure 4-1: Plastic Snap Rings and LEGO Blocks The first guideline is to minimize the number of stable poses of a part. This increases the probability that a part will land in a suitable orientation. Consider, as an example, two test parts shown in Figure 4-1. A snap ring has two stable orientations, 230 face up and face down, which are identical. Since it does not matter which side is up, all snap rings on the horizontal conveyor which are singulated are potential candidates for assembly. In contrast, LEGO blocks have 3 - 4 stable poses; top (or nubs) up, bottom up, side up, and in some instances, end up. A singulated LEGO block on the horizontal conveyor has less probability of being in the correct pose for assembly. 4.3.2.2 Design parts with stable orientations consistent with assembly The second guideline suggests designing parts with stable orientations which are consistent with the given assembly. For example, if a part needs to be inserted into an assembly with side A down, then it is useful for the part to have a statically stable orientation with side A down. This can lead to difficulties during the design. In some situations, it is impossible to satisfy the above criterion. For example, long, slender parts needing to be inserted lengthwise from above (e.g. a pin into a hole) are a problem since it is impossible to design the pin to be stable standing on end. Rotary jaw grippers or specialized hardware may be employed to grasp the part in its stable orientation and then rotate it for assembly. 4.3.2.3 Design parts to prevent tangling The third guideline is to design parts to prevent tangling and nesting. Coiled springs have this problem. A hopper full of springs would quickly become one large tangled mass after a few minutes of operation. The plastic snap rings also exhibit this problem. An example of a slight design change that could alleviate this problem is to mold a strand of plastic across the gap of the ring which could be broken by the grippers during assembly, but which would prevent interlocking. 4.3.2.4 Design parts to be not damaged by the feeding operation The fourth guideline is to design parts which are not easily damaged by the feeder. In the bulk hopper, parts tumble and rub against one another; if they are fragile or have an easily marred surface finish, they could be damaged. If they are recirculated during feeding, they must fall from the end of the horizontal conveyor to the 231 return conveyor, then from the return conveyor back into the bulk hopper. Both these drops have the potential to cause damage. As an example, parts with transparent areas, such as display covers for automotive dashboards, could be scratched. 4.3.2.5 Design parts so as to not damage the feeder Finally, parts need to be designed so as not to damage the feeding system. For example, heavy parts with sharp corners could damage the belts of the conveyors when being fed. 4.3.3 Design for Vision While getting the parts to the vision window in a singulated, usable pose is important, it is only one feeder design consideration. Given a candidate part, the vision system must be able to identify the pose of the part and determine whether it is graspable. This is in the context of backlit, binary vision; the information to the vision system is a silhouette of the given part. 4.3.3.1 Design parts with rotational invariance The first principle is, if possible, to design parts with rotational invariance. This means that a part can be assembled in more than one rotational orientation, much like a washer or a nut. Parts which can be assembled in such a manner do not require that the pose be uniquely determined. This means that the vision system need only determine if a part is in an acceptable location and report the position to the robot. The orientation of the part is not important. 4.3.3.2 Design parts with asymmetry if rotationally variant Often, it is not possible for the part to be designed with rotational symmetry. Other times, the part may have rotational invariance, but have an up/down orientation that must be determined. In such cases it is important to design parts with an asymmetry such that its pose may be uniquely determined. It is not, however, necessary to make the asymmetry extreme. Such asymmetries allow the angular orientation and 232 the up/down orientation to be determined. Several examples of such design features follow. Three nubs may be placed on the inner circumference of a ring or on the outside diameter of a disk at slightly differing relative angles, 116°, 120°, and 124° for example. If the relative angles between nubs are always determined in one direction (i.e. always clockwise or always counter-clockwise) then the order of appearance of each angle creates an orientation signature that can only have two states, if viewed as a circular list. If the list is shifted such that the smallest value is first, then examining the value of the second element reveals the up/down orientation as well as the rotational orientation. Figure 4-2 shows the image of a ring with three internal nubs after vision processing. While not readily apparent to the eye, the vision system easily finds the 4° offset. Figure 4-2: Vision Processed Image of 3 Asymmetric Nubs Two ‘‘shoulders’’ of a part may have slightly different lengths to create an asymmetry. Consider, for instance, a small plastic thumb switch found in many electronic devices. The pose of the switch is easily determined by examining the length of each shoulder relative to the location of the end of the base. After acquiring an image, the major axis of the part is determined. By examining the distance to the edge of the part to 233 the left and right of the axis, the up/down orientation can be determined. If the smaller distance is to the right of the axis, the part is face up. If, conversely, the smaller distance is to the left of the axis, the part is face down. The unequal ‘‘shoulders’’ presented by the switch’s silhouette make determining its orientation straightforward. Figure 4-3 shows the switch and the corresponding image after vision processing. Figure 4-3: Plastic Thumb Switch with Different Shoulder Lengths 4.3.3.3 Avoid translucent parts The third principle is to avoid translucent parts. Plastic lenses on display panels are an example. Vision on clear parts is, obviously, difficult at best. Often though, the parts are mounted in an opaque housing which obscures the perimeter of the lens. It is then possible to place an opaque band around the exterior of the part without affecting its performance. The addition of this band can often be accomplished without an additional manufacturing step. Sandblasting the relevant area of the mold, for example, will produce a frosted area which can be seen by the vision system. 4.4 Redesign of an Inexpensive Flashlight: An Example As mentioned previously, flashlights were chosen as an inexpensive product to use as a test case of light mechanical assembly. Since many of the guidelines previously discussed were developed while the system was being designed and built using the test case, it was decided that a good example of the guidelines would be to redesign a readily 234 available, off-the-shelf flashlight for assembly in a flexible system. Rogers [96], in 1993, reported on a concept of a modular production system. In that paper, several design guidelines were put forth for parts redesign in a flexible system. In addition, the guidelines were applied to the redesign of a flashlight. However, the guidelines presented were rather general in nature and no physical system was used as a basis for developing the guidelines. In contrast to this, the following redesign of a flashlight was based on rules developed while using an actual, physical system. Figure 4-4: Generic Mini-Lantern used for Re-Design Exercise A generic, 2-cell handheld lantern type light was chosen as an example. The original design consisted of nearly 10 parts (not counting the batteries) including a lens, lens ring, switch sub-assembly, conductive spring and strips, case, bulb, and bulb retainer. Emerging manufacturing concepts and tools including Concurrent Engineering, DFMA, Solid Modeling, Rapid Prototyping, and Rapid Tooling were used to optimize designs, reduce errors, and enhance communications among design team members. Each 235 part was examined and redesigned to facilitate flexible feeding, vision recognition, manipulation, and assembly. 4.4.1 Lens The lens itself is inherently difficult to ‘‘see’’ with the vision system because it is transparent. For flexible feeding, however, some definite clues to locate lenses are needed. The solution for the flashlight used for system testing involved applying a dark band around the outer circumference of the lens with a magic marker. This appears as a well-defined ring to the vision system and does not degrade the performance of the flashlight. While reasonable for prototype work, this solution is not cost effective for production situations as it requires a separate operation. One proposed solution is to roughen or ‘‘frost’’ a ring around the outer diameter of the lens. This frosting can be seen in several flashlights currently on the market. This frosting can be done when injection molding the lens, by roughening the respective parts of the mold, so that no extra operations are required. The frosting darkens the image presented to the vision system, allowing the lens to be located. Another proposed solution was to put a promotional sticker on the lens in a known position and orientation. This sticker could be used for pose determination and could then be removed by the consumer. A draw back to this solution would be the extra manufacturing step required to apply the sticker. An even more innovative solution, however, is to incorporate the lens and the lens ring into one part. This not only solves the problems of ‘‘seeing’’ the lens and determining whether it is up or down, but it also reduces the total number of parts in the assembly, a practice advocated by the Boothroyd and Dewhurst model of DFMA. This new part could be fabricated with a double-shot injection molding process, allowing for the molding of two different materials in one part: the lens ring will be made of an opaque material and the lens made of a transparent material. This technique has been used for some small consumer electronics (a portable cassette player with a clear window, for example) with impressive results. 236 4.4.2 Lens Ring Using the original design as a starting point, many new concepts were generated for the design of the lens ring. Some of the criteria for design included the ease of assembly, the ability of the design to be used in the CWRU flexible parts feeder, and the ease of vision recognition. Feeding the lens ring presented another set of problems. To make the feeding more reliable, the aspect ratio of the lens ring was kept as small as possible. This was to ensure that the part would be more stable in the desired assembly position than other positions. A raised rim was also included in the design to help protect the lens while it is in the feeder. The original lens ring design was simply a threaded ring. The problem with such parts is that it is difficult to determine whether the part is facing up or down by a binary image processing system. This is important because they are needed in the face up orientation for assembly. In one concept, triangular protrusions could be placed around the perimeter of the lens ring. By creating the triangles in a saw-tooth pattern, an asymmetry could be introduced into the design which could be used to determine which side was up. Another concept was the use of two concentric feature sets which, when used together, would provide a positive indication of the pose of the lens ring. After examining the various ideas, a rapid-prototype of the last concept was fabricated. In this design two protrusions or ‘‘feet’’ were added to the exterior of the lens ring. These are used as a rotational reference when locating the lens ring. To the consumer, they appear as feet to provide a more stable pose when the flashlight is resting on a flat surface. On the interior of the lens ring are three half-circular nubs separated by 120°. By measuring the relative angle between the exterior protrusions and one of the interior protrusions, the pose can be determined. Figure 4-5 shows the first and second generation concept reflector. Figure 4-6 shows CAD views of the same. 237 Figure 4-5: First and Second Generation Concept Reflectors Figure 4-6: CAD Views of the First and Second Generation Concept Reflectors The feet, however, looked out of place so to create an improved look to the lens ring, the feet were removed and a small angular asymmetry of 4° was introduced in the location of the internal nubs. This small variation is not readily noticed by humans, but the vision system can readily locate it. The asymmetry is then used to determine the up/down orientation of the lens ring. The nubs can also be used to determine the angular orientation of the part. The Adept 550 robots do not have an infinite degree of motion on joint 4 (i.e. they can only rotate a finite number of degrees) which hampers any design in which the robot must rotate multiple turns to screw parts together. DFMA favors snap-together fits over screw together parts because of the slower assembly times and more complicated 238 motion associated with the latter. As a compromise, a bayonet mount was chosen as a good way to attach the lens ring to the flashlight body. While still requiring some rotation, that motion can be limited to a fraction of one revolution. This comes at the cost of positioning, however. For a standard screw, it is not necessary that the lens ring and body be aligned rotationally for the threads to mesh. Rotating the two parts together will bring the beginnings of both threads in contact. With a bayonet attachment, though, rotational alignment is important. As mentioned, the internal nubs can be used to determine the angular orientation of the lens ring so that the bayonet lock can be engaged. 4.4.3 Reflector In this flashlight design, the reflector serves two purposes. It first functions as a traditional reflector in that it concentrates and directs the light toward a target. It also functions as a mounting surface on which contact strips are attached which conduct the current from the batteries to the switch and to the lamp. Because of this, the design requires that the contact strips be attached to the back of the reflector. Several concepts were generated to eliminate these parts (which are difficult for robotic manipulation) and subsequent assembly steps from the design. One concept uses mold interconnect device (MID) technology which molds the contacts into the reflector, thereby reducing the part count and the extra associated assembly steps. Another concept was to plate the contacts onto the back of the reflector at the same time the front coating was being applied. This should not introduce any extra steps into the manufacturing of the reflector, but would make assembly much easier. By plating with chrome, or a similar hard substance, the front of the reflector would also be protected during the feeding. Another concept was to include the switch as an integral part of the reflector. This would eliminate another part from the assembly, but the switch would have to be attached somewhere upstream of the agile workcell. 239 Figure 4-7: Concept Reflector CAD View Figure 4-8: Concept Reflector For vision recognition, three nubs are molded into the exterior of the reflector (similar to those on the interior of the lens ring) so that the up/down orientation can easily be determined by the vision system. Figure 4-7 and Figure 4-8 shows the reflector. 4.4.4 Switch Several different concepts were generated for the switch: a self-contained push button switch, a sliding block pressing contacts together (original design), or a sliding block with snap together contacts. The advantage of the first concept is that it would be 240 self-contained. The second two designs offer the advantage that they would interact with the back of the reflector to close the current loop. The second concept would require feeding and manipulation of the thin pieces of copper necessary for completing the circuit. The third concept could be implemented with MID technology in which the conductive components are inserted into the switch during molding, eliminating the copper pieces. Figure 4-9: Concept Switch - Top View and CAD Views The assembly method was also considered in deciding which concept to implement. Since the robot works easiest and quickest in vertical moves, it would be advantageous to insert the switch from above. In the original design, the switch is inserted from the side before the two halves of the case are ultrasonically welded. Since the case sides will already be joined before they enter the workcell, a different approach had to be devised. By cutting a slot from the end of the body to the switch location, the switch can be inserted from above. The switch and lens ring must overlap each other in such a way as to cover the slot when the switch is in both the on and off positions. It is simple for the vision system to determine whether the new switch is up or down because 241 of the asymmetries in its design as discussed in Section 4.3.3.2. Also, the switch has been designed to virtually eliminate stable poses which are not graspable. Figure 4-9 shows a top view and CAD view of the concept switch. 4.4.5 Spring Since the flashlight uses two batteries, a spring may be used to link the positive terminal of the one battery to the negative terminal of the other battery. This can be accomplished in one end of the flashlight, and does not require a circuit element that runs the length of the flashlight. Several concepts were generated to improve this part for use in the workcell. The first design consisted of two coil springs (as used in the original assembly) linked together so that one spring contacts each battery. Coil springs are perhaps the most difficult part to handle and feed because they tend to tangle. The next concept was a leaf spring made by bending a flat piece of metal. The use of a battery pack was also discussed. This pack would provide a housing for mounting the batteries as well as holding the spring. Battery packs can be seen in many flashlight designs currently on the market. The final concept was the use of a foam spring. This spring would consist of a piece of foam with a conductive coating. 4.4.6 Bulb Retainer There are several different types of bulb retainers which are currently in use. The retainer could screw on to the back of the reflector, securing the bulb, as in the original design. Another concept is to use a bayonet mount similar to the lens ring to attach the bulb retainer. A third variation is to use a snap fit. The robot would have a difficult time assembling the screw on mount and the use of a bayonet mount would necessitate knowing the rotational position of the retainer to insert it correctly. Several iterations on the design were made, including a bayonet lock, a snap lock, and bayonetsnap hybrids. The current design uses the snap-lock with the added bonus that it may be removed by a slight rotation, a snap / thread hybrid as discussed in Section 4.3.1.1. 242 Figure 4-10 shows various concepts for the bulb retainer. Figure 4-11 shows CAD views of various concepts. Figure 4-10: Bulb Retainer Concepts Figure 4-11: CAD Views of the Concept Bulb Retainers 4.4.7 Bulb The flashlight bulb is one part over which there is little control. Bulbs from many different flashlights are all nearly the same. They are purchased from an outside source (this conclusion was reached by two factors: the bulb had a vendor name printed on it which was not the manufacturer of the flashlight and many flashlights from various vendors used the same bulb from the same vendor) which means the supplier would have to alter the design which is unlikely. Because the rotation of the bulb in the reflector is not important, all that is required is that the end of the bulb which to grasp when lifting it off the presentation conveyor can be determined. 243 4.5 Conclusions Guidelines have been developed to assist in the design of parts for assembly in a flexible manufacturing workcell. Three main areas of the workcell have been examined which can benefit from better-designed parts. These areas are assembly, feeding, and vision. When comparing included assembly guidelines to previously published ones, there is good agrement. A good indication of the importance of the rules listed is the fact that included rules were obtained by examining the system from a strictly physical standpoint. Others who have found the same or similar rules often approached the problem from a different viewpoint (economic justification, manual assembly, or dedicated automatic assembly for example). Therefore, it can be confidently stated that applying design rules for assembly to products can produce a better situation overall, including assembly, system reliability, system throughput, and cost. Guidelines which are applicable to parts design for feeding are, in comparison to assembly guidelines, more interesting. In the previous literature, feeding guidelines were developed for manual feeding (picking parts from a hopper by hand) and for bowl feeders. Therefore, some of the guidelines which were discovered do not appear in previous rule sets. There is a large difference between designing a part to be fed using a bowl feeder as compared to a vision-based flexible feeder. This shows the importance of applying a proper set of guidelines to any given design. It does not make much sense to design a part to be easily fed and handled by a human if it is going to be assembled exclusively in automated equipment. Design guidelines to enhance the ability of a part to be seen by a vision system are the newest of the rules. Previously, no one had examined designing for vision. Important rules were discovered and simple but effective techniques to enhance the ability of a part to be recognized by a binary vision system were developed. At times, these rules actually contradicted previous guidelines listed in the literature. For 244 example, when designing a part for a human to recognize (using vision), the following guideline was determined. ‘‘If complete symmetry is not possible then exaggerate asymmetric features’’ [97] An exaggeration of an asymmetric feature, good for human recognition and manual assembly, is not necessary for a vision system and could affect the aesthetic appearance of the part. A slight asymmetry is all that is needed for the vision system to determine the pose of the part. Finally, the design guidelines determined and presented were used to redesign a handheld flashlight for assembly in a flexible assembly cell. While this was only an exercise, it shows the importance of applying current design guidelines to products to reduce the overall complexity of the design. In the original design (as purchased) there were a total of 14 parts. Through the application of design for manufacture, feeding, and vision principles, the total part count was reduced to 7. As can been seen when examining the guidelines in comparison to previous rules, it becomes apparent that using guidelines tailored to current manufacturing practices is important. An excellent example being the contradiction between the old rule of exaggerating asymmetry versus the new rule of providing slight asymmetry. Finally, it is important to begin applying rules and guidelines as soon as possible in the design process. The sooner the guidelines are applied, the easier (and less costly) it is to make the necessary design changes. According to Boothroyd Dewhurst Inc.[98], a copier company shipped a product with a defect. The president of the company was quoted as stating that correcting the defect at the design phase would have cost about $35.00. Instead, it cost the company almost $600,000.00 to correct. This shows the importance of improving the design as soon as possible. 245 4.6 Future Work While the guidelines determined thus far have been beneficial, the formulation of design guidelines needs to be an ongoing process. There are three areas of design for manufacture and assembly in an agile workcell that require further work. First, as new assemblies with their unique components are introduced into the system, new guidelines will emerge. As these new guidelines become apparent, they need to be incorporated into the existing base of knowledge. Secondly, metrics need to be devised which encapsulate the meaning of the guidelines into a more directly programmable form. Such a metric could then be applied, quantitatively, to various designs to determine their relative goodness. Lastly, the metrics could be incorporated into a CAD type design package which would allow an intelligent, automated evolution of a candidate design into one more suited for agile assembly. 246 5 Gripper Design Guidelines 5.1 Introduction The design of the end-of-arm tooling for a robotic assembly system is of the highest importance. This is the piece of the workcell that physically interacts with the environment. While well designed grippers can increase throughput, improve system reliability, compensate for inaccuracy in the robot itself, and perform value added functions to the assembly, poorly designed grippers can drop or damage parts, hold parts inconsistently, and decrease system and flexible feeder throughput. Clearly the design of grippers is of importance. Not providing the necessary time, monies, and expertise for the task is asking for system troubles. The design of grippers is, however, not a trivial task. Often, the finalized parts and assembly sequence is handed to a designer, who must then devise grippers. A better approach is to design the grippers concurrently when designing the rest of the system. Often a small feature added to a part can greatly increase the reliability of the gripper. Other times, a proper gripper design can simplify the overall assembly, increase the overall system reliability, as well as decrease the cost of implementing the system. The requirements and expectations placed on gripping systems have increased greatly because of the introduction and acceptance of modular manufacturing concepts and vision-based flexible parts feeding. In non-flexible automation systems, the grippers had but one purpose: pick a part from one location and place it at another. Usually grippers were mounted on pneumatic slides which created a pick and place motion. With the proliferation of industrial robots in recent years, however, many new problems and challenges have arisen. Robots themselves have limited payload capacity, limited accuracy, and fixed repeatability. In a hard automation system, the uncertainty comes from the machine stops in the bowl feeder and on the pneumatic slides. In the case of a flexible workcell, there are many more sources of error including: the accuracy and 247 248 repeatability of the robot, the vision system, the robot-camera calibration, and the tool offsets. Properly designed grippers can help compensate for these unknowns. Lately there has been an initiative in the manufacturing community to use readily available, off the shelf components to build up automation systems in a modular way (as discussed in the introduction, i.e. Adept’s Rapid Deployment Automation). This catalog potpourri approach to machine design has many benefits including ease of replacement of defective and worn-out parts, cost savings, quicker design and building of the machine, and leveraging the expertise of component builders. Many gripper manufacturers have also taken this approach. It is easy to buy a quick connect, a rotary wrist mechanism, a remote center compliance device, and two pneumatic actuators from the same vendor, bolt them together, and have a fairly complex and sophisticated gripping system. While this is a wise approach to the construction of a gripping system, when the gripper fingers are designed, interaction with specific parts must be accomplished. For this task, off-the-shelf tooling simply will not work reliably. For a positive, nimble, self-centering grasp, the gripper fingers themselves must conform to the shape of the part they are holding. While it is possible in some circumstances (and, unfortunately, necessary in others) to use simple flat plates or ‘‘V’’ grooves, it is simply inviting disaster to do so. Agility would dictate using the most generic, adaptable grippers available to handle the widest variety of parts without changing tools, but with current technology, this is simply not possible. While there has been some promising research in the area of dexterous hands for parts manipulation [99][100], there is not a cost effective, easily controllable hand available. Until that time, the best that can be done is to design the gripping system such that it can be quickly and reliably switched between different manipulators. Currently, automated design tools exist for many aspects of assembly cells. Gripper design, however, has no such tools currently commercially available. Usually the knowledge and experience of a expert is required to design new grippers. There has been 249 some work on automated gripper design, but it is still relatively new [101]. Some of the work has centered on examining the quality of the grasp of various gripper finger shapes[102][103][104]. Brost [105][106] has examined grasp planning and planar manipulation tasks that are robust in the face of uncertainty. Others have examined the planning of fixtures which hold parts [107][108]. While not directly gripper design, the same underlying principles apply to both gripper and fixture design. Cutkosky [109] examines grasping by studying the grasp used by humans for various tasks. From this study, a expert system, Grasp-Exp, was devised to determine the grasp for manipulating objects by asking a series of question such as: ‘‘What is the dexterity requirement ?’’, ‘‘What is the stability requirement ?’’, ‘‘What is the object size ?’’, etc. Others have examined the design of chamfers on parts which engage during insertion (i.e. snap fits, etc. ) which will not cause the parts to jam relative to one another [110]. Another gripper design project [111][112] has been concerned with the design of grippers to handle multiple parts and the examination of the quality of the grasp when handling multiple parts. Other design guidelines have appeared, but are not applicable to automated design solutions [113][114]. The rest of the chapter is divided into three main sections. The first section deals with the issue of gripper footprint. This is an important concept when designing grippers, especially when designing grippers for use on a flexible feeder. The second section presents guidelines to assist in designing grippers. These are arranged into three major categories: guidelines to increase throughput, guidelines to increase reliability, and guidelines to save cost. Obviously, some of the guidelines are applicable to more than one category while others are mutually exclusive (i.e. designing a reliable and inexpensive gripper may not be possible in all cases). In each case, to further clarify the concept, an example will be given. The final section is a review of the grippers designed for use in a flexible manufacturing workcell. As each gripper is examined, the following will be discussed: what guidelines were followed or ignored and why, any revisions to the 250 gripper and why, what parts are handled by the gripper, an explanation of the clearance required by the gripper, and how successful was the design. 5.2 Gripper ‘‘Footprint’’ ? An important concept in the consideration of a gripper design is the ‘‘footprint’’ of the gripper. That is, how much additional area around the object being retrieved is required to physically situate the gripper such that it can retrieve the part without a collision. In conventional manufacturing and robotic systems, this was not an important concept because the parts were always presented to the system in the same orientation and location. The clearance for the gripper was consistent and did not change. However, this parameter becomes important in flexible feeding applications where the spacing between parts is random and variable sized. The standard procedure for retrieving a part from a flexible feeder is to first locate the part using the vision system. After a candidate part has been located, then a check must be performed to ensure that there is enough clearance for the gripper to reach the part without colliding with other parts or the feeder itself. A larger ‘‘footprint’’ means less candidate parts will be retrieved simply because the gripper is too big. Since flexible feeding is a random process, it is advantageous to grasp as many parts from the feeder as possible. Letting a part, which could be used for assembly, pass by and be recirculated by the feeder is inefficient and decreases feeder throughput. Unnecessary system delays could occur because an excessively large gripper could not safely approach most of the parts the vision system has identified and located. An apparently obvious definition of footprint is the vertical projection of the gripper’s fingers when open. This definition is consistent with the implication of the term ‘‘footprint’’ (e.g., the 2D outline left on a plane from a 3D object). However, it is easy to show this definition is overly simplified. In addition, the term ‘‘footprint’’ does not convey the correct mental picture. A better term would be ‘‘interference measure’’. Further examination reveals that the interference measure is dependent on many factors, 251 including the physical size of the gripper (in all dimensions, not just the vertical projection), the design of the gripper fingers themselves, the method used to grasp the parts (i.e. vacuum, parallel jaw, pneumatic bellows, ...), the design of the gripper finger actuator, the location and part feature used for grasping, the location of the part on the feeder (in the case of a flexible feeding system), and the material used to construct the gripper fingers, parts, and feeder table. An example in which the simple, definition fails is a gripper that approaches a part from the side (Figure 5-1). In this case, the gripper, jaws closed, ‘‘plows’’ through the parts until it is close to the desired part. Its jaws then open, the gripper moves to the final retrieval location, and it grasp the part. The interference measure for this gripper part combination would be a narrow channel along which the tip of the gripper moves followed by a larger, rectangular region where the jaws are opened and moved to the final retrieval location. Figure 5-1: Gripper Approaching Part From Side Another counter example (Figure 5-2) is a complicated wrist mechanism. One gripper approaches from an angle which could allow a second gripper to collide with parts. In this case, the interference measure is not the gripper fingers, but part of the pneumatic actuator and the second gripper. A more general and complete definition of the interference measure of the gripper is as follows: 252 The three dimensional space which must be free of obstructions for a gripper to successfully grasp a part. A metric (the interference metric) could then be stated based on the interference measure: The three dimensional volume surrounding the candidate part which must be void of obstructions such that the gripper may approach the part retrieval location without a collision. There are many nuances and subtleties in the definition and metric. The space does not necessarily have to be adjacent to the part. In the example in Figure 5-2, part of the space that needs to be vacant is displaced by several inches from the front of the part being retrieved. Another example, Figure 5-3, is a gripper with a large chamfer on the leading edge which would push neighboring parts out of the way as it approached its target part. In this case, the required clearance about a target part would be small relative to the vertical projection of the gripper fingers. In addition, the part and gripper finger material and the material of the feeder surface would also affect the interference measure. For example, if the gripper fingers were made of plastic, the disks metal, and the feeder surface translucent plastic, the coefficient of friction between the parts and gripper fingers and the parts and feeder table would be low, allowing the gripper to push the parts in its path out of the way. However, if the gripper fingers were aluminum, the disks rubber, and the feeder table translucent plastic, the coefficient of friction between the parts and the gripper fingers and the parts and feeder table would be high and the parts would not slide out of the way as the gripper approached. The possibilities of gripper interference measures are as widely varied as the grippers themselves. The important concepts are that the interference measure of the gripper is not necessarily the vertical projection of the fingers, and that the interference measure should to be minimized. 253 Figure 5-2: Gripper with a Complex Footprint Figure 5-3: Gripper with a Large External Chamfer 5.3 Gripper Design Guidelines The following guidelines have been determined while constructing grippers for use in two flexible manufacturing workcells. They are qualitative in nature and suggest ideas for improvements to gripper designs. The first sub-section deals with guidelines to 254 increase overall system throughput, the second sub-section deals with guidelines to increase gripper reliability, and the third sub-section deals with guidelines to reduce gripping system cost. 5.3.1 Design Guideline to Increase Throughput The purpose of the following guidelines is to increase the throughput of the workcell. This can be achieved in many ways; increasing the robot speed, decreasing the chance of waiting for a part to arrive in the flexible feeder by increasing feeder throughput, or increasing the function of the gripper to do more than just handle parts are all valid approaches to increasing throughput. 5.3.1.1 Minimize Interference Measure An obvious design feature which can increase system throughput is designing grippers to have the smallest interference measure possible. This is important in flexible feeding applications where parts may be situated close to one another and at random orientations. If the interference measure of the gripper is too large, then many of the parts which are correctly located will not be retrievable simply because the gripper is too big. Depending on the required feed rate for the assembly, unnecessary delays could occur, not because the feeder is incapable of the proper throughput, but because the gripper cannot reach most of the parts the vision system has identified and located. 5.3.1.2 Chamfer the Exterior Surfaces of Gripper Fingers In much the same way as minimizing the footprint of the gripper, chamfering the outside of the gripper fingers can help increase the throughput of a flexible feeder. The chamfer can allow the gripper to approach parts that would not normally be accessible by giving it the ability to push other parts out of the way during the approach. While this is another technique to reduce the interference measure of the gripper, it is such a simple and often overlooked procedure, it warranted separate mention. Consider, for example, a gripper whose fingers are each 1 4 of an inch thick. Then an additional 1 2 of an inch of clearance around the desired part will be required for the 255 part to be retrieved. By chamfering the outside edges of the grippers (Figure 5-3 for example), parts within that 1 2 of an inch of area can be safely pushed aside as the gripper approaches the desired part. This, of course, requires that a picture be taken after each part has been retrieved to ensure a true location of parts on the feeder are known. 5.3.1.3 Minimize Weight While the previous two guidelines have dealt with features and rules that help to increase the throughput of the flexible feeding sub-system of a manufacturing cell, this guideline seeks to increase system throughput by allowing greater robot speed. Each robot has a fixed payload capacity; by minimizing the mass of the end-of-arm tooling, the robot can run at higher speeds before overshooting or ringing occurs. Most industrial robots can be modeled as open kinematic chains ending with the gripper. The motors in the robot can only apply a finite amount of torque to each joint. As the mass at the end of the arm increases, the inertia of the arm increases as well. At fixed control gains, an increase in inertia leads to both lower speed of response and greater oscillation. Ringing or overshoot can be damaging to the workcell hardware, since the robot passes the desired location. If the desired location is adjacent to an existing subassembly or fixture (e.g. the gripper is transferring a part to a fixture location and the gripper fingers are in close proximity to the fixture), then by overshooting the robot could collide with the table hardware. This can damage the grippers as well as the assembly and fixtures. Weight reduction can be achieved in many different ways. Often it is possible to drill holes through parts of the fingers that serve no grasping purpose. Other places to examine for possible weight reduction are areas that do not directly affect the gripping surface (e.g., the outside of jaws). Also, by making gripper fingers thinner and slimmer, a weight savings can be realized. 256 5.3.1.4 Ensure a Secure Grasp of Part As in the previous guideline, an increase in the speed of the robot is one of the desired effects (system reliability will be examined in the next section). Any part has mass, and attempting to accelerate this mass as it is moved from the parts feeder to the assembly area requires force. This force comes through the grasp the gripper has on the part. While it is best to design the gripper to fully encompass the part and not rely on friction, this is often not practical. Assembly itself usually requires the part be added to an existing subassembly or placed into a fixture. In these situations, it is necessary to have the insertion end of the part completely free of the gripper fingers. In cases where gripper fingers cannot fully enclose the part, friction must be relied upon to secure it. Obviously, the more secure the grasp on the part, the faster it can be accelerated and decelerated and therefore the faster the robot can be moved. Consider a squat, hollow, cylindrical plastic part being grasped from above and placed into a circular hole. The bottom half of the cylinder must remain free so that it may be inserted into the hole. Possible solution to this situation include using two flat plates or two v grooves as gripper fingers. However, in practice, it was found that a more appropriate solution was to use gripper jaws contoured to match the radius of the part at actuator closure. Such a design provided a more secure grasp of the part (the part was more difficult to move or wiggle while being held in the gripper’s jaws) than was achieved with a simplified finger design. Using Coulomb friction (F=µN) as a model, there is no difference in holding force between gripper fingers which are constructed as: 1) a flat plate and a ‘‘V’’ groove, 2) two opposing ‘‘V’’ grooves, and 3) contoured fingers which match the shape of the part. These constraints are based on three assumptions: the parts are rigid, the gripper jaws are rigid, and the jaws are perfectly aligned. However, these assumptions are often violated in light mechanical assembly: light, plastic parts typically deform under gripper closure forces; gripper fingers, while relatively rigid, are mounted to an actuator which allows 257 the fingers to flex (in the direction of closure) as the gripper closes; and imprecise finger mounting practices can allow the fingers to be mis-aligned when attached to an actuator. In the absence of these constraints, a contoured gripper finger provides a more secure grasp. Since the part and gripper fingers are not rigid, as the gripper closes the force of closure produces deformation in the part. Using a simple ‘‘V’’ jaw, the local stresses in the part are high and deformation occurs. If too large a force is used, an excessive amount of deformation will occur because the contact area between the gripper and part is always small (not much greater than a line contact). The part may be damaged and the deformed shape could make the assembly operation difficult or impossible. Using a contoured jaw, local stress in the part also cause the part to deform. However, as soon as a small amount of deformation occurs, the contoured gripper jaws contact a larger surface area of the part. The force of closure is then distributed over a larger area of the part and much less deformation occurs for a given closure force. Therefore, a higher closure force may be used to grasp the part which results in a higher frictional force being produced. In addition, the reduction in deformation prevents the part from being damaged and does not interfere with the subsequent assembly operation. Care must be taken to ensure that the contoured finger does not create a situation in which an over sized part may wedge in the jaws. This can be alleviated by chamfering the portions of the jaw where the angle between the line of closure of the gripper and the part geometry is shallow. The area of a cylinder near the jaw’s parting line or a the sides of a rectangular pocket are examples. 5.3.1.5 Avoid Tool Change A design guideline which does not have a direct application to the actual design of the gripper fingers themselves but rather to the gripping system and assembly procedure as a whole is to avoid tool changes. Tool changes, while automatic, are time consuming in contrast to most robot motions. The robot must be operated slower during 258 the tool change to be sure the gripper has been properly placed in its fixture. If the tool is not properly aligned when released, it could be dropped or could come to rest improperly in the tool holder. This could cause problems the next time the gripper is retrieved. Tool changes also require that the grippers are all within the reach of the robot (unless a complex, secondary mechanism is used to move the grippers into and out of the reach of the robot). Given the size of the work envelope of many industrial robots, real estate within their work envelope is at a premium. Adding several grippers to the amount of hardware that must be reachable by the robot can make laying out the workcell that much more difficult. Cycle times will also increase as the robot is required to cover more of its work envelope during each assembly cycle. Consider an assembly consisting of three small parts added to an existing subassembly. Assume the subassembly arrives at the workcell on a pallet and that the work occurs directly on the pallet. At first glance, it would appear that three separate grippers would be needed and that many tool changes would be required. By designing the grippers to handle multiple parts and designing multiple grippers onto a single wrist unit (the next two guidelines), the entire assembly can be done without wasting time performing tool changes. Valuable space within the work envelope of the robot can also be conserved. 5.3.1.6 Grasp Multiple Parts with a Single Gripper As mentioned in the previous section, avoiding tool changes will increase cycle time. One approach to avoiding tool changes is to design each gripper to handle more than one part. While at first it seems as though it would compromise the quality of each grasp, a clever design can usually result in a good gripper. There are several ways to design a gripper to manipulate many different types of parts. If the parts are of similar shape and size (from a common parts family), then it could be possible to design different features into the jaws themselves that would accommodate various parts. Cylindrical parts are an example. By machining various 259 diameters into the jaws, multiple different diameter parts can be retrieved. Figure 5-4 shows a gripper finger designed to grasp two different sized cylinders from a horizontal orientation. Diameter 1 is used for the smaller cylinder while diameter 2 is used for the larger diameter (see Section 5.4.4.13 for a complete gripper description). Figure 5-4: Gripper Finger to Grasp Two Diameter Cylinders Another method of grasping multiple parts with a single gripper is to design different features offset from one another on the gripper jaws. This is synonymous with designing two different gripper jaws and mounting them on the same actuator. This approach works well for parts that are vastly dissimilar. Figure 5-5 shows one such gripper finger. Feature 1 is used to grasp a disk shaped part while feature is used to grasp an odd shaped body (see Section 5.4.4.14 for a complete gripper description). A third method of designing multi-use gripper fingers is to grasp some parts from their outer surface and others from their inner surface. This is especially applicable if some parts have holes through them or pockets in them. 260 Figure 5-5: Gripper Fingers with Two Grasping Features 5.3.1.7 Use Multiple Grippers on a Rotary Wrist There are many parts that are too widely varying in size and shape to be manipulated using a single set of gripper fingers. In these cases, it is often possible to design a separate gripper for each part and mount the grippers on a rotary wrist. The wrist rotates, bringing different grippers into positions in which they can be used. The wrist can be as simple as a pneumatically-driven, two-position actuator which rotates between two different grippers to something as complex as a servoed axis of the robot which can rotate between several different grippers. Often this concept and the previous can be combined to create a sophisticated gripping system capable of manipulating multiple objects without a tool change. An additional benefit of the rotary wrist design is manipulating multiple parts at once. This can often result in decreased cycle times because of the reduction in robot motions. The robot could go to the first feeder, retrieve a part, then go to a nearby second feeder and retrieve another part before beginning the assembly. This saves time if the feeders are close together relative to the assembly area. Imagine needing to manipulate two parts for a given assembly. The first is a cylindrical LED which is fed from a bowl feeder, grasped from above and placed into a 261 recessed socket. The second is a lens which is placed over the LED. In this case, a small pneumatically-actuated, angular-motion gripper would be appropriate for the LED while a suction cup would be used for the lens. In this case, a rotary wrist could be used to swap between the two different grippers. Without the rotary wrist, the robot would have to go and get an LED and place it in the socket, then it would have to go and get a lens and place it over the LED. Using a rotary wrist, the robot could get an LED and a lens at the same time and then place the LED in the socket and the lens over the LED. Only one trip would be required to the feeding area rather than two. 5.3.1.8 Functionality in Gripper Jaws The last guideline to gripper design tailored to increase system throughput is to design extra functionality into the grippers themselves. Often the gripper can be designed such that its performs an extra assembly function as the part is being placed. The possibilities of functions performable by a gripper are widely varied and dependent on the particular assembly. As examples, two different hypothetical assemblies will be examined. Consider a rubber foot, such as one found on the bottom of many computer cases, which is to be attached to a case using a screw. The rubber feet are fed using a bowl feeder. The screws are molded into the feet so that the foot and screw can feed as a single unit. A first approach to this assembly would be to place the foot on the case with the robot then use a dedicated mechanism to tighten the screw. Designing a rotary mechanism in the gripper would allow the screw to be tightened as the gripper places the foot on the case, thereby decreasing the number of assembly operations and decreasing the cycle time. As a second example, consider an open top container into which a seal must be pressed (an actual gripper, designed for this type of operation, has been built and will be examined further in Section 5.4.4.11). The conventional approach to this problem would be to design a gripper to place the seal into the container and then use a dedicated press 262 to drive the seal into position. Again, this would take additional time as the robot moves out of the way and the seal press is actuated. A better approach would be to design an extra linear degree of freedom into the gripper itself and then use the gripper to press the seal into location. This saves the time that would have been spent on the robot releasing the seal, moving out of the way, then regrasping the assembly. In some cases this approach also greatly increases system reliability, but that will be further discussed in Section 5.3.2.10. 5.3.2 Design Guidelines to Increase Reliability As the previous section concentrated on guidelines which can increase system thoughput, this section will concentrate on design guidelines which help to promote system reliability. System reliability is generally enhanced by designing grippers to work in the presence of errors and maintain a sure and accurate grasp of components. These errors can arise from many sources including inaccuracies in the calibration of the vision system, repeatability and accuracy limits of the robot, inaccuracies in taught locations and tool offsets, degradation of repeatability due to wear of components, and variances of the sizes of the parts themselves. These errors usually manifest themselves as parts not mating together correctly, parts missing fixture locations, or parts not being grasped correctly. Most of the following guidelines will then concentrate on techniques to help overcome inaccuracies in the system. Designing grippers to have and maintain a sure grasp of objects usually involves including features in the gripper fingers themselves that help them align and maintain proper contact with the object being grasped. 5.3.2.1 Ensure a Secure Grasp of Part The first guideline deals with designing gripper fingers that maintain a secure grasp of the object being held. This prevents the object from moving in the gripper fingers during robot movements. Most industrial robots are capable of high accelerations and decelerations. While many parts are small and lightweight and therefore do not generate large inertial forces, it is still possible for them to shift during robot motions. 263 This type of error is often difficult to identify due to its un-repeatable, random nature. Some of the time the system works well, while at other times the robot misses part placement locations. Generating and maintaining a secure grasp of the object can be accomplished in many ways. The first way is to design the gripper fingers to match the contour of the gripping surface of the part being manipulated. This was discussed in Section 5.3.1.4. If a cylindrical object is being held, then the gripper fingers should have curved surfaces whose radii match the radius of the cylinder. If the object is rectangular shaped, then the grippers should have rectangular shaped pockets that constrain motion in both the x and y directions (using care in both cases to ensure a wedging condition cannot occur). Sometimes it is not possible to encompass the part, a multifunction gripper may require a rather generic flat surface to grasp several different parts, for example. In cases such as these, it is important to increase the friction of the surfaces of the jaws to help grasp the parts during robot motions or to provide a compliant surface so the gripper may, to a small extent, conform to the part being held. This can, for example, be accomplished by attaching a thin rubber surface to the jaw face. While a compliant surface does affect the precision of the gripper, a flat surface has no contours with which to align parts, therefore the small difference in the final position of the part due to the compliance is negligible compared to the inaccuracy due to the flat plate design. 5.3.2.2 Minimize Finger Length The length of the gripper fingers can have an effect on the ability of the gripper to maintain a positive grasp on the part. Fingers which are too long cannot hold parts as rigidly as shorter gripper fingers. The problem arises from the distance between the actual gripping surface and the source of the closure force (e.g., a pneumatic actuator). When the gripper fingers are too long, a large bending moment is created at the base of the gripper jaws where they attach to the actuator. This moment causes the fingers to flex rotationally about the mounting point thereby reducing the gripping surface from a 264 large area over the surface of an object to a line contact at the top edge of the object. Most gripper manufacturers list maximum finger length in the literature included with the actuator. If the fingers are longer than those recommended by the manufacturer, damage to the actuator can result. There are trade-offs, however, in the length of fingers vs. the height of the parts vs. the gripper footprint. Generally it is a good idea to design the fingers to be only slightly longer than the height of the part. This will result in a much smaller footprint (than if you had to include the entire actuator in the footprint). Another item to keep in mind, in the case of flexible feeders, is the height of the sidewalls of the conveyor. If the gripper fingers are too short, then parts near the walls of the conveyor will not be retrievable because the actuator would hit the conveyor. 5.3.2.3 Design Necessary Approach Clearance This guideline attempts to increase system reliability by ensuring that the gripper can lower itself into the final grasping position without actually hitting the part it is trying to grasp. This rule, while apparently obvious, has two subtle implications. The first is in grasping parts from a location that is slightly in error. In these instances, if little clearance is allotted for the approach of the gripper to the final pick location, then the likelihood of the gripper colliding with the part is greatly increased. Depending on the part geometry and gripper design, this could cause the retrieval operation to fail. In a worst case situation, the gripper or feeder could also be damaged. The second situation involves the design of gripper fingers for multiple parts. In this situation, it can be difficult to visualize all the required clearances. Often a careful analysis of all the relevant dimensions at each open and close position must be examined. This analysis must begin when the gripper design is begun and must continue until the gripper design is complete. Often the final shape of the gripper and the location of the contacting surfaces is as much determined by the clearance constraints as it is by the geometry of the parts being grasped. 265 5.3.2.4 Design Chamfers on Approach Surfaces This design guideline helps to re-center parts when the expected part location is imprecise. This rule parallels the design guideline listed in Section 5.3.1.2. In that rule chamfers are used to push unwanted parts out of the way. This rule attempts to push parts which are slightly out of position into the correct location. A chamfer (approximately 1 2 the thickness of each gripper finger) on the bottom edge of the gripper fingers allows for extra tolerance in misalignment during part retrieval. This chamfer must, of course, be balanced with the chamfer on the exterior of the gripper fingers, mentioned in Section 5.3.1.2. Naturally, the larger the chamfer on the inside of the gripper jaws, the smaller the chamfer becomes on the outside of the jaws. Each gripper / part combination must be examined individually to determine where and to what extent a chamfer would benefit the particular assembly. 5.3.2.5 Design Grippers to Align Parts as They are Grasped This is another design rule that attempts to improve the reliability of part retrieval systems. While the purpose of several of the previous guidelines was to align parts as they were being approached by the robot, the goal of this rule is to design grippers which align parts in the jaws even if they were misaligned when the grippers begin closing. In contrast, flat, parallel jaw grippers do not center parts as they are being grasped. The most often added feature to gripper fingers that allows them to align parts as they close is chamfers on the parting line or other constraining feature of the gripper jaws. This chamfer helps to guide parts into location as the gripper jaws are closing. Care must be used, however, to ensure the chamfer does not form a taper in which parts may wedge. Another technique to help the jaws align parts as they close is to design the jaws using low friction material. For example, nylon and aluminum have lower coefficients of friction than rubber or compliant surfaces. The part material also plays a role. It would 266 be less than ideal to design gripper jaws out of aluminum if the parts were also aluminum, since aluminum rubbing on aluminum tends to stick and gall more than slide against one another. A more appropriate choice for the jaws would be a nylon, plastic type of material, or anodized aluminum. Figure 5-6: Gripper With and Without Part Alignment Chamfers Consider a cylindrical peg. Gripper fingers matching the shape of the peg would have half circles in each finger. Examining the surface contact, its fairly easy to see that the first 20° - 30° of each finger from the parting line do not contribute greatly to the holding power of the gripper. The angle between the line of force produced by the actuator and the surface normal of the gripper is too high. In addition, this area of the gripper finger could cause the part to wedge in the gripper if the part is slightly oversized, so a chamfer also relieves this problem. By chamfering this surface a much larger area is produced to guide the peg into the gripper. Figure 5-6 shows two pseudo grippers (chamfer angle of 45°). The angle of the chamfer (relative to the parting line) can be determined by examining the coefficient of friction between the gripper fingers and the part. A shallower angle may be used if the coefficient of friction is low since the part will slide relative to the gripper under less force. A steeper angle is necessary for 267 parts with a higher coefficient of friction. Care must be used (as mentioned previously) to ensure an oversized part will not wedge in the chamfer due to friction. Next, consider a rectangular block. Gripper fingers that match the shape of the block would have a rectangular pocket in each half. In this case, with no chamfer, if the fingers were at all misaligned, the gripper would fail to grasp the part. If the part were slightly oversized, it would wedge in the gripper. By chamfering the entire side wall, the gripper will be capable of aligning the part as it is grasped. If the part is oversized, it will not be completely seated in the gripper’s fingers, but it will not be wedged. As previously, care must be used (by examining the coefficient of friction between the gripper fingers and part) to ensure the part will not wedge due to the part locking in the angle of the chamfer (taper lock). 5.3.2.6 Design Gripping Surface to Complement Frictional Coefficient In many cases the material from which the gripper surfaces and parts are constructed is nearly as important as the geometric shape of the surface. The properties of the interaction between the part and the gripper material determines to a large extent how well the gripper will perform. In many cases, it is best to design grippers that match the contour of the part being retrieved. In these situations, chamfers are usually added to the gripper fingers. These chamfers, as previously discussed, help to guide the part into a reliable and repeatable grasp. The grasped part is held in place by friction generated between the fingers and the part. Gripper fingers that have a low coefficient of friction between the gripping surface and the part work best to align the part since it is desirable to allow sliding between the fingers and the part during grasping. At other times, it is impossible to design the gripper fingers to contour the parts being retrieved. In these cases, usually flat, parallel jaws are used. Jaws such as these cannot align the parts as they are being retrieved (since there is no surface to apply side forces to the part as the gripper fingers are closing). In these cases, the part is held in the 268 gripper by the friction between the flat finger and the part, so it is best to maximize the friction between the part and finger for a secure grasp. Since it is not intended for the part to slide relative to the gripper jaw during the time the jaw is closing, a low coefficient of friction is not desired. A second consideration is that a flat plate (in most circumstances), does not match the shape of the part. Fixing a compliant layer of material to the surface of the gripper jaws can also increases the secureness of the grasp (due to most compliant materials having a high coefficient of friction when interacting with most other materials, i.e. rubber). 5.3.2.7 Design Fingers to Encompass Mounting Points This guideline, unlike the others before it, addresses the problem of the interface between the gripper jaws and the actuator. The best designed and constructed gripper jaws will still perform inadequately if the interface between the fingers and actuator is insecure or misaligned. Relying on the mounting screws to locate the jaws is not reliable since there is usually much clearance (the standard screw clearance is 1 64 of an inch) between the screw and the screw hole. Even if care is taken during construction, a small amount of clearance between the screws and screw holes can cause undesirable misalignment at the end of the gripper fingers. The length of the gripper fingers is usually 3 -5 times as long as the distance between the screws. Such a distance can greatly multiple any misalignment due to the screw hole clearance. The solution to this problem is to design the gripper fingers to provide positive mounting location to the actuator. In most cases, this involves designing and machining a pocket in the finger mounts which encompasses the mount post on the actuator. In some actuator designs, dowel pin holes may be provided for location. Ideally, two holes are provided for location since one hole only constrains 2 of the 3 possible degrees of freedom. One dowel hole is better than only relying on the screws for location, but it would be wise in such cases to still design the finger to encompass the mounting point. It is best to avoid actuators that do not provide a way to positively mount the fingers to the 269 actuator, although sometimes a certain actuator may be used if it fits the application at hand. Figure 5-7 shows gripper fingers that are and are not designed to encompass the actuator mounts. Designing the gripper finger to positively locate on the actuator has some other benefits as well. Often it is necessary to remove a finger from a gripper to repair it or to perform minor modifications on it. Perhaps the robot has crashed and left a burr on the gripping surface, or maybe it is desired to increase a chamfer to help align the parts during retrieval. Unless the gripper finger is accurately located on the actuator, a new tool offset must be calculated every time it is removed. By accurately locating the finger, it is usually possible to remove the finger, perform the necessary work, and replace the finger without redoing any tool offsets. Actuator Not Encompassed Actuator Encompassed Figure 5-7: Encompassing Actuator Mounting Points 5.3.2.8 Do Not Rely on Parts Added to Assembly for Location This is a subtle, but important guideline to follow to increase system reliability. As a product progresses through a manufacturing system, parts are added to the assembly and processes are performed on the assembly. In subsequent manipulation operations, avoid relying on parts added to an assembly for locating a part in the gripper (or on a fixture). If an operation failed earlier and an added part was not placed on the 270 assembly, or if an added part was placed incorrectly, relying on that part for location could cause problems. The part could be gripped inaccurately, could damage the grippers, or could damage the assembly hardware. Its best to grip a part from a place on the body to which parts are being added rather than rely on the added part. If it is unavoidable, and an added part must be used for gripping, then there should be a check somewhere earlier in the system to ensure that the added part has actually been added correctly to the assembly. Consider a stubby shoulder bolt assembly (a bolt, washer, and a nut which are assembled and sold as a single unit) that has had a thick washer added to it during a prior assembly operation. The bolt is picked up from the thread end and placed into a fixture to have the nut added in a piece of dedicated hardware. Designing the gripper to locate the bolt vertically using the top surface of the washer (which is resting on the shoulder of the bolt) is not a good solution. The washer could have not been placed on the bolt, in which case a good location of the bolt is not obtained. In a worse case, the washer could be hung up partially down the shank of the bolt. In this case, when the gripper attempts to grasp the bolt, it would hit the washer instead. A better approach would be to locate the bolt / washer subassembly in the gripper vertically on the end of the bolt, which is consistent regardless of whether the washer was added or not. 5.3.2.9 Design Lead-in Chamfers on Assembly Grippers This guideline deals exclusively with grippers used for assembly; grippers whose purpose it is to remove parts from a feeder and add them to an existing subassembly. In such cases, it is a good idea to design a generous lead-in chamfer or guide on the gripper which helps to align the part and the subassembly before the part is inserted or joined. There are many different types of lead-in chamfers or guides that could be designed. Their design is dependent on the actual geometry of the parts, subassembly, and insertion location. As an illustration, consider the following example: 271 A circular tube is fixtured upright on a pallet. The robot must press a lid into the top of the tube. A poor design would be a gripper that only holds the lid from the top and then attempts to place the lid into the tube. Unless there is a large chamfer on the lid or the inside of the tube, there is a high probability that the operation will be unreliable. A better solution would be to design the gripper longer than the lid such that the gripper centers the lid in line with the tube before the tube is inserted. Depending on the design of the feeder, it may not be possible to design the grippers in this manner, but some leadin chamfer is much better than just holding the lid by the top. Figure 5-8 shows the two grippers described above. The gripper on the left has a long lead-in chamfer to align the parts before insertion whereas the gripper on the right has no prealignment capabilities. Figure 5-8: Grippers With and Without Assembly Chamfers 5.3.2.10 Functionality in Gripper Jaws The final guideline to increase system reliability is the same as the last for increasing throughput, namely designing functionality into gripper jaws. Increasing the functionality of grippers increases system reliability by decreasing the opportunities for the gripper fingers to err. The more times grippers must place and pick up a part, the more opportunities there are for the grippers to mishandle a part. By designing the grippers to manipulate the part without releasing it there is less opportunity for an error. 272 Consider again the example given in Section 5.3.1.8. An open top container is held in a fixture and a seal is to be pressed into the bottom of the tube. The robot itself is not strong enough to press the seal into place, so an external mechanism must be designed. Designing an external press to do the job requires the gripper to retrieve a seal and place it into position, then release it. After the pressing operation is performed, the gripper must then retrieve the seal/tube assembly. However, a clever gripper design can perform all this functionality without releasing the seal (as previously mentioned, this gripper was designed and is described in Section 5.4.4.11). The gripper would have an additional linear degree of freedom that would be used to press the seal into place. In this way, all that would need be done is to place the gripper in position over the tube and actuate the linear action which would seat the seal. If a suction action were to be used to hold the seal on the gripper, then this suction could also be used to lift the seal/tube combination. This design would allow the seal to be seated and the subsequent assembly to be manipulated without ever releasing the seal, thus decreasing the chances of a gripper malfunction. 5.3.3 Design Guidelines to Reduce Cost While the past two sections have dealt with design guidelines that are intended to have a physical impact on the workcell itself, system throughput and system reliability, this section describes gripper design guidelines that can reduce the cost of the gripping system. While designing the cheapest grippers possible may not be the best solution for saving money as the next paragraph discusses, the following rules will help lower the cost of the gripping system. Note that the final cost of the workcell is dependent on many factors and simply trying to reduce total cell cost by cutting corners in gripper design is an ill conceived plan. Many times the financial implications of gripper design choices are not easy to see. An extra 10% spent in initial capital investment to ensure an efficient and reliable gripper design may reap large rewards, since without this the workcell may need 273 continual operator attention due to the grippers dropping or mishandling parts. Add to that the loss of revenue because the workcell is not operating at 100% and the extra cost of doing a proper gripper design job is inconsequential. For example, designing added functionality into gripper designs often costs more, both in design time and in fabrication. But, when the savings in dedicated hardware and decrease in cycle times is included in the equation, the added cost is well spent. 5.3.3.1 Use Parallel or Rotary Motion Pneumatic Actuators One source of cost savings is in the selection of the gripper actuator. As the next section will address, using off the shelf components for the gripper design whenever possible is helpful in reducing cost, but by selecting certain types of actuators, an added savings can be realized. Many gripper actuator manufacturers have a wide product line. While, at first, it may appear that a more expensive actuator is required for the job at hand, a careful and clever design can often utilize one of the less expensive units. Generally, the parallel or rotary motion actuators are less expensive (except, of course, for suction cups, which are the least expensive). These actuators use two opposing finger mounting posts which travel in a parallel or rotary fashion to and away from each other. More expensive actuators use other techniques than two simple jaws. For instance, some have three jaws which move in a circular concentric fashion maintaining a consistent centerline as they close. Other actuators use more innovative ideas, such as inflatable air pockets which wrap around the part being grasped as they are inflated, or a small array of needles which extend from a flat face and pierce the part being grasped. 5.3.3.2 Use Off-The-Shelf Components in Gripper Designs The most obvious place to save money in gripper design is in using readily available, off-the-shelf components whenever possible. While it may seem that no one makes the correct style of gripper needed for a particular task, it is often advantageous to design a solution that works with the best readily available gripper. These actuators usually have a large installation base of users who have already debugged the design. 274 They are also specifically designed for their intended purpose and are usually lighter and more reliable that custom designs. Besides direct cost savings in the purchase price of the actuator itself, other cost savings are realizable if off-the-shelf components are used. When a part of the gripping system fails (wear and tear on the system makes component failure inevitable), using readily available components makes repair and replacement a quick and easy process. Using custom designs, repair means using old drawings and determining what parts need to be replaced. Replacement means having the entire mechanism remade. These actions can take a substantial amount of time, which directly relates to lost revenue due to the workcell being down. Using standard components, a replacement part can be ordered and repair made much more quickly. Many of the smaller actuators are inexpensive enough to simply keep an extra on hand for replacement. After replacing the damaged part, the system can be returned to service almost immediately. A reteaching of a tool offset might be required, depending on the application and specific gripper geometry. 5.3.3.3 Handle Multiple Parts with a Single Gripper It is often tempting when designing a gripping system that handles two different parts (especially if they are different), to simply design two different grippers and mount those grippers on a rotary wrist assembly. This, however, is often not necessary. Rotary wrist mechanisms are expensive and when only two parts are to be handled should be avoided unless absolutely necessary. It is usually the case that a single actuator with fingers designed to handle multiple parts can be used in place of two actuators and a rotary wrist. There are, obviously, situations where this is not possible; two parts which need to be handled at once or one part which uses a suction cup and another which uses a parallel jaw gripper are examples. However, whenever possible, designing fingers to handle multiple parts should be examined before utilizing a rotary wrist. 275 5.4 CWRU Designs and Examples In this section, the grippers designed during the past several years of the agile manufacturing project will be discussed. Their strengths and weaknesses in light of the previous guidelines will also be examined. In all, eighteen grippers have been designed. Most of the guidelines developed and presented in the previous section have come from the design of these grippers. Before discussing the grippers, however, it is necessary to discuss the parts being handled and the assembly processes which occur. Without knowledge of the parts and assembly, the reasoning behind the gripper designs is meaningless. 5.4.1 Parts Descriptions The following describes the parts which are handled by the grippers. There are three categories of parts, flashlight parts, parts used for the Eaton Reconfigurable Assembly Cell (RAC), and miscellaneous nuts and fittings used for feeder testing. Flashlight parts were originally chosen for initial testing in the workcell for several reasons: flashlights are made of many small, light weight, plastic and metal parts; they come in a variety of sizes and styles from many manufactures, this was important for testing the flexibility and extensibility of the workcell; and they are widely available from many local stores at reasonable prices. Seven grippers were designed for use in Eaton’s Reconfigurable Assembly Cell. This cell is designed as a prototype to a standard reconfigurable assembly system which could be quickly deployed for a wide variety of automation tasks. The prototype cell is used for demonstrations and taken to trade shows throughout the country to highlight several companies’ expertise in automation. Two different assemblies are manufactured on the cell and are composed of four different components each. Finally, various nuts and socket connectors were selected to test the flexible parts feeding system (Chapter 2). They were selected because of their relatively small size and low cost availability from local hardware stores. 276 5.4.1.1 Bottom Cap The bottom cap is the part which screws on the back of a flashlight. It is approximately 2 inches in diameter and 11 2 inches tall and is made of opaque plastic. It is a cylindrical component with one end open and the other end closed. It has a shoulder on its outside diameter approximately half way up its side. A ring, for hanging the flashlight is attached to the at this shoulder. The bottom half of the outside diameter is serrated for a more sure grasp. The very bottom is a solid ring. Figure 5-9 shows a view of the bottomcap. The bottomcap has three stable rest orientations. The first is open end down, the second is open end up, and the third is open end up at an angle resting on the rim of the closed end and on the shoulder. The gripper needs to handle the parts in both the open end up and closed end up configurations. Figure 5-9: Bottom Caps 5.4.1.2 Plastic Snap Ring The plastic snap ring is a circular plastic ring (torus like) approximately 13 4 inches in diameter with a revolving circle diameter of approximately 1 8 of an inch. The ring is split to allow it to be attached to the bottom cap. At each end of the ring, by the split, there is a small bump which snaps into the bottomcap. Figure 5-10 shows a view of 277 the snap ring. The snap ring has only one stable rest configuration, lying flat on its side. This is the orientation from which the gripper must retrieve the part. The spare-lamp holder is a flat plastic disk with a single rectangular tab protruding from one side for grasping and two rectangular posts protruding from the opposite side designed to hold a spare flashlight bulb. There are two flats on opposing sides of the disk which align with features in the bottom cap. The disk is approximately 1 12 inches in diameter. The grasping tab is about 1 8 of an inch wide by 3 4 of an inch long by 1 4 of an inch high. The bulb holding feature has a combined width and length equal to that of the grasping tab but is 5 8 of an inch in height. Figure 5-11 shows this part. This unique shape gives the part a stable pose of either the grasping tab down and the bulb holding feature up at approximately a 70° angle (from horizontal) or the bulb holding posts down and the grasping tab up at approximately a 50° angle (from horizontal). The part must be retrieved using the grasping tab as the pick point (which protrudes at the angle mentioned above). Figure 5-10: Plastic Snap Rings 278 5.4.1.3 Spare Lamp Holder Figure 5-11: Spare-Lamp Holders 5.4.1.4 Coil Spring The coil spring is a conically spiralled shape made of 1 16 inch diameter copper. It is approximately 13 4 inches in diameter at its base, tapers to 1 2 of an inch diameter at its top and is about 11 2 inches high. Both its ends are open coiled, so it tangles easily (and completely). Figure 5-12 shows the spring. Since the part tangles so easily, only one pose is allowed during feeding, sitting on its base with the small end up. This is the pose required for assembly. Figure 5-12: Coil Springs 279 5.4.1.5 Lens Ring The lens ring is the circular ring of plastic which screws on to the front of the flashlight. It contains the lens, the bulb, and the reflector. The lens ring is approximately 23 8 inches in diameter and about 11 8 inches tall. Its back end is open while its front end has a sizable overhang which is used to hold the lens in place. Its outside diameter is serrated toward the front for an improved grip while the back 18 of an inch is solid. Figure 5-13 shows the lens ring. The lens ring has two stable poses (it is marginally stable on its side and prone to rolling). The first is front down and the second is back down. The desired retrieval pose is front down, gripping the part from the back. Figure 5-13: Lens Rings 5.4.1.6 Lens The lens is the translucent plastic disk that is used to protect the bulb and bulb retainer from damage. It is not used to focus the light, but is used only as a protector. It is about 21 8 inches in diameter and is about 1 16 of an inch thick. It has a dark band around its perimeter for vision recognition. Figure 5-14 shows the lens. It has a single stable pose, lying flat. Since the part is symmetrical, either side up is usable. The gripper needs to manipulate the part from this pose. 280 Figure 5-14: Lenses 5.4.1.7 Reflector The reflector is used to focus the output of the bulb into a beam. It is made of plastic with a metallic rim on the back for conductive purposes. The front of the reflector is open and its inside surface is parabolic shaped and is plated to increase its reflective properties. The outside surface is also parabolic shaped. The large end of the reflector is approximately 21 8 inches in diameter. A circular opening in the smaller end of the reflector is about 3 8 of an inch. The conductive metal rim is cup shaped and is about 13 8 inches in diameter. Figure 5-15 shows the reflector. There are three poses for the reflector. The first pose, which is marginally stable and prone to rolling, is sitting on its side supported by the conductive rim and the large end. The second, stable, pose is resting with the reflective end up, this is the pose which is arrived at when the first pose is disturbed. The final, stable, pose is reflective end down. This is the pose from which the part is retrieved. 281 Figure 5-15: Reflectors 5.4.1.8 Bulb The bulb is a circular shaped, standard flashlight bulb (Phillips model PR2). It is about one inch long and about 3 8 of an inch in diameter. One end of the bulb is solid metal while the other end is glass. There is a metal rim at the mid point of the bulb. It has a ‘‘V’’ notch cut into it. Figure 5-16 shows the bulb. There is only one stable pose in which the bulb sits. It is resting on its side with the metal end down and rotated until the ‘‘V’’ groove is down. This is the pose from which the bulb is picked up. Bulbs also rest with the ‘‘V’’ groove not down, which is a marginally stable pose. 5.4.1.9 Bulb Retainer The bulb retainer is a cylindrical plastic part which is used to hold the bulb in place on the back of the reflector. It is approximately 5 8 of an inch in diameter by 3 4 of an inch long. The front of the bulb retainer is open and accepts the metal end of the bulb. The back end of the retainer is closed except for a 1 8 inch diameter through hole. On the back lower half of the retainer body, there are four smaller cylindrical shaped protrusions running lengthwise to the main body at 90° intervals. The protrusions run for approximately 1 2 of an inch of the length of the main body. The protrusions give the 282 back of the body a square appearance. They are approximately 3 16 of an inch in diameter. Four cross holes through the open (front) end of the retainer are used for vision recognition. Figure 5-17 shows the bulb retainer. There are three stable poses of the bulb retainer. The first is open end up, the second is open end down, the last is on its side. The parts are retrieved from the third pose, from their side. Figure 5-16: Bulbs Figure 5-17: Bulb Retainers 283 5.4.1.10 Water Valve Body The water valve body (model N86) is a piece of a water distribution system in a refrigerator. It diverts water between the ice maker and the front door cup fill point. It is an injection molded plastic part approximately 13 8 inches by 2 inches by 21 2 inches. The front of the body has a circular opening facing forward and a vertical circular extension with a circular opening. The back of the body has two vertically orientated pockets with threaded posts extending downward. Figure 5-18 shows the components of the water valve assembly including the body. While there are many stable orientations, the parts are fed using a tray system and are presented only in a single pose. That orientation has the two threaded posts sitting in pockets with the single circular extension near the front in a vertical orientation. This is the orientation which is required for subsequent assembly. 5.4.1.11 Brass Fitting The brass fitting is approximately 11 4 inches long and has a 1 2 inch hexagonal cross section. One end of the fitting is threaded to 7 16-24, the other end is round and has two O-ring grooves. A 3 16 inch diameter hole runs through the length of the fitting. The fitting is placed into the vertical circular extension of the water valve body. Figure 5-18 shows the brass fitting. The stable poses of the fitting are standing on either end (marginally stable due to the length vs. diameter ratio) and lying on its side. The latter pose is that which is retrieved during assembly. 5.4.1.12 Guide The guide is a slender circular part which sits in the two circular pockets on the body. In an actual assembly, these parts would have a metal core and would be driven by a coil in a vertical motion to open and close the valve. In this situation, there is no metal core. The parts are a hollow plastic tube approximately 2 inches in length and 3 8 of an inch in diameter. The inside of the tube is hollow. The open end of the tube has a 11 16 of an inch diameter shoulder and has three rectangular extensions at 120° intervals. Figure 284 5-18 shows the guide. The only stable pose is lying on its side resting at a slight angle being supported by the shoulder and the closed end of the tube. This is the pose in which the part is retrieved for assembly. Figure 5-18: Parts of the Water Valve Assembly 5.4.1.13 Spin Ring The spin ring is a flat plastic disk with a center hole which fits over the guide. The top of the spin ring has three symmetric, unidirectional ramps. The bottom of the ring has several tapered grooves which are used in a spin weld operation to secure it to the body. The spin ring has an outside diameter of 11 8 and a through hole diameter of 3 8 of an inch. A rim protrudes from the top outside edge of the spin ring. The ring is 3 16 of an inch thick while the rim is 1 10 of an inch thick. Figure 5-18 shows the spin ring. There are two stable configurations, top up and bottom up. The parts are retrieved for assembly in the top up configuration. 285 5.4.1.14 Tire Valve Cap The tire valve cap is a standard Schroeder valve stem cover. It is open on one end with a threaded inside diameter and is closed on the other end. The open end is turned to approximately a 3 8 inch diameter while the closed end is a hexagonal cross section with 38 of an inch across the flats. The very end of the cap has a small circular nub extending from it. It is approximately 1 16 of an inch high by 7 32 of an inch in diameter. The overall length is 1 2 of an inch. Figure 5-19 shows the parts of the tire valve assembly including the cap. There are two stable poses of the cap. The first is lying on its side resting on one of the hexagonal flats. The second is setting at an angle with the open end in an upward orientation. The cap is supported by the end of one of the hexagonal flats and the small circular nub extending from the closed end. The tire valve caps are picked from the side pose. 5.4.1.15 Seal The seal is a small rubber disk designed to fit at the bottom of the closed end of the tire valve cap. It is approximately 1 10 of an inch thick by 5 16 of an inch in diameter. A 18 inch diameter hole is through the center. Figure 5-19 shows the seal. The only stable pose of the seal is lying on its side. Since the seal is symmetric from both sides, there is no differentiation between which side is up. This is the pose from which the part is retrieved. 5.4.1.16 Container The container is a thin walled plastic tube closed on one end. The container is used to hold four tire valve caps. The tube is approximately 21 2 inches long and is 1 2 of an inch in diameter. It is relatively weak and can be crushed if squeezed with moderate force. Figure 5-19 shows the container. Different names are printed on the side of the container depending on which company is displaying the workcell. The container is marginally stable when sitting on either of its ends. Its third stable pose is resting on its side. This is the pose from which it is retrieved. 286 Figure 5-19: Parts of the Tire Valve Assembly 5.4.1.17 Lid The lid is used to close the open end of the container. It has a flat circular shaped top with a circular body. The body is open at one end and is closed at the other end by the top. The cap is approximately 3 8 of an inch tall and about 1 2 of an inch in diameter. There is a small lip formed by the top overhanging the body. There is also a small chamfer at the open end of the body to help guide it into the tube. The cap is held in the tube by friction between the outside of the cap body and the inside of the tube. Figure 5-19 shows the cap. The cap has three stable orientations. The first is top up, the second is top down (open end up), and the third is on its side. Lids in the top up orientation are used for assembly. 5.4.1.18 Parker Fittings and Nuts These parts were donated by the Parker Hannifin Corp. primarily for testing the flexible parts feeding system. There was no assembly associated with these parts, 287 however, grippers were needed to manipulate them. Both parts are from a hydraulic hose fitting assembly. The nut is a circular cylinder made of metal. The lower half of the outside diameter is a hexagonal cross section with 15 16 of an inch across the flats. The top half of the outside diameter is turned round and has a diameter equal to the distance across the flats of the bottom half. The overall length of the nut is 7 8 of an inch. The center hole through the nut is about 3 4 of an inch in diameter with half of the inside diameter being threaded and the other half being a smooth bore. Figure 5-20 shows the nuts for the hydraulic fittings. Figure 5-20: Nuts for Hydraulic Fittings The fitting is a long tubular part and is about 31 2 inches in length and about 1 2 of an inch in diameter. It has a larger diameter section in the middle to which a hose would seat against. The end that goes into the hose has several barbed features that hold the hose. The other end is a smooth diameter with a shoulder at the end to hold on the nut. In the actual hose fitting assembly, the nut fits over one end of the fitting while the other end of the fitting is inserted into the hose. Figure 5-21 shows the nut and fitting. The nut has three stable poses, hex end down, hex end up, and on its side. The fitting has only one stable pose, on its side. The nuts and fittings are both retrieved from their sides. 288 Figure 5-21: Hydraulic Fittings 5.4.1.19 Hex Nuts Figure 5-22: 3 8 ’’ and 5 16’’ Hex Nuts The hex nuts are standard 5 16 inch and 3 8 inch nuts that are readily available. These parts were also obtained to test the flexible feeding system. Two different sized nuts were used to test multiple parts in a single feeder. They were purchased from a local hardware store. The 5 16 inch nuts are approximately 1 4 of an inch thick and measure 1 2 of an inch across the flats. There is a 5 16-18 tapped hole through the center of the nut. The 3 8 inch nuts are approximately 0.325 of an inch thick and measure 0.550 of an inch across the flats. There is a 3 8 -16 tapped hole through the center of the nut. Figure 5-22 shows the two different sized nuts. The nuts have two stable orientations. The first is 289 lying flat on either side, the second is standing upright resting on one of the six flats. Parts are retrieved from the pose when they are lying flat. 5.4.1.20 Plastic Sockets The plastic sockets are also used to test the feeder. They are similar to the bulb retainers described in Section 5.4.1.9. They are, in fact, bulb retainers that have not been modified for assembly. Their description is identical to those in Section 5.4.1.9 with the exception that they do not have the holes in the open end for vision recognition and they have additional protrusions from the back surface that are intended as tabs to help remove the bulb retainer from the back of a reflector. Figure 5-23 shows the socket. Figure 5-23: Plastic Sockets (Unmodified Bulb Retainers) There are four stable poses of the socket. The first is standing upright with its open end up, the second is upright with its open end down, the third is on its side with the tabs facing sideways, the final is on its side with the tabs in a vertical orientation. The parts are retrieved from the third stable pose, lying on their sides with the tabs facing sideways. 5.4.2 Assembly Descriptions Out of all the parts listed in the previous section, a total of four different assemblies were made. It is important to understand the assembly sequence being 290 performed since that has a direct effect on the design of the grippers. The assembly sequence determines the number of parts each gripper must handle, the clearance required for each gripper, and what the gripper has to do with the part. While most of the parts were pieces of a larger assembly, several parts were not involved in any assembly. They were used to test the characteristics of a flexible parts feeding system. The requirements for these grippers were different than for the assembly grippers. These grippers’ only job was to retrieve parts from the flexible feeder. Of the four assemblies, two were performed on the workcell at CWRU (as described in this document) while the other two assembly operations were performed on the RAC developed by Eaton Corporation. The assemblies dealing with the flashlight parts were performed at CWRU. This is the assembly of a bottomcap and headcap of a hand-held flashlight. The assemblies dealing with the N86 Water Valve Assembly and the Tire Valve Cap Package were performed on Eaton’s RAC workcell. The following table depicts the assemblies and the parts that were associated with them. Flashlight Bottomcap Assembly Bottomcap Flashlight Headcap Assembly Lens Ring Bail Spare Lamp Holder Coil Spring Lens Reflector Bulb Bulb Retainer N86 Water Valve Assembly Tire Valve Cap Package N86 Water Valve Body Brass Fitting Guide Tire Valve Cap Spin Ring Lid Seal Container Parts used for Flexible Feeder Tests Parker Fittings and Nuts Hex Nuts Plastic Sockets Table 5-1: Assemblies and The Parts They Contain 5.4.2.1 Bottom Cap Assembly The bottomcap assembly consists of the four parts listed in Table 5-1. The bottomcap serves as the part to which the other three pieces are assembled. The assembly is divided between two robots. Each robot performs half the assembly. Partially completed assemblies are transferred between robots on pallets, which have pockets 291 machined on them to hold the bottomcaps. Figure 5-24 shows two completed bottomcap assemblies. Figure 5-24: Completed Bottom Cap Assembly The assembly at the first robot proceeds as follows. A bottom cap is retrieved from a flexible parts feeder. Next, while still holding the bottom cap, a bail is retrieved from a second flexible parts feeder. The bottomcap is then placed into a fixture and held with a vacuum. The fixture is a flat plate with a shallow pocket machined into it. Next, the bail is placed on the bottomcap. The split section of the bail fits over a mounting block on the bottomcap. The ends of the bail are inserted into mounting holes on the mounting block. Next, the bottomcap / bail subassembly is moved under a vertical press. This movement is accomplished using a linear pneumatic slide. During the motion, a specially bent copper tube is used to rotate the bail into a location over the shoulder of the bottomcap. The vertical press uses a conically shaped tool to transfer the vertical motion of the press into a radial force on the bail. This force snaps the ends of the bail into the mounting block. The completed bottomcap / bail subassembly is then returned to its original position. The slide is necessary because the vertical press would interfere with the vertical operation of the Adept 550 SCARA robot. The robot then picks the 292 finished subassembly from the fixture and places it into a pocket on the pallet for transportation to the second robot. When a pallet is filled (16 subassemblies), it is sent to the second robot. After arriving at the second robot, the assembly continues as follows. First, the bottomcap must be inverted so that the spare lamp holder and spring may be inserted. The robot retrieves a subassembly from the pallet and places it on a staging area in the jaws of a rotary mechanism. The rotary mechanism grasps the bottomcap and the robot lets go of it. Next the rotatory mechanism inverts the bottomcap at the same time that it is placing it into a table fixture. The table fixture is a parallel jaw actuator mounted upside-down on the assembly table. The actuator has gripper fingers which are in the shape of the bottomcap. After the fixture has a firm grasp on the part, the rotary mechanism is returned to its original position. Next, the robot retrieves a spare bulb holder from a flexible parts feeder. The bulb holder must be grasped by the holding tab and so must be picked up at its stable angle. The lamp holder must then be rotated into a vertical orientation and inserted into the bottomcap. Next, the robot retrieves a spring. The springs are retrieved from a conveyor. While the robot is retrieving a spring, a special ‘‘spring funnel’’ is lowered into the bottomcap. The spring funnel is mounted on a dual action linear pneumatic mechanism that lifts the funnel from its storage position, rotates it into a location over the bottomcap and then lowers the funnel into the bottomcap. The funnel is a chamfered tube and has an outside diameter slightly less than the inside diameter of the bottomcap. A spring passes through smooth the inside diameter of the funnel which is slightly less than the outside diameter. This ensure the spring is fully seated in the bottomcap. The spring is pushed into position by the gripper. After placing the spring, the robot moves out of the way and the spring funnel is retracted. Finally, the robot retrieves the finished assembly from the table fixture and returns it to the same pocket on the pallet from which it was originally retrieved. 293 The desire was to perform this entire assembly without any tool changes. This required that three parts be manipulated at the first robot (the bottomcap, the bail, and the bottomcap / bail subassembly) and that 4 parts be handled at the second robot (the bottomcap / bail subassembly, the spare lamp holder, the spring, and the complete assembly). Some of the other constraints on the gripper design were the following: The bottomcap gripper at the first robot had to retrieve the bottomcap from a flexible parts feeder where small gripper footprint is important. The same gripper also had to be capable of picking the sub assembly from the fixture and placing it onto the pallet. The bail gripper had to be able to lift a bail from the flat surface of the parts feeder while at the same time spreading the bail so that its ends would reach around the sides of the mounting block and be inserted into the mounting holes. The grippers at the second robot had an even more challenging task. The bottomcap had to be handled in both an upright and up-side-down orientation. The spare bulb holders had to be retrieved from the flat surface of a flexible parts feeder. To accomplish this, the gripper had to approach the part at the angle which corresponds to its stable pose and grasp the part from its holding tab. The part then had to be rotated into a vertical orientation (bulb holding feature pointing down) and inserted into the bottomcap. The springs had to be retrieved from a conveyor and pushed through the spring funnel into their final assembly location. The following table lists the assembly steps at each robot. First Robot 1. 2. 3. 4. 5. 6. Get a bottomcap Get a bail Place the bottomcap in the fixture Place the bail on the bottomcap Seat the bail with a pneumatic press Place the finished subassembly on the pallet Second Robot 1. Get a subassembly from the pallet 2. Invert the sub-assembly 3. Get a spare lamp holder and place it into the bottomcap 4. Insert the spring funnel into the bottomcap 5. Get a spring and place it into the bottomcap 6. Place the finished assembly on the pallet Table 5-2: Bottomcap Assembly Steps at Each Robot 294 5.4.2.2 Head Cap Assembly The headcap assembly consists of the five parts listed in Table 5-1. As with the bottomcap, half the assembly is performed at the first robot and half the assembly is performed at the second robot. Pallets, with machined pockets, are used to transport the subassemblies between the two robots. Figure 5-25 shows two completed headcap assemblies. Figure 5-25: Completed Headcap Assembly The assembly at the first robot proceeds as follows. First, a lens ring is retrieved from a flexible parts feeder and placed into a fixture. The fixture is a circular pocket on the top of a post mounted to the table. Next, a lens is retrieved from a flexible parts feeder. While the lens is held, a reflector is also retrieved. The lens is then placed into the lens ring and the reflector is placed on top of the lens. The robot then moves out of the way and a vertical press is used to seat the reflector and lens into the lens ring. In this assembly, the press is mounted on a linear pneumatic slide and moved into position over the fixture. This is again necessary because of the vertical operation of both the robot and the press. After finishing, the press moves back out of the way. The robot then 295 grasps the finished subassembly and places it into a pocket on the pallet. After all the pockets have been filled (total of 9), the pallet is routed to the second robot. Assembly at the second robot proceeds as following. This is a slightly more complicated operation than at the first robot because of the parts staging operation. Both the bulbs and bulb retainers are fed using flexible parts feeders and therefore are retrieved from their sides. Because they are inserted into the back of the reflectors in a vertical orientation, they have to be rotated 90° before they are usable. First, before the pallet arrives, bulb retainers are retrieved, rotated, and placed into a temporary fixture. The fixture consists of a block with pockets machined into its top. The bulb retainers are held in the pockets until they are needed for assembly. Next, bulbs are retrieved and placed into the back of the reflectors. The assembly occurs directly on the pallet so handling of the lens ring subassembly is not necessary. After the bulbs are inserted, the bulb retainers are retrieved from the fixture and pressed into the back of the reflector. The robot does the pressing operation, no dedicated hardware is necessary. After all nine assemblies are complete, the robot begins to refill the fixture with bulb retainers while complete pallet leaves and a new pallet arrives. As in the case of the bottomcap, it was desired to perform the entire assembly without any tool changes. This required the first robot to handle four different parts (the lens ring, the lens, the reflector, and the lens ring subassembly). All the parts had to be retrieved from flexible parts feeders where gripper clearance was a concern. The first gripper had to be able to handle the lens ring, the lens ring subassembly and the reflector. The second gripper needed to be able to retrieve the lens and place it into the lens ring. As in the case of the bottomcap assembly, the grippers at the second robot had a much more difficult task. Both the bulbs and the bulb holder needed to be retrieved from flexible parts feeders while lying on their sides. The clearance of the gripper was a concern because of the random nature of the feeder. Next, both parts needed to be rotated 296 90°. The bulb had to be placed directly into the back of the reflector while the bulb retainers needed to be placed into a fixture. The second gripper had to grasp the bulb retainers from the closed end and press them into the back of the reflectors. The pressing operation takes a fair amount of force and the gripper needed to be capable of securely holding the parts while they were being seated. The following table lists the assembly sequence at each robot. First Robot 1. 2. 3. 4. 5. 6. 7. 8. Get a lens ring Place it into the fixture Get a lens Get a reflector Place the lens into the lens ring Place the reflector into the lens ring Seat the reflector / lens using a press Place the subassembly on the pallet Second Robot 1. Fill the fixture with bulb holders 2. Get a bulb and place it into the reflector. Continue until all reflector have a bulb. 3. Get a bulb retainer and press it into the reflector. Continue until finished. Table 5-3: Headcap Assembly Steps at Each Robot 5.4.2.3 Tire Valve Cap Package Assembly The tire valve cap package assembly takes place on Eaton’s RAC cell. The assembly is composed of the four parts listed in Table 5-1. There are, however, four of the tire valve caps included in each assembly. There are two robots performing the assembly with subassemblies and parts being carried between robots on specialized pallets. Figure 5-26 shows the completed assembly. The following ‘‘kitting’’ operation is performed at the first robot. Parts are simply retrieved from feeders and placed on pallets; the actual assembly is performed at the second robot (discussed below). First the robot retrieves four tire valve caps and places them into pockets on the pallet. The caps are retrieved from a Genex flexible parts feeder. They are retrieved while lying on their side and must be rotated into a vertical position for insertion into the pallet pockets. Next a container is retrieved from an RPM vibratory feeder. This feeder presents the containers on their sides in a ‘‘V’’ groove. The parts must be rotated 90° and placed into a pocket on the pallet. 297 Figure 5-26: Completed Tire Valve Cap Package Finally, the lid is retrieved and placed on a post on the pallet. The lids are retrieved from an RPM brushed feeder and are picked with the closed end (top) up. The loaded pallet then is sent to the second robot. At the second robot, the following assembly operations are performed. First, a seal is retrieved from a bowl feeder. The seal is presented at the end of a slide leading from the bowl feeder and is grasped from above in a horizontal orientation. The seal is then seated into a cap. The cap / seal assembly is then placed into the container. This process continues three more times. Finally, the lid is placed on the top of the container and the container is then placed into a finished bin. At the first robot, a total of three different parts must be manipulated (the tire valve cap, the container, the lid) with two of the parts needing to be rotated 90°. The caps and lids are retrieved from flexible parts feeders, so, again, gripper clearance is an issue. The first gripper must be capable of retrieving both the caps and containers and rotating them 90°. The second gripper must be capable of grasping a cap from a crowded flexible parts feeder. Since the most stable orientation of the caps is open end up, only 10% of the caps going through the vision window are in the correct orientation. This put a high priority on the size of the grippers footprint, since every part which is a valid candidate needs to be retrieved. 298 At the second robot, the emphasis is not on gripper footprint, but rather on functionality. The first gripper must retrieve a seal from the bowl feeder and seat it into the cap. It must then pick up the cap and place it into the tube. The second gripper must retrieve the lid from its post on the pallet and insert it onto the top of the container. It must then lift the final assembly from the pallet and place it into the finished hopper. The following table lists the assembly sequences at each robot. First Robot 1. Get four tire valve caps and place them on the pallet 2. Get a container 3. Place it on the pallet 4. Get a lid 5. Place it on the pallet Second Robot 1. 2. 3. 4. Get a seal from the bowl feeder Insert the seal into the cap Place the cap / seal into the container Repeat above three steps three more times 5. Insert the lid into the container 6. Place the finished assembly in a hopper Table 5-4: Tire Valve Cap Package Assembly Steps at Each Robot 5.4.2.4 N86 Water Valve Assembly / Disassembly The N86 Water Valve assembly was also performed on Eaton’s RAC. This assembly was different from the tire valve cap packages in that the first robot assembled the product while the second robot disassembled the item. Since the workcell is a demonstration cell, it is easier to have one of the robots disassemble the valve rather than have to do it by hand. Figure 5-27 shows the completed water valve assembly. The assembly sequence at the first robot proceeds as follows. First, a body is retrieved, the bodies are fed using a tray feeder. A tray of parts in known locations is presented to the robot for retrieval. When the tray is empty, an automated mechanism switches an empty tray for a full one. The body is then placed in a fixture on a pallet. Next a brass fitting is retrieved and inserted into the hole in the front of the body. The brass fittings are fed using a Genex flexible feeder. Next a guide is grasped and then a spin ring is picked up. The guide is then inserted into one of the two pockets near the back of the body. After that, the spin ring is dropped over the top of the guide. Another 299 guide and spin ring are then retrieved and placed in the other pocket near the back of the body. The completed assembly is then sent to the disassembly robot. Figure 5-27: Completed Water Valve Assembly Disassembly at the second robot proceeds as follows. First the robot removes a guide and spin ring. By grasping the guide and lifting, the spin ring is lifted as well. This subassembly is then dropped through a hole on an inclined slide. The hole is large enough for the guide to drop through, but not for the spin ring. This separates the guide from the spin ring allowing the parts to fall into separate hoppers. Next, the brass fitting is lifted from the body and is dropped into a hopper. Finally, the body is lifted from the pallet and placed back onto an empty tray. Two identical tray feeders are used in the cell, one loads parts at the first robot; the second unloads parts at the second robot. By swapping the trays, no handling of the bodies is necessary. At the first robot, four parts must be handled (the body, the brass fitting, the guide, the spin ring). The body is retrieved from a tray feeder, so its clearance requirements are constant, however, the body is relatively large and a sure grasp must 300 be maintained on it during robot motions. The brass fittings are retrieved from a flexible feeder, so gripper clearance is important. The fittings are retrieved from their sides and need to be rotated 90° before insertion. They are relatively heavy parts and care must be taken so that a solid grip is maintained. The guides are retrieved from an RPM vibratory feeder which presents parts to the robot in a ‘‘V’’ groove. Since the guides are retrieved on their sides, they must also be rotated 90° before use. The spin rings are fed using an RPM brush feeder and are retrieved from a flat carpet type surface. Clearance is important since the parts are densely packed as they travel through the vision window. The first gripper must retrieve both the guides and the brass fittings. It must be capable of rotating both parts through 90°. The second gripper must grasp a body as well as grasp spin rings. The footprint of the gripper needs to be small so that the spin rings may be retrieved from a crowded feeder. The disassembly gripper needs to be able to handle three parts (the guide, the brass fitting, the body). By grasping the guide, the spin ring comes along for free. The clearance of the gripper is not as constrained as the ones at the first robot since parts are always being picked from the same position. For economy, it is desirable to have one gripper handle all three parts. First Robot 1. 2. 3. 4. 5. 6. 7. 8. Grasp a body from the tray feeder Place the body on a pallet Grasp a brass fitting Place the fitting on the body Grasp a guide and spin ring Place the guide on the body Place the spin ring over the guide Repeat 5 - 7 above for the second guide / spin ring Second Robot 1. Remove the guide / spin ring 2. Drop the guide through a hole, spin ring slides down ramp 3. Remove the brass fitting from the body 4. Remove the body from the pallet 5. Place the body in the empty tray feeder Table 5-5: N86 Water Valve Assembly / Disassembly Steps 5.4.2.5 Miscellaneous Other Parts The remaining parts were only used for feeder testing, not for any assembly. This led to a different gripper design. Usually, a less sophisticated design was possible since 301 there was not a constraint on accurately gripping the parts. Since they were only being dropped in hoppers or returned to the feeding system, the accuracy needed for assembly was not required. Minimizing the gripper footprint was, however, important since the footprint of the gripper can have a serious effect on the throughput of the feeder. The first gripper was designed to retrieve nuts from a hydraulic fitting assembly produced by the Parker Hannifin Corporation. It needed to pick the nuts from the pose where they are sitting on their sides on one of the flats. The other gripper was used to pick both 5 16 inch and 3 8 inch hex nuts, the plastic sockets (from the headcap assembly), and fittings from the Parker hydraulic fitting assembly. The 5 16 inch and 3 8 inch hex nuts were retrieved from a pose in which they were lying flat (i.e. the threaded hole in a vertical orientation) whereas the plastic sockets were retrieved while lying on their sides. The fittings were retrieved while lying on their sides on the feeder. Since the fittings were round, it was a challenge to keep the fitting from rolling on the feeder. All four parts were needed to be grasped by the same gripper because it was desired to test the throughput of the system when feeding multiple dissimilar parts. 5.4.3 Generic Rotary Jaw Gripper Flexible workcells present some new and interesting problems to the system designer. One such problem is in parts feeding and handling. In a conventional system, a specialized feeder would be designed for each part. This feeder would present the part in the correct assembly orientation where it could be retrieved. In flexible workcells however, conventional feeding methods, such as vibratory bowl feeders, are not practical because of their specialized nature. When a new or different assembly is being performed, the parts relative to the new assembly need to be fed without spending time designing, tuning, and installing a new feeding system. Flexible feeders fill this need, but at a price. Since parts are usually fed randomly onto a presentation conveyor, a vision system is used to determine their exact pose (position and orientation). This information 302 is fed to the controller of the robotic arm so as to guide the arm to a suitable pickup location. Lacking any fixturing specially designed to a specific part, parts settle onto the presentation conveyor in statically stable orientations. Often it is necessary to design the parts so that their stable orientations are in positions which are advantageous to a given assembly. For example, if a part needs to be inserted into an assembly with side A down, then it is advantageous for the part to have a statically stable rest orientation with side A down. This can lead to many difficulties during the design. In other situations, it is impossible to satisfy the above criterion. Consider a long, slender pin which needs to be inserted into a vertical hole. In function, it would be impossible to design the pin to have a stable orientation standing upright. Solutions to the stated situation include: 1) dedicated hardware for rotating parts in conjunction with multiple grippers for grasping the parts in various orientations, or 2) a gripper capable of rotating the part while also grasping it. A rotating jaw gripper would greatly enhance the flexible feeding in several respects. First, it would allow designers more leeway in designing parts since the part would not necessarily have to have a stable orientation which corresponds to the desired assembly direction. Second, it would, in some instances, increase the throughput of the feeder by allowing the robotic manipulator to acquire parts not only in poses which are advantageous to assembly, but in other poses which could be rotated into a usable orientation. Several rotary jaw grippers are commercially available, Techno Sommer, for example has a family of rotary jaw grippers. These grippers, however, are heavy, weighing between 21 2 and 15 pounds. They also do not have a link between the two jaws which forces the fingers to rotate at the same rate. Since they are driven by rotary pneumatic actuators, it is possible for the finger pads to rotate at different speeds. This could cause the object being gripped to be dropped. A servo rotary jaw gripper is also available, but a controller would be necessary for its operation. Cost would become significant in such a case. A passive pivoting gripper has been presented previously 303 [115], however, it only uses gravity to rotate parts and has limited (and unreliable) usability. 5.4.3.1 Design Goals Some of the desired features in the design of this gripper are listed below. • Operate on a wide variety of readily available parallel motion actuators and provide an additional degree of freedom in the form of rotating pads at the end of the gripper fingers. • Light weight permitting the gripper to be used on small, inexpensive manipulator arms. • Utilize a double acting cylinder to positively drive the rotary motion in both directions and operate it from two pneumatic lines so that a single 3-way solenoid valve and two air hoses can operate the device. • Mechanically link the rotation of the finger pads such that the two pads maintain zero relative motion and such that both pads can be driven from a single pneumatic actuator. • Independent operation of the open/close motion and rotary motion. • Fingers of the device should be easily exchanged or replaced without replacing the entire rotary mechanism. • Adjustable stops and proximity sensors at either end of travel of the rotary motion. In light of the above goals, a novel, light weight (7oz.), pneumatically actuated, mechanically linked, rotary jaw gripper was designed. From this initial design, a prototype gripper was constructed. This is the Bulb/Bulb Retainer gripper described in Section 5.4.4.7. This design will be discussed in the following section. The gripper design was revised and two additional rotary jaws grippers constructed for use in Eaton’s reconfigurable assembly cell (described in Sections 5.4.4.9 and 5.4.4.13). This design is described in Section 5.4.3.3. 5.4.3.2 First Generation Design The first generation design lacked some features which were specified in the design goals, but it, never-the-less, proved to be a reliable and functional gripper and is still being used to manipulate the bulbs and bulb retainers. Figure 5-28 shows a CAD 304 view of the gripper with labeled components. In the following description, a number in parentheses references a labeled component in the CAD figure. Figure 5-28: CAD View of the First Generation Design A typical parallel motion manipulator (1) (a Schunk model KTG50 in this case) is the base to which the rotary fingers attach. By redesigning the mounting surface of the fingers, any parallel motion gripper could be used as a base for the rotating jaws. The left (7) and right (8) fingers of the gripper form the base to which the rest of the mechanism is attached. They serve as a mounting base for the pneumatic actuator (2) as well as for the rotating finger pads (9), (10). The pneumatic actuator mounts to the left finger when the mechanism is viewed from behind. The solid pneumatic cylinder mounting bracket (4) is attached to the left finger by three 6-32 flathead screws. The mount fits into a slot milled into the finger which locates the bracket relative to the finger and which provides the correct left to right placement of the actuator (a Bimba model 0071 2 cylinder in this case). The solid mount provides a pivot point for the pivoting pneumatic cylinder mounting bracket (5). The pivot point is required to be in this location for several important reasons. First, the 305 geometric size of the four bar mechanism must be maintained if the desired motion is to be achieved. Second, by moving the pivot point to a location behind the center line of the fingers, the cylinder may be mounted at a more horizontal angle, allowing for a shorter overall height. Last, by moving the pivot to its current location, an improvement in the transmission angle of the four bar mechanism was realized over initial designs. The pivoting pneumatic cylinder mounting bracket is composed of two parts. The main part is an ‘‘L’’ shaped bracket (5) which has a tapped hole into which the cylinder mounts. The top of the ‘‘L’’ bracket has a hole machined in it into which the cylinder pivot axle (18), a 3 16 inch OD (outside diameter) ground steel shaft, is mounted. This is accomplished by means of a press fit. A bronze bushing (20) (Berg B7-8 in this case) completes the interface between the solid pneumatic cylinder mounting bracket and the pivoting pneumatic cylinder mounting bracket. The bushing allows for a rigid, low friction connection, while being lighter and smaller than a comparable roller bearing. A retainer (12), press fit onto the 3 16 inch shaft, locks the mounting brackets together. The cylinder terminates in a clevis (3) (Bimba model D-26690 in this case) which mounts to the left linkage arm (6). An 1 8 inch OD ground steel shaft, called the mechanical rotary linkage (15), connects the clevis and linkage arm together. The shaft also is the mechanical connection between the left finger pad (9) and the right finger pad (10). A roll pin, driven thorough the linkage arm and shaft at assembly, locks them together. The left linkage arm attaches to the left finger pad axle (16), an 1 8 inch OD ground steel shaft. The left finger pad is attached to the left finger pad axle. The cylinder, acting through the linkage arm causes the left finger pad axle to rotate, thus moving the finger pad through the desired range of motion. A roll pin, inserted at assembly, is used to lock the left linkage arm to the left finger pad axle. Two bronze bushings (19) provide a low friction junction between the left finger and the left finger pad axle. The left finger pad is attached to the end of the left finger 306 pad axle by means of a set screw and a roll pin. A retainer, locked in place by a roll pin during assembly, is used to prevent the left finger pad from moving in an axial direction. Double sided tape is used to attach a rubber pad to the gripping surface of the left finger pad. The right finger (8) serves as a base to which the right finger pad (10) and the right linkage arm (13) are attached. The mechanical rotary linkage interfaces the right linkage arm through an 1 8 inch ID linear bearing (14) (Berg LMB-125SS in this case). The linear bearing allows the mechanical rotary linkage to slide relative to the right linkage arm during the open/close action of the parallel motion actuator. Its low friction interface prevents the mechanical rotary linkage and the right linkage arm from binding or seizing during operation. The linear bearing is press fit into the right linkage arm. It is necessary to undercut some area of the right finger to provide clearance for the linear bearing. The right linkage arm attaches to the right finger pad axle (17), an 1 8 inch OD ground steel shaft, by means of a press fit and a roll pin, the latter of which is inserted during assembly. The right finger pad, being a mirror image of the left, is attached to the right finger pad axle in a similar manner as described in the case of the left finger pad above. Bronze bushings (19) provide a low friction junction between the right finger and the right finger pad axle. A retainer is not required (as in the case above of the left finger pad) because the right linkage arm prevents axial movement of the right finger pad. Figure 5-29, below, shows a side view of the first generation design retrieving a bulb retainer and rotating it into a vertical orientation. While functioning adequately, many small problems were seen with the gripper as it was used. While the problems were not bad enough to make the design nonfunctional, they did make the design a bit less reliable. The second generation design addressed many of these concerns which are described below. 307 Figure 5-29: Rotary Jaw Gripper - 1st Generation Design The first problem was the lack of sensing on the gripper. There were no provisions made for including sensors to determine the location of the finger pads. This made the design less reliable since there was no guarantee that the fingers had actually rotated. This was especially important in the un-rotate action since it was driven by a spring rather than pneumatically. This also makes the system slower since a hard coded time delay had to be included in the program every time the jaws rotated. This delay was necessary to allow sufficient time for the rotation to occur. With sensors, the assembly could take place as soon as the rotation operation had completed rather than waiting a predetermined amount of time. 308 The second problem was the lack of stops on the rotational motion of the fingers. The un-rotated position was determined by the location of the clevis on the piston rod and the rotated stop was determined by the end of the piston stroke. It would be much better if the fingers had adjustable hard stops to control the range of motion so that as parts began to wear, adjustments could be made to maintain the proper operation of the gripper. The third problem was the use of a single acting cylinder. Pneumatic pressure is used to drive the jaws into the rotated position. A spring in the cylinder would cause the finger pads to return to the un-rotated state. The spring, however, is weak compared to the pneumatic force and was marginally able to return the jaws. If the mechanism were slightly out of alignment or were worn or dirty, the spring would begin to fail to return the jaws. The lack of sensing made the problem especially dangerous because there was no way to know if the un-rotate operation had completed. Attempting to pick a part with the jaws in the rotated position could damage the gripper. The fourth problem was discovered when assembling the gripper. The design called for the finger pads to be locked to their respective axles by a rollpin inserted at assembly. A set screw was also provided to temporarily lock the fingers in place while the hole for the rollpin was being drilled. It was found, however, that properly aligning the jaws and holding that alignment during the drilling operation was difficult. A way of positively aligning the finger pads before assembly would be much better. The fifth problem arises from the design of the mechanical rotary linkage which locks the right and left jaws together. This linkage is a 18 inch diameter rod which is over 3 inches long. Any small amount of rotational play in the junction of the left linkage arm and clevis and the mechanical rotary linkage is magnified by this length. This is manifest as a noticeable amount of rotational play in the right jaw of the gripper. This could cause the fingers to drop parts because the fingers are not firmly mechanically linked. 309 The final problem was the footprint of the gripper. In its original design, the finger pads did not extend much past the bottom of the left and right fingers of the gripper body. This caused the gripper to have a large footprint. This was especially noticeable when feeding the bulb retainers. Many of the separated retainers were not retrieved because the gripper was simply too big. A second set of fingers was made and mounted on the gripper (Figure 5-48) to alleviate this problem, but the solution was not satisfactory for two reasons. First, the extra length of the finger pads simply made the rotational play in the right finger pad (described above) more obvious. Secondly, this extra length made the joint between the finger pad and the axles subject to much higher stress. While no failure of this joint was seen, a much better design could be realized by altering the way the finger pads mounted to the fingers of the gripper. Several design goals were not achieved in the initial design. Some of them have appeared in the description of the problems. The following is a complete list of the objectives not realized in this design. A single acting cylinder was used in place of a double acting because of size constraints. This decision, however, led to the fingers not reliably returning to the vertical position. The fingers of the gripper are not as easily exchanged as would be liked. Currently, the rollpins must be removed from the fingers, the fingers removed form the axles, new fingers placed over the axles and aligned, temporarily locked in place with set screws, new rollpin holes drilled and rollpins inserted. This procedure also damages the axles as the rollpin holes are drilled multiple times. Finally, no provisions for sensing or mechanical stops were included in the design. 5.4.3.3 Second Generation Design After being approached by the Eaton Corporation to design grippers for use in their RAC, the opportunity arose to redesign the rotary gripper. While retaining the overall size and functionality of the original design, the redesign addressed many of the problems seen in the initial design as well as simplified the overall mechanism. Figure 5-30 shows a CAD view of the gripper with labeled components. 310 Figure 5-30: CAD View of the Second Generation Design The gripper is composed of several parts. The left (6) and right (16) finger bases serve as the main body onto which the gripper is built. The solid (17) and pivoting (5) cylinder mounts attach the cylinder (2) to the left finger base. Left (11) and right (12) fingers, which actually handle the parts, are attached to the finger bases. The piston rod attaches to the driving rod (8) which moves the fingers. While the design changed significantly, the kinematics of the four bar linkage driving the mechanism did not change. This was kept the same to maintain the desired range of rotary motion. The left and right finger bases mount to the pneumatic actuator (1) in the same manner as the first design. The pneumatic actuator provides the open and close actions of the gripper. The cylinder which provides the rotary motion to the gripper is attached to the right finger base when viewed from behind. The solid pneumatic cylinder mounting bracket (17) attaches to the right finger base by two flat head machine screws. This bracket provides the mounting point for the pivoting pneumatic cylinder bracket. This mounting point is offset to the rear of the gripper, behind the centerline of the fingers, to shorten the overall height of the gripper. 311 The cylinder is mounted between the left and right finger bases, in contrast to the initial design where the cylinder was mounted to one side. This movement of the cylinder to a central location had two benefits, first it made the overall gripper less wide, second, it made the connecting rod (8) between the left and right fingers shorter, which corrected the problem of the rotational play in the fingers. The pivoting pneumatic cylinder mounting bracket (5) is ‘‘L’’ shaped. One end of the bracket has a 3 16 inch diameter axle (13) press fit into it. The axle fits through an oil-light bushing (14) in the solid mounting bracket and is secured by a bushing (15) press fit onto the pivot axle. The other end of the pivoting bracket has two tapped holes in it. The cylinder (2) is screwed into the larger hole. The smaller hole is used to mount a proximity sensor (4) for sensing when the jaws are in the un-rotated state. The cylinder end bracket (not shown in Figure 5-30) connects the cylinder rod to the driving rod. The cylinder end bracket contacts the driving rod through an oil-light bronze bushing to minimize wear and friction. The driving shaft is attached directly to the left and right fingers. The rod is press fit into the right finger and rotates with the finger (hence, there is motion between the driving rod and the cylinder end bracket and the need for the bushing). The driving rod connects with the left finger through a linear bearing (7) which is press fit into the finger. The right and left fingers attach to the finger bases by means of axles (labeled as (9) but hidden from view). A yoke is machined in the end of each finger base. One side of the yoke has a hole reemed through it that matches the diameter of the axle. The other side of the yoke has a hole in it slightly less than the diameter of the axle. The axle passes through one side of the yoke, through the finger, and is pressed into the other side of the yoke. The finger contains two oil-light bronze bushings (10) which provide a compact, low friction interface between the finger and axle. The bushings also position the finger side-to-side in the yoke. This yoke arrangement is much stronger that the initial design of the finger cantilevered from a small axle. The driving rod is offset from 312 the axle by about 1 2 of an inch. By driving the cylinder, the fingers are driven about the axles in tandem. The fingers are locked rotationally by the driving rod while the linear bearing allows the open and close actions to occur independently. Figure 5-31 shows a back-view of the rotary mechanism of the second generation design in the closed and open positions. Figure 5-32 shows the same from the front side. Figure 5-33 shows two views of the gripper in the rotated state. Figure 5-34 shows several CAD views of the design in the un-rotated and rotated states. Figure 5-31: 2nd Generation Rotary Mechanism - Back View While vastly improving in reliability over the original design, there were still a few details that could be improved. In particular, several problems were noted during the use of the grippers. The extended use of the grippers in the Eaton RAC also revealed a few additional subtle problems. The first problem, as in the initial design, deals with the sensing on the gripper. A sensor was added to the design to determine when the gripper was in its un-rotated 313 position, however no sensor is present to detect the rotated position. An increase in throughput and reliability could be realized by including a sensor at the rotated position as well as the un-rotated position. Figure 5-32: 2nd Generation Rotary Mechanism - Front View The second problem is the lack of hard stops on the rotational motion of the fingers. The design of the finger bases and fingers limits together create the un-rotated stop. The position of the cylinder end bracket with respect to the end of the cylinder’s stroke determines the rotated position. As before, stops would increase the functionality of the design by allowing the range of motion to be fine tuned and adjusted as the gripper’s components wear. The third problem was the use of a single acting cylinder. Due to size constraints, a single acting cylinder was chosen. The problem of crashing the grippers because the un-rotate motion did not occur was fixed by the sensor, but a quicker rotational action would be better. Also, moving the cylinder to a position between the finger bases seemed to slightly increase the required return force. Since the cylinder spring was only 314 marginally strong enough previously, the fingers were observed to stick more often than with the initial design. Figure 5-33: 2nd Generation Rotary Mechanism - Rotated View Another problem observed when using a single acting cylinder is in regulating the speed of the rotary motion. Trouble appeared when handling the fitting for the Eaton RAC project. If the gripper jaws rotated too quickly, the gripper would drop the part due to the inertia of the part. When the jaw would hit the fully rotated position, the rotational inertia of the part would pull it out of the gripper jaws. With only a single air line, the speed of the gripper cannot be properly regulated. To properly regulate the movement of a pneumatic device, the exhaust port of the cylinder must be controlled. However, with a single sided cylinder, the exhaust port is a hole drilled in the side of the cylinder and it is difficult to regulate the air exiting the hole. A flow regulator was placed on the input port of the cylinder, and while slowing the motion, it also made the motion jerky and erratic. The final problem seen when using the gripper was a result of the extended operation at Eaton. It was noticed that the driving rod began to show signs of wear at its interface with the linear bearing. This was most likely a result of the stainless steel 315 driving rod not being heat treated or hardened. Changing the driving rod to a case hardened rod should alleviate the problem. Figure 5-34: CAD Views of the 2nd Generation Design Again, in this design, several design goals, described below, were not met. This was mostly due to size constraints of the parts involved. A second sensor needs to be added to sense the rotated position. Adjustable hard stops need to be added to regulate the rotational range of motion. The cylinder needs to be replaced with one that is double acting. Finally, a method which allows the fingers to be quickly exchanged needs to be implemented. 316 5.4.4 Gripper Descriptions The following section is a discussion of the grippers developed over the past three and a half years. Many lessons have been learned during this time and the following will hopefully further explain and clarify some of the design guidelines presented. 5.4.4.1 Bottom Cap Gripper The bottomcap gripper was the first gripper designed for the project. It has undergone more revisions and changes than any other gripper. The same part has always been handled by the gripper, namely the bottomcap. The requirement was to handle the bottomcap in both the open end up and closed end up configuration. Another requirement was to handle the bottomcap in multiple configurations, with no parts attached, with a bail attached, or with a spare bulb holder and spring inserted. During the assembly, the gripper was used for moving the bottomcap. No direct assembly was performed by the gripper. At the first robot, the gripper was used to retrieve the bottomcap from a flexible feeder and place it into a fixture. It then was used to place the bottomcap, with the bail attached, into the pallet. At the second robot, the gripper was used to retrieve the bottomcap from the pallet and place it on the staging area, it then had to lift the inverted bottomcap from the table fixture and place it back into the pallet. In both cases, the gripper was one of two at the robot. In the case of the first robot, the other gripper was used for the bails, at the second, the other gripper was used for the spare bulb holders and springs. The clearance required for the first robot was mostly dictated by the flexible feeder. Since the parts were being retrieved from the flexible feeder, it was necessary to keep the footprint to a minimum. The fixture location had plenty of clearance. The pallet drop locations were more crowded, but it was consistent and not changing as were the clearance requirements on the feeder. At the second robot, the pallet had the same clearance requirements; the staging area and the table fixture were not crowded. 317 The bottomcap gripper went through four revisions since it was originally designed. The first design used two large jaws. The inside of each jaws was contoured to fit the bottomcap, the outside of the jaws had an octagonal shape. The jaws were made of delrin and were approximately 1 2 of an inch thick. These grippers were designed to work with a Robotech actuator. This design was never used on the workcell. The first revision was a complete redesign of the gripper. The design had four 14 inch diameter rods extending from the actuator. 1 4 of an inch of the bottom of each rod had a flat machined in it. Figure 5-35 shows this design. Figure 5-35: Bottom Cap Gripper - 2nd Revision This flat was designed to help hold the bottomcap more securely. Two rods were mounted on each side of the parallel motion gripper. The distance between the rods on each half and between the two halves when closed would match the outside diameter of the bottomcap. The rods were chosen as a design to minimize the footprint of the gripper. Using this design, the gripper could retrieve a bottomcap when it was in its most crowded situation on the feeder. 318 In the third revision of the gripper, a more usable design was achieved. The actuator mechanism was changed to a Schunk model RH907. This change was made to accommodate the new pneumatic rotary wrist added during Phase II of the Agile Manufacturing project and because it was much smaller and lighter than the Robotech design. The gripper jaws consisted of two smaller aluminum fingers approximately 1 inch wide by 11 2 inches long. The inside of the jaws matched the outside diameter of the bottomcap. The outside of the jaws were also turned round to minimize the footprint. Each jaw was about 5 32 of an inch thick. The jaw located the bottomcap using the shoulder of the cap when picking the cap from the feeder and used the top of the bail for location after the bail had been placed, rotated into position and seated using the press. Figure 5-36: Bottom Cap Gripper - 4th Revision The bottom edge of the gripper jaws included a generous chamfer to allow the bottomcap to self center as the gripper approached the final pick location from above. The final redesign of the gripper fingers was essentially the same as the third with the alteration that the gripper located on the top of bottomcap at all times. Figure 5-36 shows this design. 319 The footprint of the initial design was large. Besides the gripper fingers themselves being almost 1 2 of an inch thick, mounting brackets which connected the fingers to the actuator added an extra 1 2 of an inch to the back of each finger. The second design of the gripper was the complete opposite of the first, it had a minimal footprint consisting of only the four 1 4 inch diameter posts. The design was such that even if a bottomcap had other caps touching it (the maximum crowded situation), the gripper could still retrieve the cap. The third and fourth designs had identical footprints. It was a relatively small footprint consisting of the size of the thin fingers plus the amount of travel of the actuator. Because of their one inch width, most parts were retrievable simply by rotating the gripping angle until there was clear area in which to descend with the fingers. The first gripper design was only a prototype and was actually not used for assembly. It picked and dropped the bottomcaps in a test setting, but lacked any features to vertically locate the caps. It also had a much too large footprint to be useful. The second gripper was used successfully during the first phase of the project. It had a small footprint, which was good for feeding and for reaching constrained locations, but it had other problems that affected its performance. Its four rods provided too little surface area over which to develop a solid grasp. The rods themselves were also rather frail and would bend easily in a collision. The design of the actuator made it difficult to align the fingers properly, therefore it was difficult to get all four rods to maintain a solid contact on the bottomcap. The small shoulder where the flats were machined at the end of each rod was too small to reliability transmit the vertical force of the robot to the cap. This was most noticeable when trying to insert the cap into the pocket on the table fixture. The third gripper design worked much better for grasping and manipulating the bottomcap. Its wider jaws distributed the gripping force over a much larger area which reduced part deformation. While the footprint was slightly larger that the second design, 320 it was still sufficiently small to not be a problem. One problem with the gripper was the method of vertical registration. A step was machined in the surface of the jaws which was used to vertically locate the cap. Without a bail, the step would rest on the shoulder of the cap, when a bail was present, the shoulder would rest on the top of the bail. The first inconvenience was that different heights had to be taught for placing the endcap on the fixture and picking it up after a bail was added. Since the same part was being handled by the same gripper at the same physical position, it was confusing to have a different location defined for removing the part. The main problem, however, was vertically locating the cap on the bail. Seating the bail was a problematic step of the assembly and any errors in that step would translate into a bad or missed grasp of the bottomcap. Sometimes the bail would be seated, but would be resting at an angle rather than resting on the shoulder, at other times, the bail would not be properly seated. On a few occasions, the bail would fly off on the way to the press and would not be present at all. These errors were magnified by the gripper design since they would usually cause the part retrieval operation to fail. The current (and fourth) design of the gripper is similar to the third, the only difference being the removal of the shoulder. Instead of vertically locating the part on the shoulder and the bail, the part is located on the top of the cap. This is a surface that is constant even if the bail is improperly seated or missing. This has greatly increased the reliability of the gripper removing the part from the fixture. The endcap gripper embodies many of the design guidelines presented in the previous section. It has, in fact, been the catalyst of many of the guidelines. There was an effort to minimize the footprint of the gripper as the design progressed. While the footprint did grow slightly between the second and subsequent designs, it was still kept small. It was clear from the second gripper’s performance that a more positive grasp of the part was required. That was the reason for designing a set of jaws that matched the shape of the bottomcap. Another guideline that was followed was to not squeeze the part. 321 It became evident during the operation of the second design (phase I of the project) that squeezing the part too tightly would cause it to deform to the extent that it would no longer fit into the fixture. The third design of the jaws was such that the diameter of the cap was reached when the actuator was almost entirely closed. This left a little compression for holding, but not so much as to deform the part. The fingers were also designed to center the part as they closed. This was done by chamfering the parting line of the jaws. The serrated outside of the bottomcap made it difficult to center since the gripper fingers would catch on the serrations. The final design corrected the problem of locating vertically using the bail. This was embodied in the guideline which says to not rely on added parts for location. Finally for economy, an inexpensive, pneumatic actuator was used. While the gripper works well in its current configuration, several important improvements could be made. The first has to do with aligning the fingers on the actuator. Currently, the fingers mount to the actuator using only the screw holes for location. More accurate location on the actuator would help align the fingers better. The second improvement would be to make the gripper jaws wider. This would allow for a larger chamfer on the exterior surfaces of the fingers which would help them in aligning the part as the gripper jaws were closing. During the first phase of the project, the gripper was mounted together with the gripper which handled bails and the gripper which handled lamp holders and springs (discussed in the following sections). The entire assembly was mounted on the fifth axis of an AdeptOne robot which allowed all the grippers to be immediately accessible and allowed the single robot to perform the entire assembly. Figure 5-37 shows the complete gripping system. During subsequent phases of the project, the gripper was mounted on a pneumatic, rotary wrist with the bail gripper. Figure 5-38 shows this gripping system. 322 Figure 5-37: Phase I Gripping System Figure 5-38: Bottom Cap / Bail Gripping System 5.4.4.2 Bail Gripper The bail gripper was the second gripper constructed for use in the workcell. In contrast to the bottomcap gripper however, it has had no design changes. The gripper was required to retrieve and assemble a bail onto a bottomcap. The bails are fed on a flexible feeder so the gripper had to pick a bail from a flat surface. The stable pose of a bail is lying on its side on the feeder so a clever design was required to lift the bail from this position. The second task of the gripper was to spread the ends of the bail and 323 position it over the mounting holes on the mounting block of the bottomcap. It then had to release the bail and leave it attached to the bottomcap. In the original assembly plan, the gripper was also used to rotate the bail into position over the shoulder of the bottomcap before pressing. It became apparent however, that it was more efficient and reliable to use a dedicated mechanism to flip the bails. A copper tube was fashioned into an appropriate shape for this task. The gripper is used at the first robot during the bottomcap assembly. It is used on the same rotary wrist as the bottomcap gripper. The gripper was remade during Phase II because a different actuator was required for use with the rotary wrist (Schunk RH907 in place of a Robotech model 1610, used during Phase I), it was not redesigned. This gripper has a unique requirement on footprint. Since the gripper grasped the bail from the inside using an opening action of the gripper fingers, it had to fit inside the bail as it laid on the flexible feeder. After the bail was grasped, it was taken to the bottomcap fixture and attached to the cap. In this location there was plenty of clearance. Figure 5-39 shows the gripper retrieving a bail from the flexible feeder. Figure 5-39: Bail Gripper Retrieving a Bail The design of the gripper is unique in that it grasps a part when the actuator is open instead of when the actuator is closed. This is necessary since the bail must be 324 flexed open to be attached to the bottomcap. The fingers are about 1 inch wide and 1 inch long. They are about 1 4 of an inch thick. The exterior surface of the grippers are turned to a diameter that approximates the diameter of the inside of the bail. At the end of each finger a round groove is machined. The radial diameter is the same as the cross sectional diameter of the bail. As the gripper opens, the bail is lifted from the surface by the grooves. This opening action of the gripper also spreads the ends of the bail. The corners of the groove are chamfered to help the bail align in the groove. The lower portion of the groove runs out at the end of the fingers which leaves an angled surface which helps lift the bail from the feeder. The back of each finger is machined flat. Figure 5-40 shows a closer view of the end of the bail gripper. The fingerprint restrictions on this gripper are relatively relaxed. To function properly, the gripper must fit inside the bail. For a bail to be graspable, it needs to be singulated on the conveyor, which means there will be nothing in the middle of the bail. Therefore, by designing the gripper to function properly guarantees that it has sufficient clearance. Figure 5-40: Bail Gripper Finger Detail This gripper has been used successfully for the past four years. It has been reliable in retrieving the bails from the feeder. It has been mostly reliable in placing the 325 bails on the bottomcap. Some of the problems with reliability stem from the bail rotating on the gripper fingers as they are opened. Because the bail is split at one end, as it is spread open, it tends to rotate both sides of the bail from a point located at the midsection of the bail (the side directly opposite the split). Since the gripper jaws open in a linear fashion, the bail needs to slide on the gripper jaws as it spreads. Variations in the surface finish of the bail and how well the gripper is aligned with the bail before opening affect how evenly this sliding takes place. If this sliding action does not happen evenly, then the bail will end up rotated on the gripper. There is no mechanism for accurately locating the bails rotationally on the fingers. Since the split end of the bail is placed over the mounting block on the bottomcap, the rotation of the bail on the gripper jaws is important if it is to be repeatable. Some of the guidelines followed when designing this gripper include a secure grasp of the part, chamfers on approach surfaces, and gripper fingers that complement part shape. The fingers were designed to use the elastic flex of the bail as the source of force holding the bail on the gripper. By machining a groove in the gripper fingers in which the bail sits, when the bail is flexed open it rests in the groove. To fall off the gripper, the bail would have to flex open even further than it is when being held. Chamfers were provided on the bottom edge of the fingers and on the edges of the groove to help guide the bail into the groove when it is being retrieved. The gripper fingers themselves are contoured to match the shape of the bail. The outside diameter of the jaws match the inside diameter of the bail and the diameter of the groove matches the cross sectional diameter of the bail. This helps to establish a more secure grasp on the bail. A guideline which was not included in the design was to align parts on the gripper as they are being grasped. This is indicated by the problem mentioned earlier of the bail not being consistently rotationally positioned on the gripper fingers. A future revision is to design the motion of the gripper to better match the motion of the bail as it is spread open. To accomplish this a rotary motion gripper would 326 be used in place of the parallel motion gripper. This rotary motion actuator would be mounted on its side with the gripper jaws extending sideways from the mounting posts below the gripper. The bail would be retrieved by lowering the jaws into the middle of the bail and opening the jaws rotationally. This rotational motion would better match the motion of the bail and would reduce the amount of sliding of the bail on the gripper fingers. This reduction in sliding should make the location of the part on the gripper more consistent and repeatable. 5.4.4.3 Lamp Holder / Spring Gripper The lamp holder / spring gripper was the last gripper made during Phase I of the project. It was the first gripper designed to handle multiple parts. It originally was mounted on the three gripper mechanism used on the AdeptOne robot used during the first phase of the project. The gripper is used to handle the spare lamp holder and the spring. It can not handle both parts simultaneously. During Phase I, both parts were retrieved from a vertical orientation. The spare lamp holders were fed using a special grate which held them in a vertical pose with the grasping tab pointed straight upward. The springs were fed standing upright with the large coils pointing down. After Phase I, the lamp holders were fed resting on the flexible feeder lying on the flat belt surface. This required the gripper to approach the lamp holder at an angle equal to its static rest angle. Figure 5-41 shows the lamp holders being retrieved from the grated surface and the flat surface. The springs are still fed upright. The gripper is used for both part retrieval and for assembly. In the case of the lamp holder, the gripper has to retrieve one from the flexible feeder and then place it into the bottom of the bottomcap. It must have sufficient clearance to reach the bottom of the cap. In the case of the springs, it must be capable of grasping a spring from above. There is a large tolerance in the size of the springs and the gripper must be capable of dealing with this. After grasping a spring, the gripper must then seat the spring in the bottom of the bottomcap. To do this, it drives the spring through the spring funnel which guides the spring into location. The gripper must 327 fit through the spring funnel in its open position as well as its closed position. The gripper is used on the same wrist unit as the bottomcap gripper. This gripper is unique in that is uses the angular degree of freedom in the wrist unit to align itself with the lamp holder for pickup. By limiting the range of rotation of the wrist, the lamp holder gripper extends at the correct angle to pick the lamp holders from the flexible feeder. A special mounting block was produced to allow the bottomcap gripper to be vertically orientated when the wrist is at this angle. By rotating the wrist to its other stop, the lamp holder is in a vertical oriented, ready for insertion into the bottomcap. Figure 5-41: Lamp Holder Retrieval During Phase I and Phase II The gripper fingers themselves are made of two parts. The first part is an extender to which the actual fingers are attached. This extender is used since the original fingers, used during Phase I, are still being used. During Phase I a Robohand actuator was used. A Schunk RH907 has been used since Phase II (to mate with the rotary wrist) and so an adapter was needed to attach the fingers to the new actuator. A redesign of the spring funnel adapter also required the fingers to be a bit longer to reach the bottom of the bottomcap. The finger extender has a rectangular cross section and is about 1 inch long. The fingers themselves are each a half round cross section. The outside diameter is about 5 8 of an inch in diameter and about 1 inch long. At the end of the finger is a smaller diameter post. On the inside of the post a slot is cut and is used to pick the lamp holder. The width of the slot is slightly less than the width of the tab which provides a secure hold on the lamp holder. The exterior of the post has a chamfered end 328 to help guide the spring over the post. For most of its length there is a reverse taper designed to hold the spring after it has been grasped. The shoulder between the post and the larger diameter is used to drive the spring through the spring funnel. The gripper is rotated 90° from the standard mounting orientation. This was done to align the direction of motion of the actuator with the orientation of the lamp holder as it sits on the feeder. Figure 5-42 shows the fingers of the gripper holding a lamp holder and spring. Figure 5-42: Gripper Holding a Lamp Holder and Spring The gripper can have a unique footprint depending on the orientation of the wrist. In the case of retrieving springs, the gripper grasps springs from within the top coil of the spring. So as in the case of the bail, the gripper’s footprint is smaller than the size of the part that is being picked. This mean by its very design, the gripper will reach the part if it is singulated on the feeder’s conveyor. The footprint of the gripper in the lamp holder orientation is not as obvious. There are two components which may collide with other parts on the feeder. The first part is the gripper fingers and actuator. Since the gripper is approaching at an angle, there is the possibility of the bottom edge of the actuator hitting parts. The second (and not so obvious) part to watch is the bottomcap gripper. Since the bottomcap gripper is in a vertical orientation when the lamp holder gripper is at an angle, it may also hit other lamp holders. These two parts of the gripper give it an odd shaped footprint. Its footprint resembles an oval directly in front of the 329 lamp holder with a circular area, separate from the oval, a greater distance away from the face of the lamp holder being retrieved. The resulting footprint of the gripper is rather large. The design has been fairly successful for both the lamp holder and spring. The lamp holder has been mostly reliable. It usually picks the lamp holder from the flex feeder cleanly and places it in the bottomcap with no problems. Some of the problems seen have been with the lateral positioning of the lamp holder in the gripper. Since a flat slot is being used for gripping, there is nothing to properly align the lamp holder sideways in the gripper. This causes problems when trying to insert the holder into the bottomcap because the lamp holder can catch on the threaded inside of the cap and get stuck sideways in the cap. The other problem is seen after extended testing using the same lamp holders. After a while the bulb holding posts on the holder tend to get bent and the holder ends up sitting at a different angle than the one for which the gripper was designed. This can cause the lamp holder to slide in the gripper as it is being closed which produces an unreliable positioning of the holder in the gripper jaws. The spring gripper works well. It usually picks parts and inserts them into the bottomcap without error. The problems seen when using this gripper can usually be attributed to the variations of the springs being fed. The first problem is in the size of the top coil of the spring. If there is not enough room to physically fit the gripper through the top coil, problems can be experienced. The second problem has to do with the alignment of the top coil with the bottom coil. It the coils are not nearly concentric, when the gripper attempts to place the spring in the bottomcap using the spring funnel, the spring will hang-up on the top of the funnel. The last problem has to do with worn springs. Over time, the height of the spring decreases since its coils get compressed each time it is placed in the bottomcap. Eventually the spring is too short to reach all the way through the spring funnel and it is left stuck inside the funnel rather than being seated properly in the bottomcap. All these problems, however, are attributed to the spring and not the 330 design of the gripper. A better gripper design would perhaps help to correct some of these problems from happening, but a better solution is to fix the part rather than try to patch the problem with an overly complex gripper. Several guidelines were important in the design of this gripper. This gripper also demonstrates a situation where it is impossible to satisfy all the guidelines, and tradeoffs must be made as to what guidelines are more important. The gripper itself is designed to grasp two different parts which helps the throughput of the system by allowing the assembly to take place without a tool change. The gripper fingers had to be designed longer than recommended because of the need to reach through the spring funnel with the spring and because of the angle at which the lamp holder is retrieved from the flexible feeder. The junction between the extensions and the fingers was designed to properly align the two components. The junction between the extensions and the actuator only relied on the screw holes for alignment. The lamp holder gripper was compromised in several way at the expense of grasping multiple parts. The guideline which stipulates that the gripper align the part as it is being grasped and the guideline that says to fully encompass the part being grasped had to be forgone so that the same gripper could pick both the lamp holder and spring. Since the tab on the lamp holder is much larger that the top coil of the spring, it was impossible to provide lateral positioning to the lamp holder as it was being grasped. This caused the variation in the lateral position of the lamp holder in the gripper jaws as discussed in the previous section. The spring gripper had chamfers on the exterior surfaces which helped center the spring on the gripper as the spring was approached. It has a reverse taper on the exterior of the post to ensure a secure grasp of the spring. The circular shape of the post helped to align and hold the spring. If the design were to be revised, there would be several areas for improvement. The first is in the junction between the actuator and the fingers. This junction needs to encompass the mounting posts so that the gripper fingers are properly aligned. Another 331 improvement would be to design a feature into the fingers which would properly align the lamp holder laterally in the fingers. It would also be better to design the fingers as a single unit rather than use an extender as is currently being done. This would save weight and make the fingers more compact. The lamp holder / spring gripper was mounted on a pneumatic, rotary wrist with a second bottom cap gripper (nearly identical to the one previously discussed, made of a nylon material rather than aluminum). It was used at the second robot to perform the second half of the bottom cap assembly sequence. Figure 5-43 shows the gripping system. Figure 5-43: Lamp Holder / Spring / Bottom Cap Gripping System 5.4.4.4 Lens Ring Gripper The lens ring gripper was originally designed to only handle the lens ring. The redesign of the gripper to hold both the lens ring and reflector is discussed in the next section. The original assembly sequence of the headcap called for the lens ring to be places in the assembly last. This gripper was tested on the robot, but was never used for assembly. The assembly sequence was altered and a new gripper was constructed before the assembly commenced. 332 This lens ring was to be handled in the open end down configuration. The parts were to be fed using the flexible parts feeder, so the footprint of the gripper was of concern. The gripper was required to retrieve a part from the flexible feeder and place it into a fixture on the modular worktable for a subsequent pressing operation. It then needed to lift the completed headcap assembly from the fixture and place it in the pallet. Since the lens ring formed the outside of the assembly, the same gripper should be used. The only concern was that the gripper could handle the added weight of the full assembly. The gripper was constructed from delrin (a nylon type material) to save weight. It was about 11 2 inches wide and 1 inch tall. The insides of the jaws were contoured to match the outside diameter of the headcap. The jaws themselves were about 3 16 of an inch thick. The outside of the jaws were turned to a diameter to minimize the footprint. The jaws were sufficiently chamfered to help center the parts in the jaws during both the approach and closure. The footprint of the gripper is the size of the gripper fingers plus the amount the actuator opens. The gripper worked well in testing and handled the lens rings without error. Several guidelines were followed in the design of the gripper. The first guideline followed was to minimize footprint. Since parts were being retrieved from the flexible feeder, the footprint was an important criterion. Gripper weight was minimized by using delrin material for construction rather than a heavier metal material. The gripper jaws were designed to fit the contour of the parts being handled to provide a secure grasp of the lens ring. The jaws were designed to not overly squeeze the parts so that there would be no problem in inserting the parts into the fixture because of a deformed part. While the gripper jaws were functional, there were two areas of the design which could be improved. The first is with the chamfers on the jaws. A larger chamfer on the leading edge and parting line of the fingers would make the grippers more reliable. The second improvement was to design the fingers to encompass the mounting points of the 333 actuator. This would help alignment and positioning of the fingers on the actuator. Since the gripper was redesigned into a combined lens ring / reflector gripper, these improvements were able to be made. 5.4.4.5 Lens Ring / Reflector Gripper After the assembly sequence was redesigned (to that listed in Section 5.4.2.2), it was determined that a gripper was needed which would handle both the lens ring and the reflector. This was necessary because three parts were being handled at the first robot. Since the lens was much different geometrically compared to the lens ring and reflector (flat disk in contrast to a more circular shape), it made sense to design the lens ring and reflector into a single gripper. The design criterion of the gripper was fairly restrictive. It was required to retrieve a lens ring from the flexible feeder and place it into a fixture on the modular table. It was also required to retrieve a reflector from the flexible feeder and place it into the lens ring. Finally, it had to remove the lens ring / lens / reflector assembly from the fixture and place it into a pallet. The lens rings were handled in an open end up orientation while the reflectors were handled in an open end down orientation. The reflectors were also fed using a flexible feeder. The gripper was used on a rotating wrist system with the lens gripper. The footprint of the gripper was a concern during the design since both parts were being fed using a flexible feeder. To keep the footprint to a minimum, the jaws were made as thin as possible. Clearance for approaching parts was also kept small. The clearance around the lens ring, however was bigger than absolutely necessary to accommodate the reflector portion of the gripper. Since both parts are rotationally invariant, a suitably clear area for grasping could be found by simply rotating the pickup angle until a clear area was found. Figure 5-44 shows a close up of one jaw of the gripper and also shows the gripper holding each part. The gripper fingers are approximately 1 inch thick by 1 inch wide by 11 2 inches long. The top of the fingers have a square pocket milled in them which encompasses the 334 mounting point on the actuator to ensure the jaws are aligned properly. The fingers themselves have a circular inside and outside diameters. The first inside diameter is designed to match the outside diameter of the open end of the lens rings. It is approximately 1 2 of an inch long and terminates at a shoulder. The shoulder is used to vertically align the lens ring in the gripper fingers. A second diameter, not used for gripping, begins at the shoulder and continues for another 1 2 of an inch. A bore with a tapered top and a flat lip on its bottom is used to grasp the reflectors. The reflectors are grasped using the metal conductive shield on the back of the reflector. This shield fit into the bore of the gripper jaws. The taper on the top of the bore matches the angle on the top of the metal shield. The reflector is held in the gripper by being constrained in the bore rather than by friction alone. Figure 5-44: Lens Ring / Reflector Gripper 335 Care was taken when designing the various diameters of the fingers to ensure that collisions would not occur during assembly. This was particularly critical when inserting the reflector in the lens ring. The sizes of the fingers had to be designed such that the surface which usually held the lens ring would be held at a larger diameter when holding a reflector so that the reflector could be placed in the lens ring without the gripper colliding with the lens ring. The vertical heights of the gripper had to be carefully designed so that the gripper could grasp a reflector without hitting the feeder’s belt and could grasp a complete sub-assembly without hitting the metal shield of the reflector. The design worked well. After a slight modification to the amount of clearance on the approach to the lamp holders, the gripper fingers worked without problems. Lens rings or completed assemblies were never mishandled. The only problem with the grippers, seen rarely, was in the release of the reflector. Occasionally, a reflector would hang up in the bore and not be released cleanly. This usually caused the reflector to be left sitting in the lens ring at an odd angle. The press none-the-less usually seated the reflector correctly. The gripper used many of the guidelines previously discussed for its design. The footprint of the gripper was kept to a minimum, since parts were being grasped from a flexible feeder. The footprint did, however, become a little bigger so that both the reflector and lens ring could be handled. This was seen as an acceptable compromise, since handling both parts was more important than simply minimizing the footprint. By designing the shape of the gripper jaws to match the lens ring, a secure grasp was obtained. By designing the reflector to be held in a groove, an even more secure grasp was obtained since more than just friction alone is used to hold the part. The guideline which suggests using a single gripper to handle multiple parts was also followed. This saved a tool change operation and helped to reduce the cycle time. The gripper fully encompasses the reflector when its being held. This helps to increase reliability by reducing the possibility of the part being dropped. The gripping surface for the lens ring 336 was designed so that the ring would not be squeezed to the point that it would not fit into the fixture. The circular shape of the fingers which complement the shape of the part allows the gripper to center the parts as they are being grasped even if the parts are not exactly at the pick location (as returned by the vision system) before the gripper begins to close. Figure 5-45: Lens Ring / Reflector / Lens Gripping System The gripper has been successful and only two areas could be improved. The first is the weight of the gripper. If the gripper were made of a plastic material, it would be lighter and could possibly allow for faster robot motions. The second area of improvement, if a revised gripper were being designed, would be to make the release of the reflector more reliable. The gripper was mounted on a pneumatic, rotary wrist with the lens gripper (discussed below) and used at the first robot for the first half of the headcap assembly. Figure 5-45 shows the complete gripping system. 337 5.4.4.6 Lens Gripper The lens gripper was the second gripper constructed for the headcap assembly. It was the first gripper which used suction as the means of holding the parts. It was designed to lift a lens from the flexible parts feeder and place it into the lens ring. As stated previously, the lens is a unique part in that it is a flat plastic disk and is translucent. Because of the darkened ring around the perimeter of the lens, it appears to the vision system as a circle. To successfully pick up a lens, the gripper must be capable of lifting it from the flexible feeder. Since the disk is thin, about 1 10 of an inch, a parallel jaw gripper would be inappropriate. After retrieving the lens, the gripper had to place the lens inside the lens ring. It had to place the lens far enough into the lens ring to allow room for the reflector to be placed into the ring on top of it. Since the lens is nearly the diameter of the lens ring, it would have been difficult to insert the lens using a gripper which held the lens by its perimeter. The gripper was used at the first robot on a rotary wrist with the lens ring / reflector gripper. The footprint of the gripper is not a concern for this design because of the method of gripping of the part. Since the gripper is using suction and approaches the part from above, no additional clearance around the part is required. If the vision system has identified the part as valid for retrieval, then there is sufficient clearance for the gripper. The gripper is an arrangement of three suction cups in a triangular pattern. The gripper mounts to the rotary wrist using a circular disk of aluminum about 3 8 of an inch thick. The suction cups mount on three posts which extend from the aluminum disk. The posts are about 11 4 inches long. The three suction lines run from each post serially. A single venturi type vacuum generator is mounted to the quick connector and provides the suction for the gripper. The suction cup itself has a base of hard rubber and is mounted on a brass barb fitting. This provides the force necessary to push the lens into the lens ring. The vacuum lines enter the posts which hold the gripper from the side approximately one inch from the end of the suction cup. Figure 5-46 shows the design. 338 The design has worked well and has been reliable at retrieving the lens. After the proper tool offset was taught, there have been no problems inserting the lens into the lens rings. One minor reliability problems was noticed while using the gripper. Figure 5-46: Lens Gripper The problem seen is the durability of the suction cups. Since the cups are being used to press the lens into position, they can develop tears in the bellows section which causes a loss of suction. After about 3 months of intermittent testing, one of the suction cups developed a tear. This was not a major issue since the rubber cup can be replaced in about 10 seconds and the replacement part only costs pennies. Since many of the guidelines deal with parallel and rotary motion actuators and their gripper fingers, not many of them were applied to the design of the lens gripper. The entire gripper was made from aluminum to save weight and was constructed using standard suction cups to save cost. Providing features to laterally align the parts was not included in this design. The compliance of the rubber suction cups, however, allowed the 339 part to line up with the lens ring as it was being inserted. Since the gripper is used for assembly (and not just pick and place), another guideline suggests to design chamfers on the gripper to help align the parts before insertion. Designing a feature such as this into the gripper would have made the gripper cost much higher and the gripper more complex. Again, the compliance provided by the suction cups offsets the lack of features to pre-align the parts. The only part of the gripper that could be improved if a revision were made would be the suction delivery system. In its current configuration, if one of the suction cups fails, then the gripper will drop the part because all the cups receive their vacuum from a common supply line. It would be more fail-safe to design the gripper such that the failure of one suction cup would not cause the part to be dropped. 5.4.4.7 Bulb / Bulb Retainer Gripper The gripper which handles the bulbs and bulb retainers is unique in that it rotates parts through 90° after acquiring the part. This type of motion is often needed for use with flexible parts feeders. Since flexible feeders present parts to a vision system in their stable poses (at least marginally stable, i.e., rolling parts), it is often necessary to rotate the parts before using them for assembly. It became apparent during the design of the assembly sequence for the headcap that feeding the bulb retainers and bulbs was going to be challenging. The statically stable pose of the bulbs is lying on their sides and while a few of the bulb retainers stand upright, most end up lying on their sides. However, in both cases, the parts were required to be in a vertical orientation for assembly. After a search of commercially available components turn up no valid gripping solution, a rotary jaw gripper was designed. The rotary jaw gripping mechanism has been revised and is now rather generic in nature. It is discussed in detail in Section 5.4.3. Refer to that section for details about the design of the rotary mechanism, this section will deal primary with the gripper used specifically for the bulbs and bulb retainers. 340 Both the bulbs and bulb retainers are fed using the flexible parts feeder. Gripper footprint is a concern, especially in the case of the bulb retainers which tend to lie in close proximity to one another on the feeder belt. Another design challenge was the shape of the parts. While the bulb has a circular shape to it, the bulb retainer has an almost square shape. This meant that the design of the gripper fingers must accommodate both round and square parts. After grasping the parts and rotating them 90° the gripper then had to place the bulbs directly in the back of the reflector. The bulb retainers were placed into a temporary fixture before being placed into the reflector by another gripper. The table fixture was such that there was a restricted amount of room in which to position the gripper for dropping the parts. To make a successful assembly, the gripper was used to lift a bulb from the flexible feeder, rotate it 90°, and place the bulb in the hole in the back of the reflector. It also was used to lift a bulb retainer from the flexible feeder and place it into the table fixture. The gripper is mounted on a rotary wrist with the bulb retainer assembly gripper. The two grippers allow the second robot to perform the second half of the headcap assembly without a tool change. Figure 5-47 shows the gripper handling both a bulb and bulb retainer. Figure 5-47: Bulb / Bulb Retainer Gripper 341 The footprint of the gripper is small. Its fingers are 1 8 of an inch thick by 1 2 of an inch wide. This allows the gripper to retrieve bulb retainers from the feeder when they are in close proximity to one another. While the rotary mechanism is much larger than the gripper fingers themselves, the fingers are long enough to keep the mechanism at a height where it will not interfere with the other parts on the feeder. The design of the gripper is unique. A linkage drives both fingers of the gripper from the single cylinder. The fingers are mounted on axles and are driven by the axles. The fingers extend below the rotary mechanism when in the un-rotated state and point behind the rotary mechanism when rotated. The fingers themselves are flat plates to which a layer of rubber and cellophane tape is applied. This allowed the gripper jaws to have a compliant surface which greatly increased the secureness of the grasp of both parts. The gripper fingers including the rotary mechanism is mounted on a Schunk KTG 50 actuator. The first design of the gripper had stubby fingers, which did not extend very far past the rotary mechanism. This caused problems since it greatly increased the footprint of the gripper. A severe reduction in feeder throughput was seen because of the size of the gripper’s footprint. To fix the problem, a new set of fingers were designed which were much longer than the first. These fingers greatly reduced the footprint of the gripper and improved the feeder throughput. The gripper has been used in the workcell for over a year with much success. As previously stated, the first design had stubby fingers which caused feeder problems. After extending the fingers, much greater feeder throughput was observed. Other problems were encountered at first. The gripper jaws were originally left as flat aluminum plates. This greatly reduced the quality of the grasp and some mishandling of parts was observed. Next, the layer of rubber was added. This improved the grasp of the gripper by increasing the friction between the gripper fingers and the parts and by increasing the surface area of the fingers which were in contact with the parts, but other problems were evident. After grasping and rotating the part, the gripper would move to 342 the drop location and open its jaws. However, the part would stick in the gripper because of the compliant nature of the rubber. To fix this situation, a layer of cellophane tape was applied to the gripper fingers over the rubber. This kept the parts from sticking to the rubber when the gripper jaws opened. The friction between the gripper jaws and the parts were lowered by the use of the tape. However, there were no problems maintaining a solid grasp on the parts as they were being moved. After correcting the length of the fingers and the surface material of the fingers, the gripper has performed without problem. Figure 5-48 shows the original design with short fingers and a close up of the lengthened fingers. Figure 5-48: Bulb / Bulb Retainer Gripper with Short and Long Fingers Many guidelines were followed during the design of the rotating jaw gripper. Several of the guidelines were actually created directly because of lessons learned during the design and testing of the gripper. Minimizing the footprint of the gripper was a priority after the first tests of the gripper were conducted. By extending the fingers beyond the rotary mechanism, a much smaller footprint was realized. Chamfering the outside of the gripper fingers was also done to help the gripper push parts out of the way as it approached a different part. Minimizing the weight of the gripper was important so that it could be used on a rotary wrist with another gripper. Both of the commercially available grippers were far too heavy to be used on the robot in the workcell. A secure grasp of the part was ensured by adding the compliant rubber material to the gripper 343 fingers. Since the jaws were simple flat plates and contained no features with which to orient the parts are they were retrieved, this compliance did not affect the precision of the gripper. Tool changes were avoided by designing the gripper to be used on a rotary wrist mechanism and by designing the gripper to handle multiple parts. Figure 5-49: Bulb / Bulb Retainer Gripper / Assembly System Cycle time and reliability were also enhanced by designing the rotary motion in the gripper and avoiding an external flipping mechanism. Several guidelines had to be ignored, however, to allow the gripper to handle multiple parts. Since the parts have different shapes (circular and square), the gripper fingers were not made to complement the shape of the parts begin grasped. Also, to decrease the footprint of the gripper, the gripper fingers had to be lengthened a little beyond the maximum length recommended by the actuator manufacturer. 344 The bulb / bulb retainer gripper is mounted on a pneumatic, rotary wrist with the bulb retainer assembly gripper. It is used at the second robot to perform the second half of the headcap assembly. Figure 5-49 shows the gripping system. 5.4.4.8 Bulb Retainer Assembler The bulb retainer assembly gripper was designed to complement the rotary jaw gripper for the second half of the headcap assembly. While the rotary jaw gripper had the ability to grasp the bulb retainer and rotate it 90°, it lacked the ability to press the retainer into the back of the reflector. The pressing operation takes some amount of force and the rotary jaw gripper was not capable of generating that force for several reasons. First, the jaws were parallel flat plates and had no features to transmit the vertical force of the robot to the part. Secondly, the rotary mechanism was not strong enough to take the repeated torque generated by the pressing operation. Lastly, there were no features in the jaws to accurately align the parts as they are being inserted. To alleviate this problem, a dedicated gripper was designed to press the bulb retainers into the reflectors. The only parts handled by this gripper are the bulb retainers. The parts are retrieved from the fixture on the table, where they are placed by the rotary jaw gripper, and pressed into the back of the reflectors while they are in the pallet. The footprint of the gripper was not as big a concern as it was for the rotary jaw gripper since the parts are always being retrieved and placed in known locations. The design did have to be built strong enough to withstand the repeated force generated by the pressing operation. The footprint of the gripper was made small by using several features. First, the fingers were designed such that the total stroke of the actuator was limited to about 1 8 of an inch. The thickness of the fingers was also made small and extra material was removed to reduce the footprint even further. The design of the fingers was made as simple and compact as possible to increase the strength and robustness of the design. The fingers are about 11 2 inches wide by 1 inch long by 11 4 inches thick. The fingers completely encompass the mounting points on 345 the actuator to enhance the strength, stiffness, and repeatability of the jaws. The outside of the jaws have an octagonal shape. The corners at a 45° angle to the direction of motion were removed to reduce the weight and footprint of the gripper. The inside of the jaws are square shaped to match the shape of the part being gripped. This allows the parts to be accurately located laterally while being held by the gripper. This is important since there are no features to align the bulb retainer and the reflector before the insertion operation. Generous chamfers are included on the leading edge and parting line of the gripper jaws to help align the parts as they are being grasped. The base of the gripping area is left solid to provide a reliable transmission of vertical force to the parts and to provide positive vertical alignment of the part in the gripper jaws. The jaws themselves are constructed of aluminum for durability and strength. Figure 5-50 shows a side and end-on view of the bulb retainer assembly gripper. The gripper has undergone no revisions since its design and has performed well in use. The chamfered surfaces help to align parts which are not sitting squarely in the fixture. After a year of use, no wear or bending of the fingers have been observed. Only one problem has been observed during use. On several occasions the bulb retainer stuck in the gripper after its jaws were opened. This was usually attributed to large burrs on the bulb retainer. Making the inside of the gripper fingers slightly larger should alleviate the problem. Figure 5-50: Bulb Retainer Assembly Gripper 346 Many of the guidelines were used in designing this gripper. While not a major concern, the footprint was minimized to lessen the chance of a collision when picking or placing a part. The parts were fully encompassed with the gripper fingers when being transported. This helped to align the parts in the jaws, helped to align the parts properly before insertion, and helped to hold the part solidly during the insertion. The finger length was kept to a minimum to lessen the forces seen by the actuator during the pressing operation. Generous chamfers were included in the inside of the jaws to properly align the parts as they were grasped. The fingers themselves fully encompassed the mounting points of the actuator for strength and rigidity. 5.4.4.9 Cap / Container Gripper This gripper was designed for use in Eaton’s reconfigurable assembly cell. The gripper is a rotating jaw gripper similar to the bulb retainer/bulb gripper described in the previous section. It is a second generation design, however, and its rotational mechanism is different than the one on the previous example. The gripper is designed to handle two parts, the cap and the container, both from the tire valve cap package assembly. It was necessary to handle both parts with one gripper to avoid a tool change at the robot. As described in Section 5.4.2.3 the first robot must handle three parts: the cap, the container, and the lid. Since the cap and container must both be rotated through 90°, it seemed logical to use the same gripper for that purpose and to use a different gripper (mounted on a rotary wrist) for picking the lids. The design requires several features. The first, and most obvious, is the ability to rotate the parts 90°. Other requirements include a small footprint (the caps are fed using a flexible feeder) and the ability to handle two different parts. Figure 5-51 shows the gripper holding a cap and container. 347 Figure 5-51: Cap / Container Gripper The gripper is required to pick a cap from a flexible feeder. The location of the part is random and is returned by the vision system. Clearance is a concern, since the parts may be packed closely on the underlit conveyor. The parts must then be rotated through 90° and placed into a pocket in a pallet. The gripper must also pick the containers from a feeder. The parts are presented to the robot on their sides in a shallow ‘‘V’’ groove. The open end of the container may be forward or backward, but the location of the part is always known. After grasping a container, the gripper rotates it 90° as it travels to the pallet. At the pallet the container is placed into a pocket. After grasping a cap, the gripper also rotates it 90° on its way to the pallet where it is placed in a pocket. The gripper is part of a two gripper system used at the first robot. The other gripper is used to grasp lids. Figure 5-52 shows the gripper system. The footprint of the gripper is small to accommodate parts being fed using a flexible feeder. To accommodate picking both parts, the footprint for the caps was made slightly larger than it needed to be. This is again a case of one design parameter (handling two parts) being more important than another (minimizing footprint). Chamfers were added to the bottom outside edge of the finger to further minimize the 348 footprint. The footprint of the gripper was not a concern when picking the containers, since they were always in the same place. Figure 5-52: Tire Valve Gripper System - Robot 1 The design of the gripper is similar to the bulb / bulb retainer gripper. The rotary mechanism is driven by a single acting pneumatic cylinder. The fingers are mounted on passive axles and are driven by a shaft attached to the end of the cylinder rod. The same shaft drives both of the fingers so they are kinematically linked. Three air lines are needed to operate the gripper, two to open and close the jaws and one to rotate the jaws. Three sensors are also used in the gripper. Two sensors detect the open and close positions of the gripper while a single sensor is used to detect the un-rotated state of the fingers. There is no sensor to detect the rotated state of the fingers. The sensors to detect the open/closed state of the jaws are mounted using a manufacturer supplied bracket to the side of the actuator. Bolts of different lengths extending from one of the finger mounting pads are used to actuate the sensors. The sensor to determine the rotated/unrotated state of the fingers is mounted in-line underneath the air cylinder. A bolt, extending from the piston rod bracket, is used to actuate the sensor. The fingers themselves are 1 2 of an inch wide by 1 8 of an inch thick by 11 2 inches long. The bottom 349 half of the fingers are hard anodized for wear protection. The fingers were cut using a wire EDM machine to match the contour of the caps. A relief area was also cut to accommodate the containers. The fingers were designed long enough so that the footprint of the gripper would not be affected by the size of the rotary mechanism and would be small. Chamfers were added to the bottom outside edge of the fingers to reduce the footprint further. The entire rotary mechanism was mounted on a parallel motion actuator from Schunk (KTG 50). No revisions of the design have been made. Figure 5-53 shows the detail of the rotary mechanism. Figure 5-53: Cap / Container Gripper - Rotary Mechanism The design has been used for several mouths in a demonstration setting with few errors. No errors have been noticed handling the containers. Those seen when handling the caps have included dropped parts, sticking rotary motion, and worn connector rod (the link which connects the end of the cylinder to the fingers). The dropped parts problem can be attributed to the parts themselves. After checking, it was determined 350 that many of the parts were undersized, which caused the gripper fingers to close on each other before contact was made with the part. The sticking rotary mechanism and the wear on the connecting shaft are problems with the rotary mechanism and not with the gripper fingers themselves. These problems and their solutions will be discussed in Section 5.4.3. Several guidelines were important when designing this gripper. The footprint of the gripper was minimized by lengthening the fingers so the rotary mechanism would not collide with anything. Chamfers were added to the outside of the gripper fingers to further minimize the footprint. The entire gripper was made from aluminum and had much material removed for weight savings. To ensure a secure grasp of the part was maintained, the fingers were shaped to complement the shape of the parts. To avoid tool changes, the gripper was mounted on a rotary wrist and the fingers themselves were designed to handle multiple parts. Inherent to the design of the rotary mechanism, functionality was added to the grippers which allowed them to rotate the parts without releasing them. One guideline that was not followed strictly was to not squeeze the parts unnecessarily. Since the caps are smaller than the containers, it was necessary to allow the container to be squeezed when grasped. By picking the container near the open end, the base, which is inserted in the pallet pocket, was not distorted to the point to cause problems. 5.4.4.10 Lid Gripper This was the second gripper designed for Eaton‘s reconfigurable workcell. It was designed to handle the container lid. The lid is retrieved from a flexible parts feeder in an open end down orientation. After grasping the lid, it is placed onto a post on the pallet. The actual assembly is performed at the second robot, so the gripper only acts in a pick and place manner. The gripper is used at the first robot on a rotary wrist with the cap/container gripper (Figure 5-52). Since only three components are used at the first robot, this gripper was only required to handle one part, the lid. The gripper was 351 required to retrieve parts from a flexible parts feeder. The feeder is a model 1224 made by RPM. As the parts pass through the vision window, they are mostly in an open end up (an undesirable) orientation. Gripper footprint is important since most parts are in this incorrect orientation. Any parts which are identified by the vision system need to be grasped so the system throughput is not adversely affected. The gripper needs to leave the bottom of the lid clear of obstructions so that it can be placed onto the post on the pallet. Figure 5-54 shows the gripper holding a cap. Figure 5-54: Lid Gripper The design was simple. The lid is gripped from its rim from above. The gripper fingers have an internal groove into which the rim of the lid fits. This allows the gripper to securely hold the lid without relying on friction between the lid and gripper jaws. The fingers themselves are approximately 7 16 of an inch in diameter in two halves. The parts of the jaws which are below the groove are relieved about 45° from each parting line to help prevent the lid from sticking in the gripper. It also allowed the gripper to open less to clear the part on the approach which made the footprint smaller. Sensors are included on the gripper to detect the open and closed position of the fingers. The footprint of the 352 gripper was kept to a minimum by making the gripper fingers thin. The range of the stroke of the actuator was also restricted to further minimize the footprint by reducing the amount which the fingers open. No revisions of the gripper have been made. It has worked without fail in the workcell. Even though the gripper was of a basic design, many guidelines were followed. As previously mentioned, minimizing the footprint was important to the success of the design. Weight was kept to a minimum by keeping the fingers short and thin. A secure grasp of the part was designed so that the part would not shift during robot motions. This was accomplished by grasping the lid using its rim so that the lid was physically constrained and not held by friction. By designing the gripper to function as part of the gripping system at the first robot on a rotary wrist, tool changes were avoided. By grasping the lid from the rim, the part was held without being overly squeezed. The necessary approach clearance was maintained without overly opening the gripper jaws by relieving part of the bottom of the gripper fingers. Chamfers were included on the inside of the gripper jaws to help align the parts as they are being approached by the gripper. Chamfers on the edges of the reliefs on the ends of the gripper fingers helped the gripper to align parts as they were being grasped. The gripping surface matched the shape of the parts which helped secure the grasp. The gripper fingers themselves fully encompassed the mounting points of the actuator. This helped to align the jaws on the actuator which improved the grasp. The gripper fingers have proven to be reliable and therefore revisions are not necessary. 5.4.4.11 Seal Gripper / Assembler The seal gripper/assembler was designed as part of the gripping system for use at the second robot of Eaton’s reconfigurable assembly cell. The gripper is used to assemble the tire valve stem caps and place them in a final package. This operation had the possibility of being difficult and error prone. First, a seal has to be retrieved from a bowl 353 feeder. Next, the seal has to be pressed into the bottom of a cap. After the seal is in place, the cap/seal assembly has to be retrieved from the pallet and placed into the container. The caps and containers arrive at the second robot on the pallet in pockets in an open end up orientation. The seals themselves are small and light. They are presented from the bowl feeder in a track with only their tops exposed. Also, the seating operation requires that the gripper hold the part only from the top. The seating operation itself requires some force to be successful and also requires that the cap and seal be in good alignment because the seal has an interference fit with the cap. After the seals are seated, the cap needs to be lifted from its pocket. For efficiency, it would be convenient to use the same gripper to move the cap as well. The cap must be placed into the container. It is acceptable to drop the cap when placed over the end of the container, it does not have to be placed gently. The footprint of the gripper was not of a major concern. All the locations are known, so the necessary clearances can be designed into the gripper. The gripper is mounted on rotary wrist with the lid gripper/assembler. Figure 5-55 shows the gripper system. Figure 5-55: Tire Valve Gripper System - Robot 2 354 The design of the gripper is unique. Suction is used to grasp the seals and pick up the cap/seal assembly. A linear actuator is designed into the gripper and is used to seat the seals without the use of any extra assembly hardware. The design of the gripper is a two chamber cylinder arrangement. The first cylinder is used to drive the linear motion. The second cylinder is used to maintain the vacuum during the motion of the piston. This gripper does not use a commercial pneumatic actuator. The outside diameter of the gripper housing is about 2 inches in diameter for its top half and then steps down to 58 of an inch in diameter for its lower half. The overall height of the gripper body is 19 16 inches. In all, the gripper is composed of 6 separate parts. The plunger, the piston rod, the piston, the piston bottom, the housing, and the housing top. The housing forms the main body of the gripper. The housing top allows the piston and vacuum chamber to be placed into the housing. Internally, the piston shaft goes through the piston bottom. The piston and the plunger are attached to the piston shaft. The piston shaft rests in the housing on a shoulder and is held in place by the housing top. The static joint between the piston bottom and the housing is sealed using an O-ring which sits in a recess in the wall of the housing. An O-ring is also used to seal the piston rod. The top of the housing, which also forms the wall of the piston, is screwed into the housing. The static seal between the housing and housing top is sealed using an O-ring in the housing wall. The top of the plunger is designed to have an O-ring seal with the lower part of the housing to form the vacuum part of the cylinder. Four larger holes extend most of the way through the plunger. Eight small holes are drilled into the end of the plunger, two small holes aligning with a single larger through hole. These holes allow the vacuum to pass through the plunger. No soft seal is necessary on the end of the plunger because the compliance in the part (the seal) is used to seal the vacuum. A small nub extends from the end of the plunger which is used to align the seal on the plunger when it is retrieved. 355 Three pneumatic ports are in the housing and are used to attach air to the cylinder and vacuum to the plunger. Flow controls are mounted on the ports that go to the air cylinder. During operation, the plunger must retract while holding the seal. If the plunger retracts too rapidly and the vacuum generator cannot draw air out of the vacuum chamber quickly enough, then the seal could be dropped. The flow controls regulates the speed of the plungers so that the seal is not dropped. Parker Hannifin’s Oring design book was used to size all the dimensions so standard sized O-rings could be used. Figure 5-56 shows a CAD cut-a-way view of the internal details of the gripper. It also shows the gripper holding a seal. Figure 5-56: Cap / Seal Gripper / Assembler Operationally, the gripper begins by extending the plunger and approaching the pick location on the bowl feeder. The vacuum is activated and a seal is retrieved. As the robot moves to the cap location on the pallet, the plunger is retracted. The robot lowers the gripper into position over the cap and the plunger is extended, seating the seal into the cap. While still maintaining the vacuum, the gripper departs vertically from the position. The vacuum holds the seal and lifts the cap along with it. The robot then positions the gripper over the container and lowers the cap/seal assembly into the top of the container. The vacuum is then released and the plunger retracted which drops the 356 cap assembly into the container. Figure 5-57 is an end-on view of the gripper showing the internal linear actuator at its motion extremes. Figure 5-57: Linear Actuator at Extremes of Motion The gripper was revised once during the design and testing. The plunger originally had four small holes through its entire length. This had two adverse effects. First, the small holes restricted the vacuum to the extent that the seal was barely held in place. Secondly, the holes were difficult to drill correctly because of their length. The length of the plunger is about 3 4 of an inch while the diameter of the holes was 0.040 of an inch (#60 drill). The gripper has been used in the workcell with mixed success. Several revisions have been proposed and will be discussed later. The first problem observed when using the gripper was the inability to properly seat the seal in the cap. Usually the seal would be left sitting in the top of the cap. Additionally, when the seal would not be seated properly, the gripper would usually fail to pick up the cap/seal assembly. Several reasons were found for this error. First, when designing the gripper, it was specified that 7 pounds of force was required to seat the seal. However, it was later learned that the seals were lubricated when that number was recorded. The gripper was designed to produce 357 approximately 20 pounds of force. It was thought that this extra force would ensure the operation would be successful. The amount of force produced by the actuator is directly related to the pressure of air being supplied to the gripper and to the diameter of the piston. Apparently, however, without lubricating the seals, much more force is needed than was originally specified Another problem was found to be the tolerances of the parts. It was found that many of the caps were smaller than the lower specified tolerance and many of the seals were larger than the upper specified tolerance. This combination made for a difficult insertion operation. Another problem seen during use was the plugging up of the plunger. It was found that during the insertion operation, particles of the seal were shaved off the exterior of the seal as it was being seated. The threads in the inside of the cap were generally responsible. The vacuum would then pull these pieces of material into the vacuum chamber where they could stick to the inside walls because of the lubrication in the cylinder. After time, this would build up to the point where the actuator would cease functioning. Generally, the plunger would get stuck in the extended position since there is less force to retract the plunger than there is to extend it (due to the reduction in the surface area of the piston due to the piston rod). Occasionally a cap would stick on the end of the plunger after a seal was inserted. It was determined that this was caused by caps whose inside diameters were smaller than the lower tolerance. The plunger would wedge in this smaller diameter due to physical interference. Other than these problems, the gripper worked as planned. Few failures were seen when attempting to retrieve a seal. To circumvent the trouble seating the seals, the plunger was operated three times in rapid succession while positioned over the cap. Many of the guidelines were employed in making this gripper. In contrast to most of the grippers designed, footprint was not a major concern in this case. It was kept small to minimize weight, but the lack of vision-based feeding during this assembly made the 358 clearance constant throughout the operation. The gripper was designed to handle multiple parts, the seal and the cap/seal sub-assembly, to help avoid tool changes. The gripper was mounted on a rotary wrist with another gripper so that the entire assembly could occur without a tool change. Functionality was designed into the gripper which helped speed the assembly operation by precluding the need for a dedicated pressing operation. It also helped the reliability of the operation by allowing the gripper to seat the seal in the cap and then place the cap/seal assembly into the container without letting go of the seal. The correct lengths had to be designed into the plunger and the housing so that seals could be retrieved from the bowl feeder, the cap could be approached without hitting the seal, and the cap/seal assembly could be handled. A large chamfer was machined into the bottom inside diameter of the housing to help guide the caps into position before the seal was seated. This chamfer also helped to align the cap and the seal as the seal was seated. This was especially important in this design since the seal was actually larger than the inside diameter of the cap and alignment was critical to the successful operation of the assembly. Several areas of the gripper could be revised. The first is the diameter of the piston. Increasing the diameter of the piston would increase the force produced by the plunger and make the seal seating operation more reliable and sure. The second revision would be in the vacuum cylinder area. A better design would remove the vacuum chamber completely and route the vacuum line through the center of the plunger. The vacuum line could exit the plunger from its side through a slot in the lower housing. This would keep the vacuum from causing the piston to stick while at the same time allowing the lower housing to be maintained. The lower housing is critical to the operation since its allows the cap and seal to be aligned as the seal is seated. 5.4.4.12 Lid Gripper / Assembler The lid gripper/assembler was used at the second robot of Eaton’s RAC. It was used to insert the lid into the container of the tire valve assembly after the tire valves 359 had been placed in the container. This operation also had the potential to be problematic. The lid is held on the container by friction, therefore, there is no clearance between the parts. There is a small lead-in taper on the lid to help guide it into position, but it is small (approximately 0.015 of an inch on a side by 1 8 of an inch long). The gripper was designed to handle two different parts. First, the gripper handled the lid. Second, the gripper was used to retrieve a completed assembly (four tire valves in a container with a lid) from the pallet and drop it into a hopper. A successful assembly was defined as a lid being pressed into a container. It was necessary for the gripper to retrieve the part from the pallet and press it into top of the container. Secondly, the container had to be removed from the pallet. The footprint of the gripper was not a concern since all the parts were being retrieved and placed into known locations. The necessary clearances could be included in the design of the gripper. The gripper was mounted on a rotary wrist with the seal gripper assembler (Figure 5-55). This gripping system allowed the robot to do the second half of the tire valve cap assembly with a tool change. The design of the gripper was a simple one. It has a circular cross section divided into two halves. The gripper has a rectangular shape where it mates with the actuator. Below that, the fingers have a circular shape for the rest of their length. The inside of the jaws are also a circular shape. A groove in the jaws is used to securely hold the lid. The gripper fingers extend for approximately 1 2 of an inch below the point where the lid is held. This extra length is composed of a long taper which is used to align the container as it is being approached. The end of the fingers terminate in a large chamfer. Simple inductive proximity sensors are included to sense the open and closed positions of the jaws. Figure 5-58 shows a CAD drawing of the internal finger detail and the gripper holding a finished assembly. No revisions of the gripper have been made. The gripper has been used without error. It has successfully assembled many parts and has always worked well. Only one small problem has been noted. On several occasions, the gripper failed to drop a 360 completed assembly after opening its jaws over the output hopper. Upon examination, it was determined that a large amount of flash on the lid was the culprit. This made the lid much larger than it should be, which caused it to wedge in the jaws. Figure 5-58: Lid Gripper / Assembler Even in this simple design, many guidelines were followed which help make the gripper successful. A secure grasp of the part was assured by several features. First, the shape of the fingers complement the shape of the part; second, the gripper fingers fully encompass the part; and third, a groove is used to hold the part. Multiple parts are manipulated using the gripper. The gripper is used on a rotary wrist which allows the robot to perform its job without a tool change. Generous chamfers are used on approach surfaces so that lids may be retrieved without error. Large chamfers on the parting lines of the two jaws align the lids as the jaws close. The fingers fully encompass the mounting points of the actuator. This helps to align the fingers when they are mounted on the actuator. A long lead-in chamfer was designed in this gripper to help align the lid and container before the insertion operation which made the operation reliable. One last thing that helped this design was the alteration of the pallet to allow a much simpler and reliable gripper. As stated in the introduction to this chapter, much better gripper 361 designs can be realized by designing the grippers and the rest of the assembly system concurrently. Originally, the lid was to be carried in a pocket in the pallet and grasped solely from above. Changing the method of transportation of the lid from a pocket to a post allowed the gripper to be designed with a long lead-in chamfer. Without this lead-in chamfer, the insertion operation would have been more difficult because the accuracy and repeatability of the robot would be used to align the parts rather than the gripper. There are no future revisions planned for this gripper. It has worked without fail and no revision is needed. 5.4.4.13 Fitting / Guide Gripper The fitting/guide gripper was another gripper designed for use in Eaton’s RAC. It is also a second generation rotary jaw gripper identical to the container/cap gripper described in Section 5.4.4.9 except for the fingers. The gripper is used to handle the guide and fitting of the water valve assembly described in Section 5.4.2.4. It was necessary to handle both parts using a single gripper so a tool change could be avoided. The gripper is used at the first robot of the workcell. Four parts are handled at the robot: the guide, the fitting, the body, and the spin ring. Since both the guide and fitting needed to be rotated by 90° before assembly, both parts were handled by a single gripper. The body / spin ring gripper is described in the following section. The guides are fed using the same flexible feeder used for the containers discussed previously. The guide is presented on its side in a shallow ‘‘V’’-groove. Gripper footprint is not as important for this operation since the parts always appear in the same location and with the same clearance. The fittings are fed using a Genex flex feeder and tool footprint needed to be minimized for this part. The rotated fittings are placed into pockets in the body. The fitting is also placed into a pocket on the body. The gripper is part of a gripping system used at the first robot. It is mounted on a rotary wrist with the body spin ring gripper described in the next section. Figure 5-59 shows the gripper system. 362 Figure 5-59: Water Valve Assembly Gripper System The design of this gripper is identical to the container/cap gripper except for the fingers. Refer to Section 5.4.4.9 for a discussion of the cap/container gripper or Section 5.4.3 for a discussion of the generic rotary jaw gripper. The remainder of this section will discuss the design of the fingers used which are mounted to the rotary jaw mechanism on fixed axles. The fingers themselves are 1 2 of an inch wide by 1 8 of an inch thick by 11 2 inches long. The bottom half of the fingers are hard anodized for wear protection. The fingers were cut using a wire EDM machine to match the contour of the guides and fittings. Since the guide and fitting are different diameters, the gripper contacts each part at differing amounts of closure. Circular contours which match the fitting are machined shallower in the fingers than the smaller diameter contour which fits the guide. The fitting contacts the fingers on at four surfaces around its perimeter. The guide is contacted on two surfaces opposite one another. The fingers were designed to be long enough that the footprint of the gripper would not be affected by the size of the rotary mechanism and would be small. Chamfers were added to the bottom outside edge of the fingers to reduce the footprint further. Several problems, discussed in Section 5.4.4.9, 363 have been observed. No problems, however, have occurred due to the fingers themselves. Figure 5-60 shows the gripper holding the guide in both un-rotated and rotated states. Figure 5-61 shows the gripper holding a fitting and shows a CAD detail of the gripper fingers. Figure 5-60: Fitting / Guide Gripper with Guide Figure 5-61: Fitting / Guide Gripper with Fitting and Finger Detail The gripper design guidelines that were followed will be discussed below. The length of the fingers was designed so that the rotary mechanism would not increase the gripper’s footprint. Chamfers were added to the exterior of the fingers to further reduce the footprint. The shape of the fingers was designed to complement the shape of the parts so that a secure grasp would be maintained. Multiple parts are grasped using a single 364 gripper and the gripper is used on a rotary wrist mechanism to avoid tool changes. Care was taken to ensure the gripper had sufficient clearance to approach the fitting. Since the guide and fitting are of differing diameters, extra care had to be taken in designing this dimension. The surfaces used for grasping the fitting acted as large chamfers when grasping the guide and helped align the guide with the gripper jaws as the gripper closed. This was especially important since, while sitting in the ‘‘V’’-groove, the guide rests at a slight angle relative to the gripper jaws. The added functionality of the rotary motion also helped improve the reliability and throughput of the system. The gripper fingers do not need revision, they work well in their current state. Revisions to the rotary mechanism will be discussed in Section 5.4.3. 5.4.4.14 Body / Spin Ring Gripper The body/spin ring gripper was used to handle two of the four parts of the water valve assembly at the first robot of Eaton’s reconfigurable assembly cell. The gripper was mounted on a rotary wrist with the guide/fitting gripper (Figure 5-59), discussed in the previous section. The gripper was required to grasp the body from a tray feeder and place it into a pocket location on a pallet. The tray feeder presented an array of bodies to the robot at know locations. While the parts were closely packed on the tray, gripper clearance was not a concern since the required clearance was specified and could be designed into the gripper. The spin rings were fed using a flexible parts feeder. The parts were often in close proximity to one another and gripper clearance was important for this part. To avoid tool changes at the robot, the gripper had to be capable of grasping both parts (although not at the same time). The design of this gripper was unique in that it was the first gripper designed with two separate fingers for picking each part. Since the parts were so dissimilar in shape and size, it was impossible to design a single pair of fingers which could handle both parts. One set of fingers were designed to handle the spin ring. Offset laterally from those fingers were another set of fingers which were used to grasp the bodies. Both sets 365 of fingers were machined from a single block of material and attached to a single pneumatic actuator. Figure 5-62 shows a CAD drawing of the gripper fingers and the actual gripper. The fingers used to hold the spin rings had a rectangular exterior for most of their length. The ends of the fingers were turned round to minimize the gripper’s footprint. The entire finger was not machined round because the body fingers were in the way of the machine tool. Due to the low height of the spin rings, this did not adversely affect the footprint. The inside of the gripper fingers were bored round. The end of the fingers contained a groove which was used to grasp the spin rings. Chamfers were placed on the inside edges of the groove and on the leading edge of the fingers. Figure 5-62: Body / Spin Ring Gripper The body fingers were simple rectangular extensions. At the end of each extension was a rectangular nub. The nub was well chamfered to facilitate proper positioning of the body on the fingers. The extensions were lowered into the body and, when the gripper closed, the nubs would engage internal holes which provided a secure grasp. The length of the body fingers was less than the length of the spin ring fingers so that they would not add to the footprint of the spin ring gripper. The spin ring fingers were approximately 1 inch long and 3 4 of an inch wide. The body fingers were 1 4 of an inch square and 5 8 of an inch long. There was approximately 1 2 of an inch of clearance 366 between the body fingers and the spin ring fingers. Inductive proximity sensors are used to sense the open and closed states of the gripper. The sensors are mounted on a bracket supplied by the manufacturer of the actuator and sense two small screws protruding from the mounting posts of the actuator. Figure 5-63 shows the gripper holding a spin ring. Figure 5-63: Body / Spin Ring Gripper with Spin Ring The gripper has worked well during use. No errors have been observed using the gripper and no revisions were made to the gripper during its design and use. Many guidelines have been applied to this design. The length of the fingers relative to one another were carefully designed so that the footprint of the spin ring gripper would be minimized. The outside of the spin ring jaws were machined round to further reduce the footprint. A secure grasp of the body was ensured by using nubs to mate with internal features. A tool change was avoided by designing the gripper to handle multiple parts and by mounting the gripper on a rotary wrist mechanism. The spin ring grippers fully encompassed the parts by holding the part in the groove of the fingers. This had several benefits. The parts could self center as the gripper closed which helped increase the reliability of the picking operation. This also increases the secureness of the grasp by fully containing the parts rather than relying on friction for holding power. Extra care was needed in designing the necessary approach clearances since there 367 were two fingers which could collide with things. Chamfers were added to the inside of the spin ring fingers and to the nubs on the body fingers to help align parts as they were being grasped. The mounting points of the actuator were fully encompassed by the fingers to ensure proper alignment of the fingers. No future revisions are planned for the gripper. 5.4.4.15 Water Valve Disassembly Gripper The water valve disassembly gripper was the last gripper designed for Eaton’s reconfigurable workcell. It was used at the second robot to disassemble the water valve assemblies. The fittings, guides, and spin rings are removed from the body and dropped into bins. The body is removed from the pallet and placed onto a tray. To save money and weight, a single gripper was desired to handle all three parts. (By picking the guide from the body, the spin ring is also removed). The requirements for this design are much less strident than for the other grippers. The footprint of the gripper is not a concern since all the parts are retrieved from the same location and dropped into bins. Also, since the parts are dropped into bins, there is no chance of an error while placing a part. No rotary wrist was used, only the single gripper was used at the robot. A special extender, mounted between the quick connect and the pneumatic actuator, was made to simulate the length of a rotary jaw. This was necessary because of the limited stroke of the robot and the need to also use the second gripping system of the tire valve cap package at the same workstation. The design of the gripper is similar to the design of the body/spin ring gripper described in the previous section. Two separate sets of fingers are used to manipulate the four different parts. One set of fingers is used to grasp the guides (with the spin ring over the guide) and a second set of fingers is used to handle the body. The fingers used to grasp the guide and fitting have a rectangular outside shape with large chamfers on each corner to reduce weight. The inside of the fingers are bored through at a diameter matching the outside diameter of the guide. The bottom 5 16 of an inch of the bore has a 368 larger circular shape machined into it with the center of the large circle being offset from the parting line of the jaw. This allows the gripper to match the shape of the fitting when not closed completely. When completely closed, the diameter matches that of the guide. Only the last 5 16 of an inch has this secondary diameter since that is the length of the surface of the fitting which is to be grasped. Overall, the fingers are 3 4 of an inch square and extend 3 8 of an inch in length. The parting line of the jaws is well chamfered to help align the parts with the gripper as the gripper closes. This ensures a reliable grasp of the part. The fingers used to move the body are identical to those used in the body/spin ring gripper. They have a rectangular shape and are 1 4 of an inch square and 5 8 of an inch long. A rectangular nub is used to mate with an internal feature in the body. The nub is well chamfered to help align the body as the gripper is being closed. The lateral spacing between the fingers is approximately 1 2 of an inch. Figure 5-64 shows the gripper handling each part of the disassembly process. The gripper has worked well; however, several minor problems have been observed. On several occasions, the gripper failed to release a guide after the gripper opened. It was determined that the guide was slightly oversize and was wedging in the jaws. Increasing the amount of chamfer on the parting line of the bore fixed this problem. The second problem was the gripper occasionally failing to release a body after placing it into the tray. This error was attributed to the position of the tray being incorrect which prevented the gripper from correctly releasing the body. Other than increasing the chamfer on the parting line of the bore, no revisions were made to the gripper during testing. 369 Figure 5-64: Water Valve Disassembly Gripper Many of the guidelines followed in previous gripper designs were not needed in this design since it was such a simple operation. The extra time and effort needed to implement the features would have been wasted since the design would not have been any better, only more costly and complex. The footprint of the gripper was not a concern. The only situation where clearance was critical was in placing the bodies on the tray. The required clearance was constant and could be accounted for in the design. Large vertical chamfers were machined onto the exterior surfaces of the fitting/guide fingers to help reduce weight. By designing the surfaces of the gripper fingers to complement the shape of the parts being retrieved, a secure grasp of the parts was obtained. The gripper was designed to handle multiple parts so a tool change would be avoided. Also, the added expense of a rotary wrist mechanism was avoided by designing the gripper to handle all the parts. Care had to be taken to ensure there was necessary 370 clearance to place the bodies in the tray. Chamfers were designed on the fingers to help align the parts as the gripper closed. The fingers themselves encompassed the mounting points of the actuator to ensure they were properly aligned. To save cost, the gripper was designed to handle multiple parts rather than designing two separate grippers and mounting them on a rotary wrist. No future revisions are planed. 5.4.4.16 Hydraulic Fitting Nut Gripper This gripper was designed to handle nuts from a hydraulic fitting assembly. The nuts were retrieved from the CWRU flexible parts feeder while lying on one of the flats of their hex shape. The gripper was used to test the throughput of the system so minimizing the footprint was important. After retrieving a nut, the part was dropped onto the return conveyor. Figure 5-65: Hydraulic Nut Gripper The design of the nut gripper was simple. Two flat plates with machined grooves matching the included angle of the hex nut were used. The hex of the nut would fit into the grooves on the finger providing a solid grasp. The fingers themselves were thin to reduce the footprint. They were about 1 4 of an inch thick by 1 2 of an inch wide by 3 4 of an inch tall. The outside and inside leading edge of the fingers were chamfered to further reduce the footprint and help align the parts. The fingers mount to the actuator using 371 two screws per finger and partially encompass the mounting points. Figure 5-65 shows the gripper holding a nut. The gripper worked without fail for testing and demonstrated that a simple gripper design can be used for simple, non-precision tasks. 5.4.4.17 Nut / Bulb Retainer / Fitting Gripper This gripper was also a simple design used for testing the throughput of the feeding system. This gripper needed to handle four different parts. First, two different sizes of hex nuts and plastic sockets were used for testing feeder throughput when feeding different parts at the same time. Secondly, fittings from a hydraulic fitting assembly were fed to test feeder throughput and functionality when feeding round parts which tend to roll. As in the case of the previous gripper, footprint was the most important factor. All the parts manipulated using the gripper were either dropped onto the return conveyor or into a bin. Therefore no precision placement was required. The design of the gripper was the simplest made: two flat, parallel plates. To minimize footprint, the fingers are small. The top half of the fingers were about 1 4 by 1 2 of an inch in rectangular cross section. The lower half of the fingers were 18 of an inch thick by 1 2 of an inch wide. The overall finger length was about 7 8 of an inch. The junction between the upper and lower portions of the fingers is a steep chamfer to help push parts out of the way. Large chamfers were machined into the leading edges of the fingers to further reduce the footprint. When complete, the gripper had almost a knife edge so that the footprint was only as large as the amount the gripper opened beyond the size of the part. A layer of duct tape was applied to the surface of the gripper to increase the friction between the gripper and the part and to provide a slight amount of compliance to the gripper jaw which allows it conform slightly to the shape of the part. Figure 5-66 shows the gripper holding each size nut, the plastic sockets, and a hydraulic fitting. 372 Figure 5-66: Feeder Test Gripper with Various Parts The gripper worked well for testing and provided valuable feeder throughput data. Again, this gripper shows how a simple design can be used when close tolerance is not required. 5.5 Conclusions As has been clearly demonstrated, the design of grippers and gripping systems is not a trivial task. However, thoughtfully designed grippers can decrease workcell cycle time and increase reliability. Guidelines have been presented which can aid in the design of grippers, but it is impossible to cover all the possible gripper and part configurations. As the seventeen examples above demonstrate, the application of any single guideline does not always manifest itself in the same way in all gripper designs. How then, can 373 general guidelines be developed to address each unique design? Many grippers, while physically different, share the same general function. For example, most parallel jaw grippers approach from a single direction, and then close to grasp the part. Rotary action grippers, in contrast, move to a position above the part and then rotate their jaws to grasp the object. Having developed guidelines which can be applied to a style of gripping rather than a specific gripper design, they may be applied to a wide variety of grippers. Table 5-6 presents a concise list of all the design guidelines discussed in Section 5.3. Guidelines to Increase System Throughput Guidelines to Increase System Reliability • Minimize Interference Metric • Ensure a secure grasp of the part • Chamfer the exterior surfaces of gripper fingers • Minimize finger length • Minimize weight • Design chamfers on approach surfaces of gripper fingers • Design necessary approach clearances • Ensure a secure grasp of the part • Avoid tool changes • Design gripper to align parts as they are grasped • Grasp multiple parts with a single gripper • Use multiple grippers on a single rotary wrist • Design functionality in gripper jaws • Design gripping surface to complement frictional coefficient Guidelines to Reduce Gripper Cost • Use less expensive parallel or rotary jaws actuators • Use off-the-shelf components for designing gripping systems • Favor designs which handle multiple parts with a single gripper rather than designs which use multiple gripper on a rotary wrist • Design fingers to encompass actuator mounting points • Do not rely on parts added to the assembly for location • Design lead-in chamfers on assembly grippers • Design functionality in gripper jaws Table 5-6: Gripper Design Guidelines 374 Using these guidelines, grippers can be designed more quickly and with a higher confidence level. The guidelines may also be used as performance criteria and allow a rapid evaluation of designs. Grippers designed using the stated guidelines have been constructed and are being successfully used in two different modular workcells. One workcell is in a research setting while the other is in a demonstration setting. The design of these grippers has been reviewed as examples of the application of the guidelines. Although the grippers designed are different, the guidelines applied to both equally well. 6 Results, Conclusions, Future Work Consider again the ‘‘factory of the future’’ which was presented in the introduction. Specifically, consider the requirements of such a factory (reiterated below). • • • • • • • • Reprogrammable parts manipulator Flexible parts feeders Modular, exchangeable hardware Generic parts transporter Rapidly exchangeable grippers Vision system Modular, object oriented software Products designed for agile assembly systems A dichotomous theme encompasses these requirements: Encapsulate product specific elements of the system; Generalize permanent elements of the workcell. How, then, has each chapter of this work contributed to the goal of a flexible factory? Reexamining the results of each chapter in this light should provide a more thorough understanding of their contribution to the whole. Chapters 2 and 3 are examples of this dichotomy. Chapter 2 dealt with flexible feeding systems which are a generalized solution to the problem of presenting parts to a workcell for assembly. Chapter 3 presented the application of homogeneous transforms to the problem of encapsulating product specific assembly hardware and grippers into quickly exchangeable packages. Chapters 4 and 5, in contrast, presented methods and techniques to improve the reliability, productivity, and functionality of agile workcells. Chapter 5 dealt specifically with the unique requirements of parts designed for assembly in an agile workcell while Chapter 6 examined the design of grippers for use in the workcell. While not directly related to encapsulating workcell hardware or generalizing hardware (although one could argue that it is an encapsulation of the gripping system), they are none-the-less crucial to the successful implementation of a factory of agile manufacturing workcells. Together, a better grasp on possible physical realizations of the generalized requirements can been deduced. 375 376 6.1 Flexible Parts Feeder Flexible feeders are generalized workcell components. Without the ability to feed a wide variety of parts with no change in physical hardware, the goal of a multi-purpose flexible manufacturing cell is difficult to achieve. It is therefore essential to fully understand the underlying principals in flexible feeders so that they may be effectively applied to the problem of generalized parts presentation. 6.1.1 Results After extensively testing the CWRU designed feeder system, results were generated in two areas: system throughput and statistical properties. System throughput dealt with determining the ability of the system to present parts to the workcell and with constructing a new method of specifying throughput as a function of the capabilities of feeder sub-systems. Statistical properties of the system were analyzed to determine underlying principals of the system so that a better prediction of system performance could be realized. 6.1.1.1 System Throughput Reporting results on the throughput of a flexible parts feeder requires a redefinition of the standard parameters used previously to qualify feeders. Unlike a bowl feeder, a typical flexible feeder is composed of several major components (a mechanism to present quasi-singulated parts, a vision system to determine the location of graspable parts, and a mechanism for removing those parts from the system). Simply stating a number as the throughput of the feeder does not indicate the relative speed of each subsystem or pinpoint possible bottlenecks. To report on the throughput of the feeder the following four different parameters were be used. 1. 2. 3. 4. Overall throughput Throughput of the parts presentation system Throughput of the vision system Throughput of the parts removal system 377 The overall throughput is the standard feeder parameter. This is a measure of how many parts are removed from the system in a certain amount of time. The throughput of the parts presentation system is a measure of the physical capability of the system to present singulated parts to the workcell. The throughput of the vision system is an indication of the speed of the system in locating candidate parts. The throughput of the part removal system is an indication of, physically, how fast the parts can be removed from the feeder. Examining these four values, as a group and individually, allows a greater understanding of the capabilities of the feeder than would be possible using just the overall system throughput. The system was tested with a variety of different parts to determine its throughput capabilities. The system was shown to feed parts at rates from 10 to over 30 parts per minute, depending on part size and geometry. It was found that, in general, the larger the part the lower the throughput. When feeding 3 8 inch and 5 16 inch hex nuts in the same feeder at the same time, it was found that the relative throughput of each individual part differed. Since there were an equal number of parts placed in the bin, it was expected that the average feed rate for each part would be the same. However, the throughput data showed otherwise. The 3 8 inch nuts fed at approximately 10 PPM while the 5 16 inch nuts fed at approximately 111 2 PPM. The relative static stability of each part was suggested as a possible explanation of this phenomenon. Therefore, a third test was conducted with the addition of a pause programmed into the controller to halt the system after each part was retrieved. This allowed the number of parts on the horizontal conveyor and the number of parts retrieved to be manually counted. From this test, it was clear that while approximately the same number of parts were being spilled onto the horizontal conveyor from the inclined conveyor, the percentages of parts fed during the test correlated well with the previous test. Therefore, the differences in the throughput of each size nut could be attributed to their relative stability. 378 The throughput of the system using four different angles (32°-38°) of the inclined conveyor were conducted. It was apparent from the data that small changes in the angle of the inclined conveyor had little impact on overall system throughput, but did affect the throughput of the conveyor sub-system. Since the limiting factor in overall system throughput (for this test) was the robot, this result is not surprising. It was also shown that simulating the use of a different robot (by operating the current robot at a greatly reduced speed, 10% of nominal) did affect the overall system throughput and robot sub-system throughput but did not affect the throughput of the vision or conveyor sub-systems. Lastly, an endurance test was performed to determine the ability of the system to feed parts for a long period of time without jamming or human intervention. A mixture of nuts and plastic sockets was fed. Total run time for the test was about 3 days 9 hours. During that time the system fed over 150,000 parts without intervention and demonstrated the ability to operate without jamming. In addition, a major improvement (about a 50% increase) in the throughput of the system was obtained by altering system parameters and control code. Several other interesting phenomena were discovered when analyzing the collected data. The amplitude of variation in individual part throughput when feeding multiple parts exhibited changes in size. These jumps in variation occur without warning and are a characteristic of a nonlinear system. It is important to understand the dynamics behind this behavior so that it may be minimized thereby making the system throughput more uniform. In addition to jump phenomena, interesting oscillations in part throughput were noticed. The variation of throughput for each part would change in both amplitude and phase relative to one another as the system operated. This is another indication that the system is nonlinear. 379 6.1.1.2 Statistical Properties The Poisson distribution is a common model of discrete arrival processes. Hence, it (shifted from 0 by the minimum part retrieval time) appeared a logical choice for modeling the overall system throughput. To test for a Poisson distribution, the fit of an exponential distribution to the part retrieval times was examined. It was clear that the exponential distribution fit the data, which can therefore be modeled by a Poisson process. However, after converting the data from time per part to parts per minute, the feeder and its sub-systems were modeled by a normal distribution, as described in the Central Limit Theorem. Secondly, it was shown that the average throughput and 1st order interarrival times could be determined from knowing the properties of the sub-systems of the feeder. However, the variances of the average throughput and 1st order interarrival times could not be determined from knowing those properties. Finally, by examining the correlation between the various feeder sub-systems, it was determined that the conveyor and vision sub-systems are inter-related while the robot is mostly independent of other sub-systems. This result is unique to the physical feeder design and the tested mode of operation (serial). It may not hold for all flexible feeders in all modes of operation. 6.1.2 Future Work Three main thrusts are needed in future work: hardware, testing, and theory. 6.1.2.1 Hardware Several hardware related areas of the current design require further work. First, the mounting hardware needs to be redesigned for ease of adjustment. Changing the angle of the current inclined conveyor is time consuming, difficult, and limited to angles between 30° and 40°. The second area for hardware improvement is in flexible feeding of rolling parts. Current flexible feeder technology (including the CWRU design) lacks the ability to easily feed rolling parts. Some initial work in experimenting with roughly 380 textured belts has shown promising results, but further testing and work is required. Another area for future work entails examining alternate methods of spilling parts onto the horizontal conveyor. The current inclined conveyor could be replaced by another means of transferring parts from a bulk hopper to an underlit conveyor. For example, a possible solution is to use a simple feeder bowl to scatter parts onto the horizontal conveyor. Lastly, changes in the design and layout of the system which could improve system throughput need to be examined. The use of multiple robots or a new vision system are examples. 6.1.2.2 Testing The system should be run for long periods of time while data is collected about system throughput. This data should be comprehensive, measuring all aspects of the system, including the time duration for all tasks of the feeding cycle (time to get a part into the vision window, time to determine the pose of a part, and time to retrieve the part), the total run time, the number of parts fed, and (when multiple parts were being fed at once) the type of part retrieved. To further aid in the examination of the data, the testing should generally establish a base (i.e. feed a certain type of part with a specific set of system parameters) and then alter various parts of the system (parameters, part fed, feeder used, etc.) while performing the same test. Using this methodology will allow the effect of each parameter to be seen. In general there are two classes of parameters that have an effect on throughput. The first is system parameters of which there are two varieties: those that are programmable and those that are fixed as a result of the physical design of the system. Parameters which are programmable, such as the motion of the conveyor belts or the angle of the inclined conveyor, are of highest importance because they are the variables that can be manipulated by an adaptive control scheme to increase and maximize system throughput during operation for any given part. All physical system parameters, such as the width of the conveyor or the kinematic configuration of the part manipulator, taken 381 as a set, define the ‘‘design space’’ of feeder systems. They are important in the design of new feeders, but cannot be used in the control of the system during operation. Hence, the only way to study the effects of the physical parameters of the system is to construct several different feeders and conduct the same tests with the same parts on each. Such studies are important because the physical design of a feeder may be better suited for feeding one type or style of parts over another. The second group of parameters that affect throughput are those of the parts being fed. Obviously, the throughput of the feeder is strongly dependent on the part which is currently being fed. Understanding how the part affects the system parameters is important for control. If the feeder behaves differently with one type of part versus another, then it is important to know which parameters the control system needs to manipulate in each case to maximize throughput. After testing the system, it will become clear which system parameters are most critical and have the most effect on throughput and which do not. From this, groups of programmable system parameters, the styles of parts to which they apply, and the physical design of feeders to which they apply will become perceivable. This multi-level parameterization of the system (programmable parameters associated with styles of parts and physical feeder designs) is another important step in ultimately realizing the goal of an intelligent feeder controller. For example, it would be important to know that parameters a, b, and c are important when feeding thin, flat parts while parameters d, e, and f are important when feeding more block-like, cube-shaped parts. Finally, long term testing needs to be performed. In an industrial setting, the feeder would be expected to run indefinitely with little intervention from the operator (other than loading parts). It is currently unknown how the feeder will perform over long periods of time. Questions such as the following need to be answered: Does the throughput remain constant, or does it begin to falter as the components of the system wear out? How robust is the system as its components begin to wear? The only way to 382 determine the answers to these question is to run the system for extended periods and observe the results. 6.1.2.3 Theory Further work needs to be done in examining the theoretical processes underlying the operation of the feeder. A thorough understanding of the feeding system cannot be obtained until the properties and processes governing the system are determined. The statistical distributions which describe the feeder and its sub-systems need to be determined. Currently, only the robot sub-system has been fitted to a distribution (normal) that can be explained physically. While the gamma distribution did fit the vision processing data rather well, the physical significance of that distribution and why it applies in this case is not known. Understanding the component distributions is a necessary part of understanding the complete feeding system. Another important step in system understanding is explaining the observable phenomena. For example, during initial testing, the throughput of the system was observed to oscillate over a wide range of values. It also was observed, when feeding several parts at once, that two of the parts’ throughputs displayed an anti-phasal relationship. Over time, this relationship varied. It is important to understand the underlying forces which are causing this phenomena to occur so that it can be controlled. As a second example, the throughput of the system during the extended test showed jumps in the variation of the throughput. In a real world setting, it would be advantageous to control and minimize this variation so that the system would perform more reliably and consistently. As the testing and data collection would proceed, other interesting and currently unknown phenomena would arise. Next, and perhaps the most ambitious goal, is to determine the throughput and operating parameters of the system given only a CAD model of the part. A design tool such as this would allow designers to quickly try many different component concepts and know immediately how well the design would perform in a flexible feeder. One could even 383 envision a system which could refine the design of a component based on its feedability. The user would give the design tool a candidate design and request that the design be refined to improve feedability. The system would then test and alter the design automatically. An added feature of the design tool could be the ability to determine the relative throughputs of individual part types when multiple parts are fed with one feeder. The output of such a program would be a CAD based model of the optimized part design, the anticipated throughput of the part in a feeder, and the initial settings for the parameters of the feeding system. Lastly, as the system operates, throughput results that are different than expected may be seen. Even if system models and optimization predict good nominal parameter settings, the randomness of part orientation in bulk storage and after conveyor advances will inevitably lead to variations in throughput. To deal with each of these situations, a control scheme which employed on-line tuning of programmable parameters would be beneficial. Such a system would ensure that the feeder was always operating at near optimal performance, even when the output of the system design tool produced less than ideal results. 6.1.3 Final Word The design, construction, and understanding of flexible feeding systems is obviously important to the ultimate goal of an agile manufacturing cell. This chapter of the dissertation laid the foundations toward that ultimate goal, however, much work needs to be done before it is reached. It has been clearly shown that flexible feeders are complex, nonlinear systems which cannot be understood using simple models. If the ultimate goal of throughput prediction is to be realized, further study is required. 6.2 System Offsets In contrast to the generalization of flexible feeders, system offsets are required to encapsulate product specific hardware so that agility is not hampered. In any given 384 assembly, it is often advantageous (and sometimes required) to use a dedicated, part specific mechanism to perform an action more quickly and more reliably than would be possible using the robot. In such a case, agility dictates that the dedicated equipment be self contained and readily exchangeable. System offsets, in the form of homogeneous coordinate transforms, allow a mathematical definition of the respective geometric configurations of the general workcell and the specialized hardware so that exchangeability is enabled. 6.2.1 Results There are many ways to specify offsets in a manufacturing workcell, however, if they are to encapsulate the hardware and enable agility they must be defined with care. After examining different methods of defining offsets, one method was chosen as the most appropriate for agile manufacturing. In this method all modular table locations and pallet locations are programmed per print and multiple tool offsets are used to account for any inaccuracies in system assembly. For each specific tool offset, two physical offsets are used. The first offset is used to align the tool coordinate frame with the coordinate system on the part or fixture, the second offset is used to translate from the quick change master plate mounted on the flange of the robot to the tool tip. Next, a procedure was developed and specified which allows the systematic teaching of offsets such that they allow encapsulated hardware to be used at any workcell without reteaching. The offsets themselves were separated into two groups: those describing the geometry of the workcell itself and those describing the geometry of specialized assembly hardware. This grouping enables offsets taught at one workcell to be usable at another. Lastly, a program was created to automate the calculation of the offsets. This program takes as input geometric information (as coordinate transforms) about the workcell and a part of the specialized assembly hardware and returns the corresponding tool offset. 385 To test the offsets, an example assembly was constructed using the CWRU workcell. One of the workstations with an Adept550 was designated the ‘‘setup’’ assembly station and the other workstation with an Adept550 was designated the ‘‘generic’’ assembly station. An example assembly containing three parts, a portion of the headcap from a commercially availably flashlight, was chosen as the test case. After teaching all workcell specific offsets with respect to both workcells, assembly specific offsets were determined at the setup workcell. Then, 100 assemblies were run through the setup workcell without failure. Next, the assembly hardware was transferred to the generic workcell and 100 more assemblies were performed. New tool offsets were not taught at the generic workcell, those determined at the setup cell were used. Several errors (all the same) were seen at the second workcell; however, they were most likely due to wear on the parts rather than errors in the offset. One of the most important results of Chapter 3 was the dependence of the offsets on the vision system. Vision allows the workcell to determine the location of encapsulated assembly hardware at system start-up. If the calibration between the camera and the robot’s WCS contains errors, then no matter how well the offsets are defined, the system will fail. It is then of the greatest importance to ensure that cameras are properly calibrated at each workcell to ensure successful system operation. 6.2.2 Future Work While promising results have been obtained thus far, much further testing needs to be performed. Several key areas need to be studied to improve the confidence in the applicability of the offset method presented here to any generic assembly cell. • • • • • Testing with SCARA robots other than an Adept550 Testing with non-SCARA robots Testing with a workcell where the modular table and pallet are not in the plane of the robot’s world coordinate system Testing with a workcell with a different geometric configuration Testing with other assemblies 386 Testing needs to be performed with a SCARA robot other than an Adept550. Since an Adept550 was used in both the setup and generic workcells, it is possible that small errors could have gone undetected due to the geometric similarities of the robots. Using the same arguments, testing the system at a generic workcell using a robot which does not have a SCARA geometry would also further validate the offsets. Any SCARA robot has a similar geometry that makes some of the offsets extraneous (i.e. the z axis of the robot is always pointing vertically, therefore, it is uncoupled from the x-y plane). Employing a robot that is kinematically different will further validate the offset method by examining the cases where the z axis is not always vertically oriented. Currently, the CWRU workcell is constructed such that the x-y plane of the modular table is always aligned with the x-y plane of the robot’s world coordinate system. To test the most general case, a generic workcell needs to be constructed in which the modular table is not mounted in the x-y plane of the robot. This would allow the testing of the full three degrees of rotation associated with the offsets to be exercised. While the previous suggestions for further testing deal with exercising the full complexities of the offsets, testing the system using a different geometric workcell configuration would verify the applicability of the offsets to any generic workstation. This is simply another variation of altering the physical system to test that the method of offset determination is valid. Lastly, testing the system using different assemblies would further test the interaction of the workcell specific and assembly specific offsets. Since the overall method of offsets presented in this chapter is completely dependent on this interaction, it is important that it be thoroughly tested. 6.2.3 Final Word Just as flexible parts feeding was an element of an agile manufacturing system, an equally important element is the layout, methods, and implementation of workcell offsets. Chapter 3 of the dissertation has defined an implementation of offsets and a 387 method of teaching those offsets such that reconfigurability is possible. However, further testing and refinement of the offsets and the procedures to determine the offsets needs to be accomplished before they can be used in all circumstances with confidence. 6.3 Design for Manufacture and Assembly While the design of the physical agile manufacturing workcell is important, an equally important part of a successful workcell is the design of the parts which are assembled in that cell. Designing parts for use in a flexible automation system can have profound results on the overall effectiveness of the system. Often, the root of many of the problems in a workcell can be traced back to the parts and assembly procedures being used. Design for manufacture and assembly (DFMA) is the process by which designs and assembly sequences and procedures are altered to increase the ease and effectiveness of automated assembly. 6.3.1 Results Guidelines have been developed to assist in the design of parts for assembly in a flexible manufacturing workcell. Three main areas of the workcell have been examined which benefit from better designed parts. These areas are assembly, feeding, and vision. Guidelines for automated assembly deal with altering parts design to enhance the reliability of the assembly process, the speed of the assembly process, and the expense required to construct product specific hardware and grippers. The seven guidelines dealing with assembly are the following: • • • • • • • Use snap fits rather than threads Minimize assembly forces Design generous tolerances Design for smooth gripping surfaces Design for vertical assembly Minimize components in the assembly Design parts and grippers concurrently When comparing the finding on assembly guidelines to previously published cases, there is good agreement. A good indication of the importance of the rules listed is 388 the fact that the rules were obtained by examining the system from a strictly physical standpoint. Others who have found the same or similar rules often approached the problem differently (economic justification, for example). Therefore it can be confidently stated that applying design rules for assembly to products can produce an all-around better situation, including assembly, system reliability, system throughput, and cost. Guidelines which are applicable to design for flexible feeding are concerned with features which increase the probability that a part on a feeder is usable to the system. They are also concerned with ensuring the parts and feeder will not damage each other. The following guidelines were determined: • • • • • Minimize the number of stable poses (ideally to 1) Design parts with stable orientations consistent with assembly Design parts to prevent tangling Design parts that will not be damaged by the feeder Design parts that will not damage the feeder In the previous literature, feeding guidelines were developed for manual feeding (picking parts from a hopper by hand) and for bowl feeders. Therefore, some of the guidelines which were discovered do not appear in previous rule sets. There is a large difference between designing a part to be fed using a bowl feeder as compared to a vision based flexible feeder. This shows the importance of applying a proper set of guidelines to any given design. It does not make sense to design a part to be easily fed and handled by a human if it is going to be assembled exclusively by automated equipment. Design guidelines to enhance the ability of a part to be seen by a vision system are concerned with adding features to the parts to enable easy and efficient part and pose determination. The following guidelines were determined: • • • Design parts with rotational invariance Design parts with asymmetry if rotationally variant Avoid translucent parts Previously, designing with regards to vision recognition had not been done. Important rules were discovered and simple but effective techniques to enhance the 389 ability of a part to be recognized by a binary vision system were developed. At times, these rules actually contradicted previous guidelines listed in the literature. Finally, the design guidelines determined and presented were used to redesign a handheld flashlight for assembly in a flexible assembly cell. While this was only an exercise, it shows the importance of applying current design guidelines to products to reduce the overall complexity of the design. In the original design (as purchased) there were a total of 14 parts. Through the application of design for manufacture, feeding, and vision principles, the total part count was reduced to 7. 6.3.2 Future Work While the guidelines determined thus far have been beneficial, the formulation of design guidelines needs to be an ongoing process. Current guidelines need to be employed in new designs and new guidelines need to be added as unique products and design goals are encountered. Secondly, metric could be devised which would be based on the guidelines, but allow a mathematical application of each guideline to a particular part design. This would be a required step before the guidelines could be applied in an automated manor, such as by a computer program. Lastly, the metric form of the guidelines could be incorporated into one of the many CAD based design tools currently available. In this case, they would be used to gauge the applicability of current designs to agile manufacturing as well as make suggestions for product improvements based on programmed guidelines. 6.3.3 Final Word As Chapter 2 and 3 emphasized the importance of system design, Chapter 4 has shown the importance of parts design in overall system functionality. While the design of the system and the parts should be separate (the system could have been running for years before the current part design was made), it is nonetheless crucial to the efficient 390 and reliable functioning of the workcell to properly design parts which are to be assembled in an agile manufacturing cell. 6.4 Gripper Design Chapter 5, like Chapter 4, was concerned with the design of a part of the workcell which would help to improve the throughput and reliability of the system. Specifically, the problem of designing grippers for use in an agile manufacturing workcell was examined. While grippers and fixtures have always been used in automation systems, an agile workcell places additional expectations and requirements on the grippers. In general an agile workcell is less accurate than a similarly hard-tooled cell. The accuracy and repeatability of the robot, the vision system, the robot-camera calibration, and the tool offsets are examples of additional sources of uncertainty in a flexible manufacturing cell. Properly designed grippers can help compensate for these unknowns. 6.4.1 Results First, gripper footprint, an important concept in the design of grippers for vision based, flexible parts feeders, was defined. Secondly, guidelines to aid gripper design were presented. These design guidelines were separated into three categories, guidelines to increase system throughput, guidelines to increase system reliability, and guidelines to save cost. Lastly, a review of the approximately 20 grippers designed for use in the CWRU and Eaton RAC workcells was presented. 6.4.1.1 Gripper Footprint The first result is the definition of the footprint of the gripper. This is an important quantity to understand because it directly affects the ability of the gripper to retrieve parts from a flexible parts feeder. The simple concept of the vertical projection of the gripper fingers is not applicable, as was shown by example. A final definition, which better describes the term, is the following: 391 The three dimensional space which must be free of obstructions for a gripper to successfully grasp a part. 6.4.1.2 Design Guidelines Next, gripper design guidelines were listed and explained. The first set of guidelines, listed below, were specifically directed toward increasing the throughput of the system. This was usually accomplished by increasing the sureness of the grasp which the gripper had on the part. • • • • • • • • Minimize interference measure Chamfer the exterior surfaces of gripper fingers Minimize weight Ensure a secure grasp of the part Avoid tool changes Grasp multiple parts with a single gripper Use multiple grippers on a single rotary wrist Design functionality into gripper jaws The next guidelines helped to increase the reliability of the system by encouraging gripper designs which work well in the presence of location uncertainty. The guidelines are listed below. • • • • • • • • • • Ensure a secure grasp of the part Minimize finger length Design necessary approach clearances Design chamfers on approach surfaces of gripper fingers Design gripper to align parts as they are grasped Design gripping surface to complement frictional coefficient Design fingers to encompass actuator mounting points Do not rely on parts added to the assembly for location Design lead-in chamfers on assembly grippers Design functionality in gripper jaws The last design guidelines sought to decrease the overall cost of the system by intelligent gripper design. The guidelines are listed below. • • • Use less expensive parallel or rotary-jaw actuators Use off-the-shelf components for designing gripping systems Favor designs which handle multiple parts with a single gripper rather than designs which use multiple grippers on a rotary wrist 392 6.4.1.3 Gripper Review The remainder of the chapter examined the design of approximately 20 grippers. The strengths and weaknesses of each design, the trade-offs made in each design, and the assembly actions performed by each gripper were examined. In addition to grippers designed for specific parts, the design of a generic rotary jaw gripper was presented. This gripper performs the unique task of retrieving parts from statically stable orientations on a flexible feeder and rotating them into favorable assembly orientations as the robot moves from the feeder to the assembly area. The gripper was designed to minimize size and weight for use on small, tabletop, assembly robots. 6.4.2 Future Work As with Chapter 4, the guidelines developed have proven useful in the design of grippers for use in flexible manufacturing cells. However, there are constantly new challenges in gripper design that often provide another unique guideline that may be applied to additional grippers. Therefore, the future work for gripper design guidelines needs to include the constant updating of the current guidelines with additional guidelines as they become known. In addition, the guidelines need to be added to current gripper design tools such that they become more automated. To accomplish this, the guidelines need to be transformed into metrics which can be analytically applied to candidate designs. By programming the metrics , which represent the knowledge contained in the guidelines, into a gripper design tool, the user could simply give the tool the description of the part or parts that are to be manipulated and the program would construct the best gripper design. 6.4.3 Final Word Gripper design is an often overlooked step in the design of a functional and reliable workcell. If the grippers are not capable of accurately, securely, and rapidly grasping parts and assembling them, then no amount of agility in the rest of the system 393 will make any difference. Following and respecting a simple set of rules and guidelines during the design of the grippers can have a profound affect on their overall effectiveness. 6.5 Summary This dissertation has presented 4 separate elements of a successful agile manufacturing workcell: flexible feeding, hardware encapsulation, parts design, and gripper design. There are many other required elements, software design for example, necessary for a completely functional system. If the ultimate goal of a general assembly cell is to be realized, all the elements are necessary. Work must continue to not only improve the procedures, methods, and designs presented here, but to also further develop additional elements of an agile workcell. 394 7 Appendix 7.1 7.2 7.3 Flexible Feeder 7.1.1 Underlit Conveyor Construction Procedure 7.1.2 Feeder Test Data Windowing Algorithm 7.1.3 Averaging Window Script 7.1.4 Feeder Distribution Plots Tool Offset Calculator Examples 7.2.1 Picking a Part from a Flexible Feeder 7.2.2 Placing a Part on a Fixture on a Modular Table 7.2.3 Placing a Part on a Fixture at an Angle Programs 7.3.1 V+ QC Calibration Program 7.3.2 Tool Offset Calculator 395 396 7.1 Flexible Feeder 7.1.1 Underlit Conveyor Construction Procedure First, the entire conveyor must be disassembled. This is a simple procedure given the modular construction employed by Dorner. The next step is to make the fluorescent light adapter plate. The top plate of the conveyor must then be shortened by 33 8 inches. New mounting holes must be drilled into the end of the shortened plate (1 4 of an inch from the end, 5 16 of an inch from each side). The side profile must then be cut for a length of 31 2 inches to a depth of 7 16 of an inch (leaving the side profile in place). They must also have tapped holes to hold the diffuser plate as well as cross holes for the fluorescent mounting plate. The upper T-nut for the twin-roller tail must then be trimmed to a length of 1 inch. The bracket for the end rollers must also have a section removed for mounting bracket clearance. Finally the diffuser plates must be machined. The parts are then ready to be assembled. 397 7.1.2 Feeder Test Data Windowing Algorithm Data collected during system operation was based on time per part. For further analysis, it was desired to have the data in a part per time format. To accomplish the conversion, a Matlab script (below) was written which read in the data, performed the conversion, then wrote out the new data. Input parameters included the name of the Matlab array (multi-dimensional) which contained the data, the size of the window (in seconds) over which the data was averaged, the step size factor (explained below), and the index of the column of the array which contained the timestamp for the test data. The algorithm functioned as follows. Refer to Figure 7-1 for point names listed below. First, the amount of time by which the averaging window was advanced between subsequent data (output) points was determined. This was accomplished by computing the minimum distance between any two data points in the original data then multiplying this number by the step size factor (generally set between 0.5 and 0.75). The step-size factor was used so that no data was skipped over due to an overly coarse step-size. Next, the ending time and the initial value of the end of leading data point in the window, point j, was determined. A loop was then setup to step the window over the data. After each step, data points added to or removed from the loop were determined, the number of points in the loop was computed (index j - index i), and the averages were computed. As an example, consider determining the system throughput at the instant shown in Figure 7-1. The number of total parts in the window is j - i, the size of the window is Wh-Wt, therefore the average system throughput would be (j − i) (W − W ). h ( t ) The resulting data point would be placed at the center time of the window, Wh − Wt ... 0 i-1 i Wt i+1 j-2 j-1 j Wh j+1 Figure 7-1: Averaging Window Moving Through the Data t 2. 398 7.1.3 Averaging Window Script function [output] = window_average(data_in,win_size,step_size_factor,offset) % window_average will compute the average of values of data which fall % within the width of the window. The data can be at non-uniform % intervals. The function operates by determining the smallest distance % between any two data points and then using some fractional amount of that % distance to determine the amount to move the window at each step. % % Usage: output = window_average(data_in,win_size,step_size_factor,offset) % where output is the resulting averaged data % data_in is the data to average % win_size is the size of the window in seconds % step_size_factor is the factor which is multiplied to the minimum % distance bewteen any two data points to detemine the % size of the step the window moves at each averaging point % offset is the offset into the input array which points to the % column comtaining the overall time data (1 or 2) % % % % % Set up some variables half_win_size = win_size / 2.0; top = 1; bottom = 1; counter = 1; offset=offset+1; % Determine the minimum distance between any two data points delta=min(data_in(2:length(data_in(:,1)),offset)-... data_in(1:length(data_in(:,1))-1,offset)); % Set up the bounds of the loop step_size = delta*step_size_factor; end_value = data_in(length(data_in(:,1)),offset)-win_size; % Determine the initital value of top while data_in(top,offset) <= win_size top = top + 1; end top = top - 1; % Move the window over the data for tail = 0:step_size:end_value head = tail+win_size; if data_in(bottom+1,offset) < tail bottom=bottom+1; end if data_in(top+1,offset) <= head top = top+1; end % Number of points in the window num_points = top - bottom; % Bottom + 1 bottom_p = bottom+1; % Compute the averages for this window output(counter,1) = (tail+half_win_size)/60.0; output(counter,2) = (num_points) / (win_size / 60); output(counter,3) = (num_points)/(sum(data_in(bottom_p:top,offset+2))/60); output(counter,4) = (num_points)/(sum(data_in(bottom_p:top,offset+3))/60); output(counter,5) = (num_points)/(sum(data_in(bottom_p:top,offset+4))/60); % Update the counter counter = counter + 1; end % All finished return 399 7.1.4 Feeder Distribution Plots 7.1.4.1 Overall System Throughput PDF: Plastic Sockets CDF: Plastic Sockets 100 Cumulative Probability F(x) Probability p(x) 0.08 0.06 0.04 0.02 0 0 1 2 3 4 Interarrival Time (seconds) 80 60 40 20 0 5 0 1 2 3 4 Interarrival Time (seconds) 5 Figure 7-2: PDF and CDF of the Plastic Disks 7.1.4.2 Conveyor System Throughput PDF: Mixed Nuts CDF: Mixed Nuts 100 Cumulative Probability F(x) 0.7 Probability p(x) 0.6 0.5 0.4 0.3 0.2 0.1 0 0 1 2 3 Conveyor Advance Time (seconds) 80 60 40 20 0 4 0 PDF: Plastic Sockets 100 Cumulative Probability F(x) Probability p(x) 4 CDF: Plastic Sockets 0.4 0.3 0.2 0.1 0 1 2 3 Conveyor Advance Time (seconds) 0 2 4 Conveyor Advance Time (seconds) 6 80 60 40 20 0 0 2 4 Conveyor Advance Time (seconds) Figure 7-3: PDF and CDF for Various Parts 6 400 7.1.4.3 Vision System Throughput PDF: Plastic Sockets CDF: Plastic Sockets 100 Cumulative Probability F(x) Probability p(x) 0.08 0.06 0.04 0.02 0 0 1 2 3 4 Vision Processing Time (seconds) 80 60 40 20 0 5 0 1 2 3 4 Vision Processing Time (seconds) 5 Figure 7-4: PDF of the Vision Distribution of the Plastic Sockets 7.1.4.4 Robot System Throughput PDF: Plastic Sockets CDF: Plastic Sockets 100 Cumulative Probability F(x) 0.035 Probability p(x) 0.03 0.025 0.02 0.015 0.01 0.005 0 1.2 1.4 1.6 1.8 2 2.2 Robot Motion Time (seconds) 2.4 80 60 40 20 0 1.2 1.4 1.6 1.8 2 2.2 Robot Motion Time (seconds) Figure 7-5: PDF and CDF of the Plastic Sockets 2.4 401 7.2 Tool Offset Calculator Examples Entering data into the program is a simple procedure. Each offset is entered as an x, y, z, yaw, pitch, and roll. For example, if it has been previously determined that the quick connector offset is 10 in the x, -5 in the y, 30 in the z, 65° of yaw, and no pitch or roll, then the input would be as follows. In the quick connector input section, in the x box, 10 would be entered, in the y box, -5, in the z box, 30, and in the yaw box, 65. The pitch and roll boxes may be left blank. A input box left blank is interpreted as a 0. Any units may be used for the translation part of the offset as long as they are consistent. If millimeters are used on for the input, then the output will be in millimeters. If inches are used for the inputs, then the output will be in inches. The rotation parts of the transforms need to be input as degrees. Using radians as the input units will cause the output to be invalid. The output of the program is in three forms. The first is three translations and three Euler angles. As shown, two tool offsets are displayed. The first offset is only rotation and the second offset is only translation. Equation (3.41) was used to generate the translational components given the final tool offset as a single transform. It is important that two offsets be used when entering the data into a robot controller or the incorrect offset will be used. The units of the translation part of the transform are the same as those used for data entry. The units of the rotation part of the transform are degrees. The V+ form of the transform is used to make it easy to insert the resulting offset into a V+ program. Simply copy the transform verbatim into the program. Because the translation part of the returned transform is relative to the rotated coordinate frame, the two transforms cannot be combined into one. Doing so will cause the incorrect offset to be used in the program with the end result being a possible robot crash. The units of the translation part of the transform are the same as those used for data entry. The units of the rotation part of the transform are degrees. 402 The final reporting of the resulting transform is in matrix form. This matrix is the complete transform, translation first then rotation. It is listed this way since altering a matrix transform by hand is not intuitive. Therefore reporting the transform as two part would only cause an unnecessary amount of data to be presented. The units of the translation part of the transform are the same as those used for data entry. Since the 3x3 rotation sub-matrix is the result of Sines and Cosines, there are no units associated with the rotation part. Three examples will be examined as a guide to determining offsets and using the program. The first example will be retrieving a part from a flexible parts feeder. The second example will be placing a part on a fixture on a modular table, and the third will be placing a part on a fixture at an angle. 7.2.1 Picking a Part from a Flexible Feeder Begin by placing an example part into the gripper on the robot. If the jaws of the gripper do not self-center the part (e.g. a flat plate, parallel jaw gripper), make sure the part is properly oriented in the jaws of the gripper. Now move (by hand or drive using the manual control pendant) the robot to a position from which it will retrieve the part. That is, the location at which the robot can close its gripper jaws and have a secure grasp of the part. Request that the robot’s controller display the current position of the robot’s flange. Make sure that the position returned is with the z axis of the robot pointed up. This usually requires that the flange coordinate frame fix offset, described in Section 3.7.2.6, be enabled before requesting the flange position. Also note the offset associated with the quick connector which is attached to the robot. This offset should have been determined when the quick connector was attached to the robot. After the location of the robot has been determined, carefully open the jaws of the gripper and move the robot to a location outside of the vision window. It is important to not disturb the part as the robot is being moved. The part should be in the same position as it was when the robot’s location was noted. Lastly, take a picture of the part with the vision system. The results 403 from the vision system should be a world location of the part. The actual location returned can be any point on the part, it should, however, be chosen such that it is easy to locate and identify with the vision system and returns a consistent result in the presence of noise and variability in the part image. Assume, as an example, the data displayed in Table 7-1 was determined. x y z yaw pitch roll Quick Connect Offset 0.25 -0.36 -35.61 1.284 0 0 Robot Flange Location -56.346 123.435 234.903 -125.98 0 0 Part Location on the Flex Feeder -58.48 119.043 98.354 -22.564 0 0 Table 7-1: Example Locations - Flexible Feeder Example Figure 7-6: Results of the Tool Offset Calculator After determining the data, the tool offset program may be used to determine the offset. Make sure the flex feeder mode of the program is selected and enter the data into the relevant sections of the program. Leave the pitch and roll sections of the input blank. If the flex feeder mode was not selected, then there will be no flex feeder part location input section. After inputting the data, click on the ‘‘Compute’’ button to calculate the 404 gripper transform. Figure 7-6 shows the results. If programming in V+, the transform may be copied directly into the program from the V+ Form section. When using the transform with another system use either the Euler form or the matrix form depending on the requirements of that particular system. 7.2.2 Placing a Part on a Fixture on a Modular Table Begin by instructing the robot to register the modular table into its world coordinate system. Note the location of the origin of the table in the world system. Next, instruct the robot to retrieve the part from wherever it is grasped. It is important to allow the robot to grasp the part itself so that the position of the part in the gripper jaw is not altered by the act of putting the part into the jaw by hand. Next drag the robot into the final position. Make sure the robot is in the location from which it can open its jaws and release the part. Request the robot’s controller to display the current location of the robot’s flange. This usually requires that the flange coordinate frame fix offset, described in Section 3.7.2.6, be enabled before requesting the flange position. Also note the offset associated with the quick connector which is attached to the robot. This offset set should have been determined when the quick connector was attached to the robot. Assume, as an example, the data displayed in Table 7-2 was determined. x y z yaw pitch roll Quick Connect Offset 0.25 -0.36 -35.61 1.284 0 0 Robot Flange Location Modular Table Frame Origin Table Relative Location 154.946 109.8 187.45 108.96 0 0 45.564 35.081 -40.354 -85.453 0 0 100.0 75.0 80.0 45.0 0 0 Table 7-2: Example Locations - Modular Table Example Note that the location of the fixture on the modular table is exact. This is because the location should be read from the mechanical drawing and entered per print. Any inaccuracies in the assembly of the table will be accounted for in the gripper transform being determined. 405 Make sure the modular table mode of the program is selected and enter the data into the relevant sections of the program. Leave the pitch and roll sections of the input blank. If the modular table mode was not selected, there will be no table frame origin location input section and the table relative position input section will be grayed out. After the data has been entered, press the ‘‘Calculate’’ button to compute the gripper transform. Figure 7-7 shows the results. If programming in V+, the transform may be copied directly into the program from the V+ Form section. When using the transform with another system use either the Euler form or the matrix form depending on the requirements of that particular system. Figure 7-7: Results of the Tool Offset Calculator 7.2.3 Placing a Part on a Fixture at an Angle An example of this type of action would be putting a cylindrical part into a hole which is at a 45° angle to the horizontal. Also assume that a SCARA type robot is being used, therefore it is assumed that a special gripper is used to hold the part at the proper insertion angle. If a 5 or 6 DOF robot was used, then the pitch term would appear in the flange location of the robot and in the table relative location term. The resulting tool 406 offset would then have no pitch term. Other then the introduction of a pitch term, this procedure is identical to the previous. Begin by instructing the robot to register the modular table into its world coordinate system. Note the location of the origin of the table in the world system. Next, instruct the robot to retrieve the part from wherever it is grasped. It is important to allow the robot to grasp the part itself so that the position of the part in the gripper jaw is not altered by the act of putting the part in to the jaw by hand. Next drag the robot into the final position. Make sure the robot is in the location from which it can open its jaws and release the part. Request the robot’s controller to display the current location of the robot’s flange. This usually requires that the flange coordinate frame fix offset, described in Section 3.7.2.6, be enabled before requesting the flange position. Also note the offset associated with the quick connector which is attached to the robot. This offset set should have been determined when the quick connector was attached to the robot. Assume, as an example, the data displayed in Table 7-3 was determined. x y z yaw pitch roll Quick Connect Offset 0.25 -0.36 -35.61 1.284 0 0 Robot Flange Location Modular Table Frame Origin Table Relative Location 154.946 109.8 187.45 108.96 0 0 45.564 35.081 -40.354 -85.453 0 0 100.0 75.0 80.0 45.0 45.0 0 Table 7-3: Example Locations - Modular Table Example Make sure the modular table mode of the program is selected and enter the data into the relevant sections of the program. Leave the pitch and roll sections of the input blank except for the 45° pitch in the table relative input section. If the modular table mode was not selected, there will be no table frame origin location input section and the table relative position input section will be grayed out. After the data has been entered, press the ‘‘Calculate’’ button to compute the gripper transform. Figure 7-8 shows the resulting gripper transform. Again, the transform may be copied directly into a V+ 407 program from the V+ Form section. When using the transform with another system use either the Euler form or the matrix form depending on the requirements of that particular system. Figure 7-8: Results of the Tool Offset Calculator 408 7.3 Programs 7.3.1 V+ QC Calibration Program This program was used to determine the translational portion of the quick connector offset as described in Chapter 3 of the dissertation. PROGRAM test() ; Make sure the correct robot is being used. DETACH () SELECT ROBOT = 1 ATTACH () ; Make sure no tool offsets are in place, then call in the ; tool offset which flips the coordinate system back to the ; positive z up orientation. Finally, call in the offset ; that is being calculated. Initially, this offset should ; be set to 0 TOOL NULL TOOL gripfix:qcfix ; Set the speed of the robot to something reasonable so that ; the indicator is not being banged around SPEED 25 ; Create a dummy position that is away from the indicator, ; but that is purely in either the x or y direction from the ; indicator. ; Move to this position to begin the testing. MOVE dummy BREAK ; Loop thru 8 different angles (multiples of 45 deg) and wait ; at each angle for the measurement to be recorded. Call the ; position of the indicator "temp" and only change the rotational ; part of the position for each point. Move to "dummy" between ; each movement to "temp". Also, move to dummy at the end of ; the process. FOR i = 1 TO 8 TYPE i MOVE temp[i] BREAK TIMER 1 = 0 WAIT TIMER(1) >= 3 MOVE dummy BREAK END END 409 7.3.2 Tool Offset Calculator /* PROGRAM NAME: tool_offset_calculator FILE NAME: tool_offset_calculator_cb.c AUTHOR: Greg Causey (gcc) DATE: 3/2/1998 DESCRIPTION: This file contains the routines that do all the work of the program. It contains the callback routines that are executed when buttons are pressed on the main form. See each individual routine for an explanation of that routine. REVISIONS: */ /* includes */ #include "forms.h" #include "tool_offset_calculator.h" #include #include #include /* Definition of pi incase the system doesn’t know about it. This is needed to compile the program on the suns. It is not needed on linux systems. */ /* #define PI 3.141592645 */ /* Global pointer to the base frame of the help window */ FD_Help_Window *global_pointer_to_the_help_window; /* global variable which indicates whether the flex feeder radio button is pressed. This is used in the compute values subroutine to determine if it necessary to read inputs from the table relative input section. */ int flex_feed=1; /* declaration of functions used to determine the offset */ void make_z_rot_matrix(double output[4][4],double input); void make_y_rot_matrix(double output[4][4],double input); void make_trans_matrix(double output[4][4],double inputx, double y, double z); void euler_parms_find(double input[4][4], double output[6]); void matrix_mulp(double input_1[4][4],double input_2[4][4], double output[4][4]); void homo_matrix_invert(double input[4][4],double output[4][4]); /* This is the callback attached to the compute button. This is the routine that actually calculates the tool offset given the input data. */ void compute_values(FL_OBJECT *ob, long data) { /* This sets the local pointer form to the main window of the program. This is used to allow acces to any part of the form. */ FD_Tool_Offset_Calculator *form=ob->u_vdata; /* First set up all the variables that will be needed. Offsets are stored internally in two forms. The first is what is referred to as the euler form. This consists of thre translational offsets (x, y, and z) and three rotational offsets (yaw, pitch, and roll). The z-y-z (or 3-2-3) euler angle set (as used by Adept robotics) is always used. The second form is a homogeneous coordinate matrix. This is 4x4 matrix. This is the form which is necessary if calculations are to be performed. The euler form is more "human friendly". Routines are used to convert between the two forms. The following is an explanation of the variables. The six member arrays are used to hold offsets in the euler angle form while the 4x4 arrays are used to hold offsets in the matrix form. qc: array holding the quick connector offset. table: array holding the location of the origin of the modular table or pallet in euler form. 410 table_rel: array holding the location of a fixture on a modular table or on a pallet relative to the origin of the table or pallet in euler form. flange: array holding the location of the flange of the robot in euler form. euler_form: array holding the euler angles and translational pieces of the resulting tool offset in euler form. matrix_out: 4x4 matrix used to store the resulting tool offset in matrix form. matrix_qc: 4x4 matrix used to store the quick connector offset in matrix form. matrix_table: 4x4 matrix used to store the location of the modular table or pallet in matrix form. matrix_flange: 4x4 matrix used to store the location of the flange of the robot in matrix form. matrix_table_rel: 4x4 matrix used to store the location of a fixture on a modular table or on a pallet realtive to the table or pallet origin in matrix form. temp_matrix_X: Five (where X is a number) 4x4 matrices used for temporary storage of homogeneous transforms. i,j: integer counters used for looping euler_form_char: array of character strings which hold an ascii version of the resulting euler form tool offset. Ascii is needed to display properly on the resulting program window. v_plus: two character strings used to hold the Adept V+ version of the euler form transform. This is used to display the resulting transform for easy entry into a V+ program. matrix_out_char: 4x4 matrix of character strings used to hold the matrix form of the resulting tool offset. */ double qc[6]; double table[6]; double flange[6]; double table_rel[6]; double euler_form[6]; double matrix_out[4][4]; double matrix_qc[4][4]; double matrix_table[4][4]; double matrix_flange[4][4]; double matrix_table_rel[4][4]; double temp_matrix_1[4][4]; double temp_matrix_2[4][4]; double temp_matrix_3[4][4]; double temp_matrix_4[4][4]; double temp_matrix_5[4][4]; int i,j; char euler_form_char[6][10]; char v_plus[2][70]; char matrix_out_char[4][4][10]; /* initialize the variables to 0.0 */ for(i=0;i<6;i++) { qc[i]=0.0; table[i]=0.0; flange[i]=0.0; table_rel[i]=0.0; euler_form[i]=0.0; if(i<4) { for(j=0;j<4;j++) { matrix_out[i][j] = 0.0; matrix_qc[i][j] = 0.0; matrix_table[i][j] = 0.0; matrix_flange[i][j] = 0.0; matrix_table_rel[i][j] = 0.0; temp_matrix_1[i][j] = 0.0; temp_matrix_2[i][j] = 0.0; temp_matrix_3[i][j] = 0.0; temp_matrix_4[i][j] = 0.0; temp_matrix_5[i][j] = 0.0; } } } /* Read in the data from the form. Use the atof command since the 411 data is stored in the form as ascii character strings. Store the data to the proper arrays. Data being read in is in euler form. Check weather the flex_feed radio button has been presses. If it has been pressed then set the table_rel array to 0. If it hasn’t been pressed then read in the table_rel data from the form. The names "qc_x, qc_y, ..." are names of input boxes on the main window and are defined in the file tool_offset_calculator.c */ qc[0] qc[1] qc[2] qc[3] qc[4] qc[5] = = = = = = atof(fl_get_input(form->qc_x)); atof(fl_get_input(form->qc_y)); atof(fl_get_input(form->qc_z)); atof(fl_get_input(form->qc_yaw)); atof(fl_get_input(form->qc_pitch)); atof(fl_get_input(form->qc_roll)); table[0] table[1] table[2] table[3] table[4] table[5] flange[0] flange[1] flange[2] flange[3] flange[4] flange[5] = = = = = = atof(fl_get_input(form->table_frame_x)); atof(fl_get_input(form->table_frame_y)); atof(fl_get_input(form->table_frame_z)); atof(fl_get_input(form->table_frame_yaw)); atof(fl_get_input(form->table_frame_pitch)); atof(fl_get_input(form->table_frame_roll)); = = = = = = atof(fl_get_input(form->flange_x)); atof(fl_get_input(form->flange_y)); atof(fl_get_input(form->flange_z)); atof(fl_get_input(form->flange_yaw)); atof(fl_get_input(form->flange_pitch)); atof(fl_get_input(form->flange_roll)); if(flex_feed) { table_rel[0] = table_rel[1] = table_rel[2] = table_rel[3] = table_rel[4] = table_rel[5] = } else { table_rel[0] = table_rel[1] = table_rel[2] = table_rel[3] = table_rel[4] = table_rel[5] = } atof(fl_get_input(form->table_relative_x)); atof(fl_get_input(form->table_relative_y)); atof(fl_get_input(form->table_relative_z)); atof(fl_get_input(form->table_relative_yaw)); atof(fl_get_input(form->table_relative_pitch)); atof(fl_get_input(form->table_relative_roll)); 0.0; 0.0; 0.0; 0.0; 0.0; 0.0; /* Convert all the angles to radians. Only the last three terms of each array are angle terms. The first three terms are translational terms. */ for(i=3;i<6;i++) { qc[i] *= PI/180.0; table[i] *= PI/180.0; flange[i] *= PI/180.0; table_rel[i] *= PI/180.0; } /* Compute the transform matrices. This section of the code converts the euler form offsets to matrix form. This is done by first creating a translational matrix and three rotational matrices (one for each euler angle) and then multiplying the matrices together. This was easier to code than a single command to go straight to the complete transform matrix since each rotational matrix is very basic and a function to multiply matrices is available. The matrix is constructed according to the following equation ([] denotes a 4x4 matrix). [complete transform] = [translation] X [yaw rotation] X [pitch rotation] X [roll rotation] */ /* Computer the quick connector matrix transform */ make_trans_matrix(temp_matrix_1,qc[0],qc[1],qc[2]); make_z_rot_matrix(temp_matrix_2,qc[3]); make_y_rot_matrix(temp_matrix_3,qc[4]); make_z_rot_matrix(temp_matrix_4,qc[5]); matrix_mulp(temp_matrix_1,temp_matrix_2,temp_matrix_5); matrix_mulp(temp_matrix_5,temp_matrix_3,temp_matrix_1); matrix_mulp(temp_matrix_1,temp_matrix_4,matrix_qc); 412 /* Compute the table frame origin location matrix transform */ make_trans_matrix(temp_matrix_1,table[0],table[1],table[2]); make_z_rot_matrix(temp_matrix_2,table[3]); make_y_rot_matrix(temp_matrix_3,table[4]); make_z_rot_matrix(temp_matrix_4,table[5]); matrix_mulp(temp_matrix_1,temp_matrix_2,temp_matrix_5); matrix_mulp(temp_matrix_5,temp_matrix_3,temp_matrix_1); matrix_mulp(temp_matrix_1,temp_matrix_4,matrix_table); /* Compute the robot flange location matrix transform */ make_trans_matrix(temp_matrix_1,flange[0],flange[1],flange[2]); make_z_rot_matrix(temp_matrix_2,flange[3]); make_y_rot_matrix(temp_matrix_3,flange[4]); make_z_rot_matrix(temp_matrix_4,flange[5]); matrix_mulp(temp_matrix_1,temp_matrix_2,temp_matrix_5); matrix_mulp(temp_matrix_5,temp_matrix_3,temp_matrix_1); matrix_mulp(temp_matrix_1,temp_matrix_4,matrix_flange); /* compute the table relative matrix transform */ make_trans_matrix(temp_matrix_1,table_rel[0],table_rel[1], table_rel[2]); make_z_rot_matrix(temp_matrix_2,table_rel[3]); make_y_rot_matrix(temp_matrix_3,table_rel[4]); make_z_rot_matrix(temp_matrix_4,table_rel[5]); matrix_mulp(temp_matrix_1,temp_matrix_2,temp_matrix_5); matrix_mulp(temp_matrix_5,temp_matrix_3,temp_matrix_1); matrix_mulp(temp_matrix_1,temp_matrix_4,matrix_table_rel); /* Now its time to determine the resulting quick connector offset. The offset is determined by solving the following matrix equation: [resulting offset] = Inverse[Quick Connect] X Inverse[Flange Location] X [Table Location] X [Table Relative Location] This is accomplished in two steps. First determine the inverse of the quick connector and flange transforms then multiply out the equation. The final action to perform is then to switch the order of the transform. A general homogeneous coordinate transform does translation then rotation. In this case, it is advantageous to specify the offset as a rotation then a translation. In this way, it is possible to easily "tweek" the offset by hand while the system is running to improve it. This is done by pre multiplying the final offset in matrix form by an transform composed of just the rotational part of the resulting matrix. NOTE: the final resulting offset matrix is the same this only affects the translational offsets are reported in euler form. */ /* Take the inverse of the quick connect and flange transforms */ homo_matrix_invert(matrix_qc,temp_matrix_1); homo_matrix_invert(matrix_flange,temp_matrix_2); /* Multiply of the matrix equation */ matrix_mulp(matrix_table,matrix_table_rel,temp_matrix_3); matrix_mulp(temp_matrix_2,temp_matrix_3,temp_matrix_4); matrix_mulp(temp_matrix_1,temp_matrix_4,matrix_out); /* Multiply the resulting matrix by the inverse of its rotation part */ homo_matrix_invert(matrix_out,temp_matrix_1); for(i=0;i<3;i++) temp_matrix_1[i][3] = 0.0; matrix_mulp(temp_matrix_1,matrix_out,temp_matrix_2); /* Determine the euler form of the resulting transform given the matrix form. */ euler_parms_find(matrix_out,euler_form); /* Convert the angles back to degrees */ euler_form[3] *= 180.0/PI; euler_form[4] *= 180.0/PI; euler_form[5] *= 180.0/PI; /* Convert the numerical data back to character strings for posting in the form */ /* Construct the euler angle form character array. Since this is 413 reported as first a rotation then a translation, use the translation values determined by multiplying the output matrix by its inverse rotation as explained above. The first three terms of the array are the rotational part, the second three terms are the translational part.*/ for(i=0;i<3;i++) { sprintf(euler_form_char[i],"%.3f",temp_matrix_2[i][3]); } for(i=3;i<6;i++) { sprintf(euler_form_char[i],"%.3f",euler_form[i]); } /* Construct the V+ transform output text strings. V+ uses a canned transform function of the form "TRANS(x,y,z,yaw,pitch,roll)". Since the rotation is desired before the translation, two such functions are called in series in a V+ program. Therefore report the two functions as they should appear in a program. The first function has only the rotational part, the other three terms are set to 0. The second function has only the translation part, the last three terms are set to 0. Use the strcat funtion to build up the output strings. */ strcpy(v_plus[0],"TRANS(0.000,0.000,0.000,"); strcpy(v_plus[1],"TRANS("); for(i=0;i<3;i++) { strcat(v_plus[0],euler_form_char[i+3]); if(i<2) strcat(v_plus[0],","); strcat(v_plus[1],euler_form_char[i]); if(i<2) strcat(v_plus[1],","); } strcat(v_plus[0],"):"); strcat(v_plus[1],",0.000,0.000,0.000)"); /* Construct the matrix form character array. This is simply the matrix determined from the orginal matrix equation. There is no reason to separate the translation and rotation parts of the transfrom since a transform in matrix form is difficult to "tweek" by hand. */ for(i=0;i<4;i++) { for(j=0;j<4;j++) { sprintf(matrix_out_char[i][j],"%.3f",matrix_out[i][j]); } } /* Write the data out to the form. This section writes all the data determined by the above procedures back out to the program’s display. As in the input section, the names refer to label location on the program’s window and are defined in the tool_offset_calculator.c file. */ /* This section fills out the matrix output */ fl_set_object_label(form->offset_matrix_11,matrix_out_char[0][0]); fl_set_object_label(form->offset_matrix_12,matrix_out_char[0][1]); fl_set_object_label(form->offset_matrix_13,matrix_out_char[0][2]); fl_set_object_label(form->offset_matrix_14,matrix_out_char[0][3]); fl_set_object_label(form->offset_matrix_21,matrix_out_char[1][0]); fl_set_object_label(form->offset_matrix_22,matrix_out_char[1][1]); fl_set_object_label(form->offset_matrix_23,matrix_out_char[1][2]); fl_set_object_label(form->offset_matrix_24,matrix_out_char[1][3]); fl_set_object_label(form->offset_matrix_31,matrix_out_char[2][0]); fl_set_object_label(form->offset_matrix_32,matrix_out_char[2][1]); fl_set_object_label(form->offset_matrix_33,matrix_out_char[2][2]); fl_set_object_label(form->offset_matrix_34,matrix_out_char[2][3]); fl_set_object_label(form->offset_matrix_41,matrix_out_char[3][0]); fl_set_object_label(form->offset_matrix_42,matrix_out_char[3][1]); fl_set_object_label(form->offset_matrix_43,matrix_out_char[3][2]); fl_set_object_label(form->offset_matrix_44,matrix_out_char[3][3]); /* This section fills out the V+ transform output */ fl_set_object_label(form->offset_vplus_1,v_plus[0]); fl_set_object_label(form->offset_vplus_2,v_plus[1]); /* This section fills out the euler form output */ fl_set_object_label(form->offset_yaw,euler_form_char[3]); fl_set_object_label(form->offset_pitch,euler_form_char[4]); fl_set_object_label(form->offset_roll,euler_form_char[5]); fl_set_object_label(form->offset_x,euler_form_char[0]); 414 fl_set_object_label(form->offset_y,euler_form_char[1]); fl_set_object_label(form->offset_z,euler_form_char[2]); /* End of the calculate callback */ } /* The following routines are used to construct the rotation and translation matrices, determine the euler parameters given a transform matrix, multiply transform matrices, and invert a transform matrix. In all the routines, the full matrix is always specified even if it contains mostly 0’s. This is done to ensure that errors will not creep into the problem from old data if the program is ran multiple time without being restarted. Since the matrices are passed by reference, there is no need to explicitly return anything. */ /* This routine constructs a 4x4 rotation matrix about the Z axis given an input angle. The translational part of the matrix is set to 0 since this is only a rotation matrix. The input is a single angle, in radians, which specifies the rotation. The output is a 4x4 matrix. */ void make_z_rot_matrix(double output[4][4],double input) { output[0][0]=cos(input); output[0][1]=(-sin(input)); output[0][2]=0.0; output[0][3]=0.0; output[1][0]=sin(input); output[1][1]=cos(input); output[1][2]=0.0; output[1][3]=0.0; output[2][0]=0.0; output[2][1]=0.0; output[2][2]=1.0; output[2][3]=0.0; output[3][0]=0.0; output[3][1]=0.0; output[3][2]=0.0; output[3][3]=1.0; } /* This routine constructs a 4x4 rotation matrix about the Y axis given an input angle. The translational part of the matrix is set to 0 since this is only a rotation matrix. The input is a single angle, in radians, which specifies the rotation. The output is a 4x4 matrix. */ void make_y_rot_matrix(double output[4][4],double input) { output[0][0]=cos(input); output[0][1]=0.0; output[0][2]=sin(input); output[0][3]=0.0; output[1][0]=0.0; output[1][1]=1.0; output[1][2]=0.0; output[1][3]=0.0; output[2][0]=(-sin(input)); output[2][1]=0.0; output[2][2]=cos(input); output[2][3]=0.0; output[3][0]=0.0; output[3][1]=0.0; output[3][2]=0.0; output[3][3]=1.0; } /* This routine constructs a part of the matrix is set a translation matrix. The quantities. The output is 4x4 translation matrix. The rotational to the idenity matrix since this is only input is three translational a 4x4 matrix. */ 415 void make_trans_matrix(double output[4][4],double x, double y, double z) { output[0][0]=1.0; output[0][1]=0.0; output[0][2]=0.0; output[0][3]=x; output[1][0]=0.0; output[1][1]=1.0; output[1][2]=0.0; output[1][3]=y; output[2][0]=0.0; output[2][1]=0.0; output[2][2]=1.0; output[2][3]=z; output[3][0]=0.0; output[3][1]=0.0; output[3][2]=0.0; output[3][3]=1.0; } /* This routine multiplies two matrices together. The matrices are hardcoded to be of sive 4x4 since that homgeneous transforms are always 4x4 matrices. */ void matrix_mulp(double input_1[4][4],double input_2[4][4], double output[4][4]) { /* Define the variables. sum: temporary variable to hold the intermediate calculations ctr1,ctr2,ctr3: integer counter variables */ double sum; int ctr1,ctr2,ctr3; /* Standard loop to multiply two matrices */ for(ctr1=0;ctr1<4;ctr1++) { for(ctr2=0;ctr2<4;ctr2++) { sum=0.0; for(ctr3=0;ctr3<4;ctr3++) { sum+=input_1[ctr1][ctr3]*input_2[ctr3][ctr2]; } output[ctr1][ctr2] = sum; } } } /* This routine determines the inverse of a 4x4 homogeneous transform matrix. Homogeneous transforms have a very simple inverse and it is easier to program this way rather than use a general matrix inversion routine. */ void homo_matrix_invert(double input[4][4],double output[4][4]) { /* Define the variables sum: temporary variable to hole the intermediate calculations ctr1,ctr2: integer counter variables */ double sum; int ctr1,ctr2; /* First invert the 3x3 rotational part of the matrix */ for(ctr1=0;ctr1<3;ctr1++) { for(ctr2=0;ctr2<3;ctr2++) { output[ctr1][ctr2]=input[ctr2][ctr1]; } } /* Next determine the translational part using the Transpose[rotational part] X [translatioanl part] formula. This is a standard 3x3 X 3x1 matrix multiplication. */ 416 for(ctr1=0;ctr1<3;ctr1++) { sum=0.0; for(ctr2=0;ctr2<3;ctr2++) { sum+=(-input[ctr2][3])*input[ctr2][ctr1]; } output[ctr1][3] = sum; } /* Finally set the bottom row to 0,0,0,1 */ for(ctr1=0;ctr1<3;ctr1++) { output[3][ctr1]=0.0; } output[3][3]=1.0; } /* This routine determines the euler form given a homogeneous transform matrix. This is by far the ugliest code in the program. Determining euler angles for a given matrix is not a trivial or easy thing to do. It is compounded by singularities in the euler angle set near pitch angles of nPI, by numerical inaccuracies in the transcendental and inverse transcendental finctions, uncertainity in the correct sign of the results and by the use of inverse trig functions. It is also difficult because there are usually multiple sets of euler angles that can arrive at the same final rotated state. While all the sets of euler angles which arrive at a given final state are equally valid, they sometimes don’t appear as expected which can cause the user to doubt the validity of the output. The translational part of the offset simply appears in the 4th column, 1st three rows of the matrix. It can be easily read off. Determining the angles is where the problems begin. Since the 3-2-3 euler angle set is used, the general form of the rotation part of the 4x4 matrix can be examined. Its can be seen that the 3rd row 3rd column position has the sole term Cos(pitch). From this term we can determine the pitch angle. However, since the arccos function is used, only a positive angle is returned. We cannot recover the sign information. It can then be seen that the 1st row 3rd column is equal to Cos(yaw) X Sin(pitch). Using the previously deterined pitch, the yaw can be determined. Again, however, no sign information is retrievable. Finally, upon examination, the 3rd row 1st column is equal to -(Cos(roll) X Sin(pitch)). This can be used to determine the roll, again with no sign. This leaves us with sixteen sets of three angles from which we must choose the correct one. The following proceedure is used to deterine the correct angles. First, check the pitch angle. If it is less than 0.1 then assume that the pitch is equal to 0. Next assume all the yaw + roll angle is lumpted into the yaw. Examining the matrix shows that the 1st row 1st column value is equal to Cos(yaw) after substituting pitch=roll=0. Use this to determine the yaw. Then use the 2nd row 1st column matrix value to test for the correct sign. It the incorrect sign was found, switch the sign of the yaw and return. If the pitch angle was found to be greater than 0.1 degrees than solve for all the angles. First determine the pitch angle and then determin candidate yaw and roll angles. Next using the 1:3, 2:3, 3:1, and 3:2 matrix values (where 1:3 is first row 3rd column) test for the correctness of the signs of the angles. If an error is found, change the sign of one of the angles and try again. It none of the eight combinations are correct, change the sign of the original pitch angle, recompute the yaw and roll angles and go through the trial proceedure again. Finally, before exiting, check to be sure that a 180, -pitch, -180 condition wasn’t found (if it was correct it). Several techniques are used throughout this routine to try and counter the problems discussed in the first paragraph. They are discussed below. Signularities: Since we are using the 3-2-3 euler angle set, there is a problem when the pitch (middle rotation) goes to multiples of nPI. Since most of the offsets have no pitch (ie, the second rotation is 0) this is constantly a problem. However, since all that is desired is the final offset, it is possible to lump all the 417 z rotation into either the yaw or roll. In this case, the rotation is moved into the yaw. A check must be made to determine if this is the case and an alternate section of code is used to determine the correct yaw. To combat problems of numerical inaccuricies in the trig functions, if the total pitch angle for the matrix is determined to be less than 0.1 degrees, it is set to 0. This is not a problem since this is a real physical system and a pitch angle of less than a tenth of a degree woundn;t make any difference to the operation of the system. Multiple sets of euler angles: Generally there is nothing that can be done to correct for recovering various sets of euler angles. There is no mathematical case for one set of angles being "more correct" than any other assuming that the final rotated state is the same. The one case which is dealt with is the case of only pitch and no yaw or roll. That is, the yaw=0, pitch, roll=0 case which can lead to the recovered euler angle set of yaw=180, -pitch, roll=-180. In this situation, the initial guess for the pitch had an incorrect sign, but because a yaw of 180 degrees points the y axis in the opposite direction, a negative pitch angle followed by a roll of -180 degrees will achieve the same final orientation. However, it is obvious that is is not the intended angle set to return. To fix this, a check is made to determine if the yaw and roll angles are 180 and -180 degrees respectively. If this is the case, then the yaw and roll angles are set to 0 and the sign of the pitch angle is switched. Numerical inaccuracies: Numerical inaccuracies occur because of the use of transcendental and inverse transcendental functions. When these functions are evaluated over certain ranges, the output is not well behaved. Another problem is the range of input values to the functions. For example, if an input to the arccos function is a bit over +1 or a bit under -1 a NAN output will result. Since a lot of matrix manipulation occurs in determining the final transform matrix, this is a possibility, especially when some of the initial angles of the input offsets are 0. Another example is examining two values which should be equal as a test. Because of the ill-behaved inverse functions, the two numbers might not be exactly equal and the test will fail even though it should be true. To fix this problem several steps are taken. First, to fix the greater than 1 error, a test is made before every arccos call to ensure the input value is between -1 an 1. If is is outside this range, it is set to -1 or 1 depending on whether it was greated than 1 or less than -1. To fix the equality problem the two numbers are subtracted and compared to a small value. If the result is less than the value, then equality is assumed. The program take as an input a 4x4 transform matrix. It returns a 6 element array which contains the x,y,z,yaw,pitch,roll values for the given matrix. */ void euler_parms_find(double input[4][4], double output[6]) { /* Declare some integer counter variables */ int h,i,j,k; /* Set the translational parts of the matrix to the output array */ output[0] = input[0][3]; output[1] = input[1][3]; output[2] = input[2][3]; /* Determine the initial pitch angle. Be sure to check that the input value to the acos function is between -1 an 1. The check will be explaned here but will appear alot in this routine. If the input is less than -1 or greater than 1 then check if the input is greater than 1. If so, then the arccos should be set to 0 (no need to actually call the acos function). Otherwise set the output equal to PI. If the input was between -1 and 1 then compute the acos */ if(-1.0>input[2][2]||input[2][2]>1.0) { if(input[2][2]>1.0) {output[4]=0.0;} else {output[4] = PI;}} else{output[4] = acos(input[2][2]);} /* If the pitch angle is less than 0.1 degrees then set it equal to 0. Now we need to do the special case calculations as discussed above. */ 418 if(output[4] <= (0.1)*PI/180.0) { /* Set the pitch and roll to 0 */ output[4] = 0.0; output[5] = 0.0; /* Determine the yaw. Make sure the input is between -1 and 1 */ if(-1.0>input[0][0]||input[0][0]>1.0) { if(input[0][0]>1.0) {output[3]=0.0;} else {output[3] = PI;}} else{output[3] = acos(input[0][0]);} /* Check the sign of the yaw. If it is correct, fine. Otherwise change the sign of the angle. */ if(sin(output[3])-input[1][0]>0.01){ output[3] *= -1.0; } /* The pitch was not less than 0.1 degree so determine all the angles. */ } else { /* Determine the yaw angle. Note here that the quanity which goes into the acos function is more complex. It still must be checked for the -1 to 1 range. */ if(-1.0>input[0][2]/sin(output[4])|| input[0][2]/sin(output[4])>1.0) { if(input[0][2]/sin(output[4])>1.0) {output[3]=0.0;} else {output[3]=PI;}} else {output[3]=acos(input[0][2]/sin(output[4]));} /* Determine the roll angle */ if(-1.0>input[2][0]/sin(output[4])|| input[2][0]/sin(output[4])>1.0) { if(input[2][0]/sin(output[4])>1.0) {output[5]=PI;} else {output[5]=0.0;}} else {output[5]=acos(-input[2][0]/sin(output[4]));} /* Just a check to set any really amall angle to 0. */ if(fabs(output[3]) < 0.000001) output[3] = 0.0; if(fabs(output[5]) < 0.000001) output[5] = 0.0; /* This loop checks for the correctness of the angles. It alters signs and rechecks until a valid set of angles are found. When that occurs use a goto statement to get out of all the loops. The three iner loops check for the sign of the angles. If all eight possible sign combinations fail, the outermost loop changes the sign of the pitch, recomputes a yaw and roll and tries again. The if check at the center of the loop checks the possible angles vs. the matrix values. */ for(h=0;h<2;h++){ for(i=0;i<2;i++){ for(j=0;j<2;j++){ for(k=0;k<2;k++){ if((fabs(cos(output[3])*sin(output[4]) -input[0][2])<0.01)&& (fabs(sin(output[3])*sin(output[4]) -input[1][2])<0.01)&& (fabs(-(cos(output[5])*sin(output[4])) -input[2][0])<0.01)&& (fabs(sin(output[5])*sin(output[4]) -input[2][1])<0.01)) { /* Found a set. Get out of here. */ goto end_of_angle_find_loop; /* Change the roll and try again */ } output[5] *= -1.0; /* Change the pitch and try again */ } output[4] *= -1.0; /* Change the yaw and try again */ } output[3] *= -1.0; } /*Nothing worked. Change the sign of the pitch, recompute the yaw and roll and try again. */ 419 output[4] *= -1.0; /* Find a new yaw angle */ if(-1.0>input[0][2]/sin(output[4])|| input[0][2]/sin(output[4])>1.0) { if(input[0][2]/sin(output[4])>1.0) {output[3]=0.0;} else {output[3]=PI;}} else {output[3]=acos(input[0][2]/sin(output[4]));} /* Find a new pitch angle */ if(-1.0>input[2][0]/sin(output[4])|| input[2][0]/sin(output[4])>1.0) { if(input[2][0]/sin(output[4])>1.0) {output[5]=0.0;} else {output[5]=PI;}} else {output[5]=acos(-input[2][0]/sin(output[4]));} if(fabs(output[3]) < 0.000001) output[3] = 0.0; if(fabs(output[5]) < 0.000001) output[5] = 0.0; } /* If we get here we must be done */ end_of_angle_find_loop: } /* Finally check for the 180, -pitch, -180 condition and correct before exiting. */ if(output[3]==output[5]) { if((fabs(fabs(output[3])-PI)<0.000001)) { output[3] = 0.0; output[5] = 0.0; output[4] = -output[4]; } } /* All done */ } 420 8 Bibliography [1] R. G. Lingus, ‘‘Enterprise Agility: Jazz in the Factory,’’ Industrial Engineering, Nov 1994, pp. 18. [2] L. O’Connor, ‘‘Agile Manufacturing in a Responsive Factory,’’ Mechanical Engineering, v. 116, n. 7, July 1994, pp. 54-57. [3] L. K. Schuch, ‘‘Keeping Up with Change,’’ Assembly, Nov-Dec 1995, pp. 34-36. [4] M. J. Tracy, et al., ‘‘Achieving Agile Manufacturing in the Automotive Industry,’’ Automotive Engineering, 1994, pp. 19-24. [5] R. Strobel and A. Johnson, ‘‘The Flexible Factory: Case Studies; Pocket Pagers in Lots of One,’’ IEEE Spectrum, Sept 1993, pp. 29-32. [6] T. E. Bell, ‘‘The Flexible Factory: Case Studies; Bicycles on a Personal Basis,’’ IEEE Spectrum, Sept 1993, pp. 32-35. [7] Adept Technology, Inc., ‘‘Rapid Deployment Automation,’’ San Jose, CA 95134, (408)-432-0888, http://www.adept.com. [8] J. J. Craig, ‘‘Simulation-Based Cell Design in AdeptRapid,’’ Proceedings of the 1997 IEEE International Conference on Robotics and Automation, Albuquerque, NM, April 1997, pp. 3214-3219 [9] Sony Electronics Inc., Factory Automation Divison, Orangeburg, NY 10692, USA, (914)-365-6000. [10] Seiko Instruments USA, Inc., ‘‘Agile Axes...Gotta Have ’em.,’’ Factory Automation Division, Torrance, CA 90505 USA, (310)-517-7850, http://www.seikorobots.com. [11] M. J. Tracy, et al., ‘‘Achieving Agile Manufacturing in the Automotive Industry,’’ Automotive Engineering, 1994, pp. 19-24. [12] P. M. Noaker, ‘‘The Search for Agile Manufacturing,’’ Manufacturing Engineering, Nov 1994, pp. 40-43. [13] L. O’Connor, ‘‘Agile Manufacturing in a Responsive Factory,’’ Mechanical Engineering, v. 116, n. 7, July 1994, pp. 54-57. [14] ‘‘Software makes manufacturing more agile,’’ American Machinist, April 1995, pp. 50. [15] G. Kaplan, ‘‘Manufacturing À La Carte: Agile Assembly Lines, Faster Development Cycles,’’ IEEE Spectrum, Sept 1993, pp. 25-27. [16] G. Kaplan, ‘‘The Flexible Factory: Case Studies,‘‘ IEEE Spectrum, Sept 1993, pp. 29. [17] S. L. Goldman and R. N. Nagel, ‘‘Management, Technology and Agility: The Emergence of a New Era in Manufacturing,’’ International Journal of 421 422 Technology Management, v. 8, n. 1 2 , 1993. [18] C. Ward, ‘‘What is Agility?’’ Industrial Engineering, Nov 1994, pp. 14-16. [19] GPAX, Columbus, OH 43228, (614)-851-0500, http://www.gpax.com. [20] Bosch Automation Group, Buchanan, MI 49107, (800)-32-BOSCH, http://www.boschautomation.com. [21] Lanco Assembly Systems, Inc., Westbrook, ME 04092, (207)-773-2060, http://www.lanco.net. [22] Salisbury Robotics, Inc., Cambridge, MA 02140, (617)-661-8847. [23] G. Boothroyd, ‘‘Product Design for Manufacture and Assembly,’’ Computer Aided Design, v. 26, n. 7, pp. 505-525. [24] R. Quinn, et al., ‘‘Design of an Agile Manufacturing Workcell for Light Mechanical Applications,’’ Proceedings of the 1996 IEEE International Conference on Robotics and Automation, Minneapolis, MN, April 1996, pp. 858-863. [25] Roger Quinn, et. al., ‘‘An Agile Manufacturing Workcell Design,’’ IIE Transactions on Design and Manufacturing, 1997, v. 29, pp. 901-909. [26] F. L. Merat, et al., ‘‘Advances in Agile Manufacturing,‘‘ Proceedings of the 1997 IEEE International Conference on Robotics and Automation, Albuquerque, NM, April 1997, pp. 1216-1222 [27] VMIC, Board Model VMIVME-5550, Huntsville, AL 35803, (800)-322-3616, http://www.vmic.com. [28] Assurance Technologies, Inc. (ATI), Garner, NC 27529, (919)-772-0115. [29] G. Boothroyd, et al., Automatic Assembly, New York: Marcel Dekker, Inc., 1982. [30] W. Schmidt, ‘‘Multiple Part Orientation Using a CVIM System,’’ Presented at the 1995 RIA Flexible Parts Feeding for Automated Handling and Assembly Workshop, Terrace Garden Hotel, Atlanta, GA, Oct 1995. [31] C. E. Bailey, ‘‘Strategies for Flexible Parts Feeding,’’ Presented at the 1995 RIA Flexible Parts Feeding for Automated Handling and Assembly Workshop, Terrace Garden Hotel, Atlanta, GA, Oct 1995. [32] Comtech, MRW Robo-Pot, Farmington Hills, MI 48333, (810)-476-3960. [33] W.F. Davis, ‘‘Centrifugal Feeders The Flexible Approach,’’ Presented at the 1994 RIA Flexible Parts Feeding for Automated Handling and Assembly Workshop, Westin Hotel, Cincinnati, OH, Oct 1994. [34] T. Nonaka, et al., ‘‘Photoelectric Control System for Parts Orientation,’’ U.S. Patent #4,333,558, 8 June 1982. [35] G. L. Jerry and W. L. Devlin, ‘‘Programmable Parts Feeder,’’ U.S. Patent 423 #4,608,646, 26 Aug 1986. [36] P. E. Kane, ‘‘Part Positioning Apparatus and Method,’’ U.S. Patent #4,712,974, 15 Dec 1987. [37] A. L. Dean, et al., ‘‘Programmable Parts Feeder,’’ U.S. Patent #4,619,356, 28 Oct 1986. [38] W. A. Mahoney and D. T. Marshell, ‘‘Tape and Reel Technology for Automatic Packaging and Feeding of Connectors,’’ GPAX International, Inc., Columbus, OH 43204, (614)-279-0500. [39] E. Phillips, ‘‘A decade of Trends in Flexible Parts Feeding,’’ Presented at the 1996 RIA Flexible Parts Feeding for Automated Handling and Assembly Workshop, Minneapolis Marriott City Center, Minneapolis, MN, Oct 1996. [40] Sony Electronics Inc., Factory Automation Divison, ‘‘Advanced Parts Orientation System: T-APOS,’’ Orangeburg, NY 10692, USA, (914)-365-6000. [41] K. Y. Goldberg, et al., ‘‘Generating Stochastic Plans for a Programmable Parts Feeder,’’ Proceeding of the 1991 IEEE International Conference on Robotics and Automation, Sacramento, CA, April 1991, pp. 352-359. [42] M. Brokowski, et al., ‘‘Curved Fences for Part Alignment,’’ Proceeding of the 1993 IEEE International Conference on Robotics and Automation, Atlanta, GA, May 1993, v. 3, pp. 467-473. [43] K. Yoneda, ‘‘Case Study: Bottle Unscrambler,’’ Presented at the 1994 RIA Flexible Parts Feeding for Automated Handling and Assembly Workshop, Westin Hotel, Cincinnati, OH, Oct 1994. [44] K. Tsuruyama, et al., ‘‘Apparatus for Aligning Vessels,’’ U.S. Patent #5,370,216, 6 Dec 1994. [45] D. Boehlke, ‘‘Smart Design for Flexible Feeding,’’ Machine Design, 12 Dec 1994. [46] Adept Technology Inc., ‘‘Adept FlexFeeder 250,’’ San Jose, CA 95134, (408)-4320888, http://www.adept.com/products/flex_feeder. [47] B. R. Carlisle, ‘‘Flexible Parts Feeder,’’ U.S. Patent #5,687,831, 18 Nov 1997. [48] S. J. Gordon, ‘‘Flexible Feeding of Small Parts,’’ Presented at the 1996 RIA Flexible Parts Feeding for Automated Handling and Assembly Workshop, Minneapolis Marriott City Center, Minneapolis, MN, Oct 1996. [49] T. Lynch, ‘‘Smart Parts Feeder Speeds Agile Assembly,’’ Design News, 14 Aug 1995. [50] S. J. Gordon, ‘‘Reconfigurable Parts Feeder,’’ U.S. Patent #5,314,055, 24 May 1994. [51] E.M. Ross. ‘‘Flexible Feeding Devices for Robotic Assembly,’’ Presented at the 1994 RIA Flexible Parts Feeding for Automated Handling and Assembly 424 Workshop, Westin Hotel, Cincinnati, OH, Oct 1994. [52] F. Büchi, ‘‘Flexible Parts Feeding for Pharmaceutical and Food Products,’’ Presented at the 1994 RIA Flexible Parts Feeding for Automated Handling and Assembly Workshop, Westin Hotel, Cincinnati, OH, Oct 1994. [53] D. Herndon, et al., ‘‘Robotically Controlled Component Feed Mechanism Visually Monitoring Part Orientation,’’ U.S. Patent #4,909,376, 20 March 1990. [54] D. Demarest and J. F. Blanch, ‘‘Needle Sorting Device,’’ U.S. Patent #5,727,668, 17 March 1998. [55] QC Modular Conveyor Systems, Amelia, HO 45102, (513)-753-6000. [56] Dorner, Hartland, WI 53029, (414)-367-7600, http://www.dorner.com. [57] Galil Motor Control, Inc., Mountain View, CA 94043, (800)-377-6329, http://www.galilmc.com. [58] Wind River, Alameda CA 94501, (510)-748-4100, http://www.windriver.com. [59] Rosc, Stamford, CT 06902, (800)-ROSCO-NY, http://www.rosco.com. [60] V+ Language Reference Guide Ver 11.0 (1993), Adept Technology Inc., San Jose, CA 95134, (408)-432-0888, http://www.adept.com. [61] Mirtich, Brian. et al. Estimating Pose Statistics for Robotic Part Feeders Proceeding of the 1996 IEEE International Conference on Robotics and Automation. 1140-1146. [62] V+ Language Reference Guide Ver 11.0 (1993), Adept Technology Inc., San Jose, CA 95134, (408)-432-0888, http://www.adept.com. [63] V+ Operating System Reference Guide Ver 11.0 (1993), Adept Technology Inc., San Jose, CA 95134, (408)-432-0888, http://www.adept.com. [64] J. L. Devore, Probability and Statistics for Engineering and the Sciences, Monterey California: Brooks/Cole, 1987. [65] A. W. Drake, Fundamentals of Applied Probability Theory, New York: McGrawHill Classic Textbook Reissue, 1988. [66] Parlec, Fairport, NY 14450, (800)-TOOL-USA, http://www.parlec.com. [67] V/V+ Programming I Course Manual (1993), Adept Technology Inc., San Jose, CA 95134, (408)-432-0888, http://www.adept.com. [68] S. Y. Nof, Handbook of Industrial Robotics, Chap 68: R. C. Smith and D. Nitsan. Modular Programmable Assembly Research, New York: John Wiley & Sons, 1985 [69] R. P. Paul, Robot Manipulators: Mathematics, Programming, and Control, Cambridge, MA: The MIT Press, 1981 425 [70] K. Takase, et al., ‘‘A Structured Approach to Robot Programming and Teaching,’’ IEEE Transactions on Systems, Man, and Cybernetics, v. SMC-11, n. 4, April 1981. [71] J. Billingsley, Robots and Automated Manufacture, Chap 5: M. A. Woollett, Automatic location editing of assembly robot programs, London: P. Peregrinus Ltd., 1985. [72] H. Zhuang, et al., ‘‘Simultaneous Robot/World and Tool/Flange Calibration by Solving Homogeneous Transformation Equations of the form AX = YB,’’ IEEE Transactions on Robotics and Automation, v. 10,n. 4, Aug 1994, pp. 549-554. [73] J. F. Quinet, ‘‘Calibration for Off-Line Programming Purpose and Its Expectation,’’ Industrial Robot, v. 22, n. 3, 1995, pp. 9-14. [74] M. S. Wilson, ‘‘Reliability and Flexibility - A mutually Exclusive Problem for Robotic Assembly?’’ IEEE Transactions on Robotics and Automation, v. 12, n. 2, April 1996, pp. 343-347. [75] J. J. Craig, Introduction to Robotics: Mechanics and Control, Reading , MA: Addison-Wesley, 1989. [76] D.F. Robinson and L.R. Foulds, Digraphs: Theory and Techniques, New York: Gordon and Breach Science Publishers, 1980. [77] H. Zhuang and Z. S. Roth, Camera-Aided Robot Calibration, Boca Raton: CRC Press, 1996. [78] David M. Sargent, A framework for computer vision in agile manufacturing, Master’s Thesis, Case Western Reserve University, 1996. [79] K. S. Fu, et al., Robotics: Control, Sensing, Vision, and Intelligence, New York: McGraw-Hill, 1987. [80] H. Asada and J. -J. E. Slotine, Robot Analysis and Control, New York: John Wiley and Sons, 1986. [81] T.C. Zhao and M. Overmars, ‘‘XForms - A GUI toolkit for X Windows Systems,’’ 1996, http://bragg.phys.uwm.edu/xforms. [82] General Electric, Manufacturing Services, Manufacturing Producibility Handbook, Schenectady, NY, USA, 1960. [83] Boothroyd Dewhurst, Inc. Wakefield, RI 02879, (401)-783-5840, http://www.dfma.com. [84] G. Boothroyd and W. Knight, ‘‘Manufacturing À La Carte: Efficiency: Design for assembly,’’ IEEE Spectrum. Sept 1993, pp. 51-53. [85] G. Boothroyd and P. Dewhurst, ‘‘Design for Assembly,’’ Dept of Mechanical Engineering, University of Massachusetts, Amhurst, MA, 01003. [86] G. Boothroyd and P. Dewhurst, Product Design for Assembly, Wakefield, RI: 426 Boothroyd Dewhurst, Inc., 1989. [87] P. Dewhurst, ‘‘Reducing Cost of Manufacturing through DFM,’’ Third International conference on Design for Manufacturability and Concurrent Engineering, sponsored by Management Roundtable, Miami Beach, FL, Dec 1989. [88] A.J. Scarr, et al., ‘‘Product Design for Robotic and Automated Assembly,’’ Proceedings of the 1986 IEEE International Conference on Robotics and Automation, San Francisco, CA, April 1986, pp. 796-802. [89] W. R. Sprague, ‘‘Design for Excellence: Building on the Foundation of DFMA,’’ NCR World Headquarters, Dayton, OH 45479, (513)-445-2789. [90] T. P. Pennino and J. Potechin, ‘‘Manufacturing À La Carte: Efficiency: Design for Manufacture,’’ IEEE Spectrum. Sept 1993, pp. 51-53. [91] G. Kim, et al., ‘‘A Shape Metric For Design-for-Assembly,’’ Proceeding of 1992 IEEE International Conference on Robotics and Automation, Nice, France, May 1992, pp. 968-973. [92] G. Kim, et al., ‘‘Construction Design Plans for DFA Redesign,’’ Proceeding of 1993 IEEE International Conference on Robotics and Automation, Atlanta, GA, May 1993, v. 3, pp. 312-318. [93] F. L. Merat, et al., ‘‘Advances in Agile Manufacturing,’’ Proceeding of 1997 IEEE International Conference on Robotics and Automation, Albuquerque, NM, April 1997, pp. 1216-1222, CAISR Technical Report Number TR96-104. [94] G. Causey, et al., ‘‘Design of a Flexible Parts Feeding System,’’ Proceeding of 1997 IEEE International Conference on Robotics and Automation, Albuquerque, NM, April 1997, pp. 1235-1240, CAISR Technical Report Number TR96-110 [95] G. Causey and R. D. Quinn, ‘‘Gripper Design Guidelines for Modular Manufacturing,’’ Proceeding of 1998 IEEE International Conference on Robotics and Automation, Leuven, Belgium, May 1998, pp. 1453-1458, CAISR Technical Report Number TR97-109 [96] G. G. Rogers, ‘‘Modular Production Systems: A Concurrent Manufacturing Philosophy,’’ Proceeding of 1993 IEEE International Conference on Robotics and Automation, Atlanta, GA, May 1993, v. 3, pp. 50-55. [97] A.J. Scarr, et al., ‘‘Product Design for Robotic and Automated Assembly,’’ Proceedings of the 1986 IEEE International Conference on Robotics and Automation, San Francisco, CA, April 1986, pp. 796-802. [98] Boothroyd Dewhurst, Inc., Design for Manufacture & Assembly/Concurrent Engineering On-Site Workshop, Wakefield, RI 02879, (410)-783-5840. [99] A. M. Al-Fahed and P. D. Panagiotopoulos, ‘‘A Linear Complementarity Approach to the Articulated Multifingered Friction Gripper,’’ Journal of Robotic Systems, v. 10, n. 6, 1993, pp. 871-887. 427 [100] V. Nguyen, ‘‘Constructing Force-Closure Grasps,’’ The International Journal of Robotic Research, v. 7, n. 3, June 1988, pp. 3-16 [101] R. G. Brown and R. C. Brost, ‘‘A 3-D Modular Gripper Design Tool,’’ Proceedings of the 1997 IEEE International Conference on Robotics and Automation, Albuquerque, NM, April 1997, pp. 2332-2339. [102] Q. Lin, et al., ‘‘A Quality Measure for Compliant Grasps,’’ Proceedings of the 1997 IEEE International Conference on Robotics and Automation, Albuquerque, NM, April 1997, pp. 86-92. [103] H. Bruyninckx, et al., ‘‘Generalized Stability of Compliant Grasps,’’ Proceedings of the 1998 IEEE International Conference on Robotics and Automation, Leuven, Belgium, May 1998, pp. 2396-2402. [104] Y. H. Liu, ‘‘Computing n-Finger Force Closure Grasps on Polygonal Objects,’’ Proceedings of the 1997 IEEE International Conference on Robotics and Automation, Albuquerque, NM, April 1997, pp. 2734-2739. [105] R. C. Brost, ‘‘Automatic Grasp Planning in the Presence of Uncertainty,’’ The International Journal of Robotics Research, v. 7, n. 1, Feb 1988, pp. 3-17. [106] R. C. Brost, ‘‘Dynamic Analysis of Planar Manipulation Tasks,’’ Proceedings of the 1992 IEEE International Conference on Robotics and Automation. Nice, France, May 1992, pp. 2247-2254. [107] S. H. Lee and M. R. Cutkosky, ‘‘Fixture Planning With Friction,’’ Transactions of the ASME: Journal of Engineering for Industry, v. 113, Aug 1991, pp. 320327. [108] R. C. Brost and R. R. Peters, ‘‘Automatic Design of 3-D Fixtures and Assembly Pallets,’’ Proceedings of the 1996 IEEE International Conference on Robotics and Automation. Minneapolis, MN, April 1996, pp. 495-502. [109] M. R. Cutkosky, ‘‘On Grasp Choice, Grasp Models, and the Design of Hands for Manufacturing Tasks,’’ IEEE Transactions on Robotics and Automation, v. 5, n. 3, June 1989, pp. 269-279. [110] D. E. Whitney, et al., ‘‘Designing Chamfers,’’ The International Journal of Robotic Research, v. 2, n. 4, Winter 1983, pp. 3-18. [111] V. B. Velasco, et al., ‘‘Computer-Assisted Gripper and Fixture Customization via Rapid Prototyping Technology,’’ 1997 International Association of Science and Technology for Development (IASTED) Conference on Robotics and Manufacturing, Cancun, Mexico, May 1997. [112] V. B. Velasco and W. S. Newman, ‘‘Computer-Assisted Gripper and Fixture Customization via Rapid Prototyping Technology,’’ Proceedings of the 1998 IEEE International Conference on Robotics and Automation. Leuven, Belgium, May 1998, pp. 3658-3664. [113] S. Walsh, ‘‘Gripper Design: Guidelines for Effective Results,’’ Manufacturing 428 Engineering. v.93, Nov 1984, pp. 53-55. [114] D. Peretz, ‘‘Finger Designs for Grippers,’’ Robotic’s World, Fall 1998. [115] B. Carisle, et al., ‘‘A Pivoting Gripper for Feeding Industrial Parts,’’ Proceedings of the 1994 IEEE International Conference on Robotics and Automation, San Diego, CA, May 1994, pp. 1650-1655.