This is a project done by Elkhayat, Youssef (myself), a M.Sc student in the Data Engineering & Analytics program at the Technische Universität München, Deutschland. The project was done as part of the praktikum Sustainable Process Automation with the Chair of Information Systems and Business Process Management under the supervision and assistance of Mangler, Jürgen - Dr. rer. soc. oec..
The project was about controlling a mixer connected to a smart socket in a robotic system and showcasing real life scenarios of an orchestration between the robotic arm and the mixer through the BPMs (more on this later).
This was simply done through some APIs provided by a package called smart-socket-service. Check it out for more thorough explanation of what it can do and how it contributes to the project.
The robotic arm used in this project was the UR5e from Universal Robots. The control of the robotic arm was done through the API provided by Universal Robots and all of the programs of the cobot can be found under the programs directory.
The design of this task was split into two main functionalities that the robot had to perform:
- Intensity Process: The intensity process is defined in the intensity-process.xml file. It tells Cobi which intensity we want to operate our mixer on. The intensity value is set in the
dataelements
section of the XML file.
Here's the breakdown of the intensity process | ProcessIntensity.urp |
---|---|
GlobalToControl is the program that is responsible for Cobi to move from the global position to the control position. - Control is the position where Cobi is ready to operate the mixer's intensity (right above the mixer with some defined safe space). |
|
ControlReset is the program that is responsible for Cobi to reset the intensity of the mixer to zero, to always ensure the setting program to start from zero onwards. (of course this can be done in a more efficient way, to detect the current intensity and move from there accordingly, but for the limited time of the project, we have followed this approach). |
|
ControlSet is the program that is responsible for Cobi to set the intensity of the mixer based on the mixerintensity that we called earlier to set the intensity to the integer input number 6 of Cobi. |
|
ControlToGlobal is the program that is responsible for Cobi to move from the control position to the global position. |
- Mixing Process: The mixing process is defined in the mixing-process.xml file. It includes various endpoints that refer to the UR programs deployed somewhere safe and personally synced in the
programs/
directory.
Here's the breakdown of the mixing process | ProcessMixing.urp |
---|---|
GlobalToLocal program consists of the following: - Global is the safe position for Cobi, or referred to as the rest position. Often Cobi is moved to this position when the program is finished or when Cobi is not in use. - Local is the position where Cobi is ready to operate on the mixing for our specific installation. |
|
LocalPickupMixer is the program responsible for Cobi to move from the local position to the pick up position where it picks up the glass and approaches the mixer in a safe manner, where it is then ready to start mixing. |
|
This step is not part of the program but it helps with the visualization. Here the mixing started through API calls to the smart-socket-service for a certain period. | |
MixerPickupLocal is the program responsible to path back from the mixer ready position, to put back the glass at the pick up position (putdown position) and then proceeds to the local position. |
|
LocalToGlobal is the program that is responsible for Cobi to move from the local position to the global position. |
The BPMs are the Business Process Models that are used to orchestrate the robotic arm and the mixer. The BPMs are defined in the testsets directory. The BPMs are used to define the sequence of the tasks that the robotic arm and the mixer have to perform.
Thanks for checking out our project!!