top of page
Search
  • Writer's pictureSatyam Patel

How Robots Are Changing How We Eat

Updated: Dec 14, 2022

The overwhelming majority of packaged food we buy nowadays is no longer handmade. Everything from chocolate bars, cakes, bread, and pasties are now manufactured in huge quantities to meet high demand.


With companies selling food across the country as well as the globe it makes sense for them to invest in automated food manufacturing facilities. Facilities like these are highly specialized and optimized to make certain types of food. Custom-built machines are used to maximize efficiency and produce products of better quality.


One industry that is yet to successfully undergo the automation transformation is food and hospitality. The remainder of this blog post focuses on the creation of an Emulate3D model based upon the recently shut down Zume Pizza takeaway set up as seen in the above video.


The majority of the below Emulate3D model was created using standard components allowing for a quick model build. As my ladder logic and controls experience is fairly limited I decided to build this model as a simulation model, using Transfer State Enabled components.


TSE Conveyors

Transfer State Enabled Conveyors were used in this model.

These conveyors adhere to a strict transfer protocol and should be used when you want:

  • One load per section

  • Careful hand-shaking between conveyor sections when managing transfers

  • Zero Contact accumulation

I used the Single-Zone Belt Conveyor from the QuickStart 2020 Carton Systems catalog. These TSE conveyors can be used alongside the new Robot Framework Controller, which is also transfer state enabled.


I edited the appearance of the conveyor using the paint tool, available in the arrange tab of the ribbon, I also reduced the height of the photoeye.


Pizza Load

Unsurprisingly there is no standard pizza load inside of Emulate3D so I had to make one myself. The pizza was created using 2 Cylinder Visuals, one for the base and one for the sauce.

I resized and recolored the base cylinder to make it look like a pizza base.

To turn it into a working load I then edited the following properties:

  • Body Type = Load

  • Type = Pizza

  • Delete On Floor Hit = False

  • Delete On Reset = False

The sauce Cylinder Visual was snapped on to the top face center of the pizza base. I then set the following properties:

  • Radius = 0.001 m

  • Color = IndianRed

  • New Name = Sauce

The sauce must always move with the pizza base so I reparented it to the base.



At certain points in the model the radius property of the sauce cylinder will be increased to mimic the addition and spreading of sauce.

From left to right.

Pizza with Sauce radius = 0.001 m

Pizza with Sauce radius = 0.051 m (Pizza after sauce has been dispensed)

Pizza with Sauce radius = 0.161 m (Pizza after sauce is spread by the delta robot)


Sauce Dispenser

The sauce dispenser was made using a combination of cylinder and sphere visuals. The dispenser itself has been parented to the sensor that triggers it, Sensor1.


The Sauce Dispenser hierarchy also contains a cylinder visual named SauceFlow, this is the red pizza sauce you can see flowing out of the nozzle and onto the pizza. Sensor1 has a visual reference, Sauce, which is connected to SauceFlow.

When Sensor1 is blocked, by a pizza, the OnBlocked event fires and performs the following:

  1. Turns the conveyor Off by setting DispatchOutEnabled = false.

  2. Turns Off the motor on the camera joint.

  3. Sets the SauceFlow Visible = true. (Makes it look like the sauce if flowing)

  4. Increments the Sauce on the Pizza by 0.005m

    1. Waits 0.1 seconds

    2. Iterates 10 times

  5. Sets the SauceFlow Visible = false. (Stops the sauce flowing effect)

  6. Turns the conveyor On by setting DispatchOutEnabled = true.


ABB 360 Delta Robot

Sensor Logic

This robot was marked up using CAD Is The Model and is controlled using the Robot Framework Controller. Specifically this robot is the ABB IRB 360 1-800 3D.


We want our sauce spreading delta robot to be triggered when the pizza is below it. To do this I used a similar set up and logic as the sauce dispenser.

In the image above you can see a sensor visual, this sensor has 3 purposes.

  1. To turn the conveyor On/Off using the DispatchOutEnabled property

  2. Trigger the delta to start its' program by setting the RunProgram = true

  3. Increment the radius of the Sauce visual to create the illusion of the sauce being spread

Robot Main Procedure

Now for the Delta robots MainProcedure. This is automatically run when the model is played.

The first thing we do is move the tool to the Home teachpoint using the move ptp widget.


I then created a forever loop to house the rest of the code. Using a forever loop will enable the sauce spreading logic to be run forever! Although we want our robot to spread sauce to infinity we only want it to do it when there is a pizza below it.

To do this I added a wait until "my Sensor.RunProgram" is true widget.

Once RunProgram is true the remaining code is executed.


The Move widgets region contains all the movements needed to spread the sauce.

You can see a few of the move to widgets used below. These work by telling the robot TCP to move to a particular teachpoint location.







To get a nice spreading effect I had to use numerous teachpoints!


ABB 6 Axis Robot

The robot being used is the ABB IRB2600 12-165. This robot was marked up using CAD Is The Model and will soon be available to download from the Package Manager.

We can make use of the Transfer State Enabled Robot Controller to control the robot. This will automatically pickup and move loads from the start conveyor to the end conveyor.



Conveyor Robot Tool

As this is a highly unique tool I had to make it from scratch. I decided I would use Emulate3D primitives to do this. The main parts of the tool are made using Wedge Visuals which have been resized so they are large enough to hold a pizza.


I then Merged and Converted To Aspects the below highlighted wedge. I then applied the Straight Conveyor Aspect to it and set up the leading and trialing edge and edited the motor speeds.

To get the tool to work I also edited some of the robot procedures


Pickup Procedure:

I controlled the Conveyor Motors Direction and State to get the pizza on the tool. To make sure the pizza didn't fall of it I then used the Stick Widget. This disables the physics and reparents it to the tool.


Dropoff Procedure:

Again I had to control the Conveyor Motor to unload the pizza. The Unstick widget reparents the pizza to the scene and enables its' physics. This allows the pizza to be moved by the conveyor aspect.


Camera Movements

The smooth camera pan was created by attaching the QuickStart camera to a box visual that had a prismatic joint. The joint was then controlled by a motor which was turned Off and then On again at certain stages of the model.


Another fun camera trick is to reparent the camera to the robot or robot tool:


49 views0 comments

Recent Posts

See All
bottom of page