"Donut Bot project by University of Waterloo" text

Sponsorship Donut Bot by University of Waterloo

Nathan Bong
Nathan Bong
PA Engineer

There are several reasons why some donuts may be deemed low-quality or unsatisfactory. Sometimes, it’s the result of public coffee shops being closed, understaffed, or sparsely stocked during late hours. Many customers in public spaces including airports, hospitals, universities, and other similar locations may also crave quality customized donuts at different times throughout the day.

To solve this issue, a team of engineering students from the University of Waterloo have worked together to make the DonutBot. The objective of the DonutBot is to decorate high-quality, customized donuts on-the-spot using a robotic arm with actuators and an automated controls system in collaboration with Progressive Automations. This customization process would be accomplished within a few minutes of creating an order via an iPad user interface.

What Actuators Were Used?

For this project, the students used two different actuators to accomplish the mechanism. The actuators choices they made, and reasons for these choices, are outlined below.

PA-18 Track Linear Actuator

The DonutBot would have a long horizontal distance to travel in order to move a robotic arm from one station to the next. Because of this, the PA-18-60-150 Track Linear Actuator was selected as it has the longest stroke length option out of all the actuators carried. Another benefit of the PA-18 is that it remains the same dimensions retracted or extended, allowing the DonutBot to be more space-efficient compared to a standard actuator that would physically extend to a longer length when cycling.

Linear actuator PA-18 Model by Progressive Automations


PA-07 Micro Linear Actuator

In order to pick up, dip and drop off a donut, vertical motion was required to move up and down. Because donuts are not heavy, a smaller sized actuator with lower force rating would be acceptable. The PA-07-4-5 Micro Linear Actuator was chosen for the vertical translation of the robotic arm as it met all the requirements. This model also had the additional benefit of decreasing the DonutBot's overall weight and bulk since it is the smallest actuator offered that still has 4 inches of stroke length.

Micro linear actuator PA 07 by Progressive Automations


How the DonutBot Was Built: Step by Step

Preliminary design stages

In the Fall of 2019, the engineering team started the process of designing the DonutBot's mechanical, electrical, and software components. Various CAD drawings and schematics allowed the team to complete manufacturing during the holiday break. Also, electrical components had been sourced and gathered to complete the preliminary testing of the DonutBot. Furthermore, the core of the iOS application for the iPad interface was implemented.

The team continued their work at the beginning of the new year by mounting servo-controlled claws onto the end of the PA-07-4-5 Micro Linear Actuator. The PA-07 model was used for vertical motion (Z-axis) to raise and lower the claws holding the donut which was being customized. To move the robotic arm horizontally (X-axis) from station to station, the PA-07 actuator along with the claws were mounted to the PA-18-60-150 Track Linear Actuator.

Wiring and programming

External limit switches were positioned at their corresponding stations and screwed in place. The two actuators, servo-controlled claws, and external limit switches were then wired to the Arduino board. A basic Arduino program was then created in order to be able to test the electrical components—the program would take commands via serial to open and close the claw and to move the robotic arm from one station to another.

An Arduino board was programmed to interface with the two actuators while a second Arduino board was programmed to interface with the servo and the limit switches. A de-bouncer to the code was also added to read noisy limit switch values so that all electrical components were functioning as the two Arduino programs received commands via serial.

Finalizing the project

In order to rotate the donut right side up, the team decided that the DonutBot was to drop donuts right above the edge of a plexiglass strip so that, as a donut falls down, it makes contact with the edge of the plexiglass strip just enough to cause it to turn 180°. Below the edge would be a plate onto which the upright donut falls onto.

The final component to be implemented was the ROS program, running on the Raspberry Pi. Upon completion of an order on the iPad, the donut order would be wirelessly transmitted to the Raspberry Pi. From here, the Raspberry Pi would be in charge of controlling the donut-decoration process by interfacing with the Arduino boards to ensure the donuts are decorated correctly.

Robotic arm with actuators and an automated controls system for decorating high-quality

Four stations were used for the final few tests. The vanilla frosting station, chocolate frosting station, rainbow sprinkles station, and Oreo crumbles station was selected. From a few rounds of testing, the DonutBot was fine-tuned to successfully decorate a donut autonomously upon receiving a donut order from the iPad interface.

The completed DonutBot:

Issues: How They Arose and Were Overcome

As with every project, there are moments of trial, error, and resolution throughout. The DonutBot team was no different; the experienced – and resolved – the below issues successfully.

Vacuum Suction vs Servo-Controlled Claw

During the earlier stages of designing, a significant issue that was encountered was using a vacuum suction force to pick up the donuts. The vacuum force that was needed to pick up donuts was also strong enough to suck in frosting and sprinkles into the vacuum tubing.

To address this issue, the team decided to switch the vacuum with a servo-controlled claw that would be capable of holding donuts without picking up any toppings. Since a vacuum was no longer being used, the power input required by the system was significantly reduced and thus CSA approval was no longer required.

Robotic Arm Issues

It was found that moving the arm to a station on its left worked as expected. However, moving the arm to a station on its right did not work properly. The robotic arm would continue to move to the right, all the way to the drop off location, even after reaching its destination station. This was due to the Arduino not detecting the triggered limit switch. After performing a software and hardware debugging, it was found that the limit switch values would not only depend on whether they were pressed, but they would also depend on the direction of motion of the X-actuator.

Since all electrical components were wired up to the same Arduino, the current drawn by the X-actuator was too large to handle on one Arduino board. Consequently, this would cause the limit switch values to be altered from their true states, depending on the direction of motion. The solution was to use two Arduino boards—one to interface with the two actuators and another to interface with the servo and the external limit switches. After implementing this change and adding in a de-bouncer to the code to read noisy limit switch values, all electrical components were functioning as expected.


In conclusion, the DonutBot by the University of Waterloo’s engineering team was completed with the ability to take orders via an iPad interface to customize instant high-quality donuts using a robotic arm and an automated controls system. The DonutBot was showcased by the team at the Mechatronics Engineering's Capstone Design Symposium. Aside from the addition of a casing around the robot (this may have prevented viewers from being able to clearly see the workings of the DonutBot during Symposium), all the team's objectives were met. Well done to all involved – we are delighted to sponsor such an innovative product!