XINGHAO HUANG
  • About Me
  • Model world
  • Projects
  • CAD WORKS

Type 00 Delta Robot with Vacuum Gripper and "DeltaScope" LabView Control System
Xinghao Huang, September 2019

Introduction

As a part of robot family, parallel robot manipulator, commonly known as delta robot, uses free-rotating linkage system driven by motors to control the position of a single platform. Comparing to the conventional robotic arm, delta robot is faster, durable, and more efficient. It can achieve great accuracy in relatively 2D movement if using camera and vision technology, thus it is widely used in packaging, sorting, and transporting on the production line. This project explored the basic kinematics, control interface, visual analysis with camera, and possible industrial usage of the delta robot system. ​

Theory

Unlike the inverse kinematics used in conventional robotic arm. Delta robot doesn't have too much matrix calculation for its basic control. Most of the math can be done by trigonometry. The arm and linkage are basically two circles in 2D and have two solutions (you need to select one that fit). By calculating the position from one arm, the rest two can be achieve by using a rotational matrix. The tutorial from the Trossen Robotics Community provided great help for my project: ​http://forums.trossenrobotics.com/tutorials/introduction-129/delta-robot-kinematics-3276/

I used its method and calculate the inverse kinematics again and wrote my code. It also has its own code. The code was uploaded to Arduino. Once receives the XYZ values for position, Arduino will calculate the angles that servos need to rotate. 
Picture
ABB's Industrial Delta Robot
Picture
Image from Trossen Robotic Community
Picture
From Position XYZ to Angle Theta 123 Calculation Sketches

Design

Type 00 was a quick project for me. The frame consists of 500 mm and 300 mm 2020-size aluminum extrusions. In order to save budget, three HS-422 hobby servos used in the previous MK1 were used in Type 00 to drive the arms and linkages. The arms and upper, lower plates are designed in SolidWorks and 3D printed out. You can buy those rotational joints and end-threaded rods for linkages on Amazon. 

To pick up loads using the vacuum gripper, I brought a mini suction cup (Robotshop), 12V mini pump, a solenoid valve with proper tubes and fittings. When it wants to pick up, valve closes and pump drain the air out from the tube. When it wants to release the load, simply open the valve so the air there is no pressure difference to hold the load. 
Picture
Picture
Picture

Assembly

Picture
Picture
Picture

Coordinate Calibration

In, progress...

System Test and "DeltaScope" Program

Obviously, Arduino's serial input is the easiest way to test Type 00. -->

Later I kinda wanted to use what I learned in ME 147 LabView and built a GUI control in LabView, so I made my own control software "DeltaScope". To do this, I spent a while to make a couple methods to do LabView-Arduino serial communication. The auto-connection program can use this tutorial's code. LabView sends XYZ coordinates and Arduino calculates angles and moves to that position. My first try was just converting decimals XYZ to string and writing them one by one to Arduino's serial port. The trick thing was timing. Since Arduino's response was very slow (about 20ms, even if I put serialTimeout()), sometimes LabView was sending Y and Arduino was still waiting for X when time difference accumulated. So this method was not good. 
Picture
Picture

The second method used what I called "string code." Using "concatenate string" function, I combined XYZ values and a character command into one string and write to Arduino, which then decoded this string using the data conversion method we learned in C++ (if char >= 'a' && char <= 'z'). I also added a function that can open and close pump and valve so users now can pick up loads from LabView, or they can use "Cycle Mode" (shown in video below). This time I didn't need to worry about delays, but I found when converting decimal to string, the string can only contain decimal's integer part due to its size. So, I still didn't solve the problem (maybe it's time to switch to Pi)
Picture
Picture

Next Step

  • Change the servo to BLDC
  • Change Arduino to Raspberry Pi
  • Add vision analysis (National Instrument only has limited trial for its vision programs)
Powered by Create your own unique website with customizable templates.
  • About Me
  • Model world
  • Projects
  • CAD WORKS