Autonomous Smoothie Cafe
The Cafe started as the final project for my 20-person Intro to Robotics course, but I pursued it further with 8 other peers for the MassRobotics Form and Function competition.
The above video plays at 2x speed and shows the full smoothie-making process for a blackberry, blueberry, banana, and oat milk smoothie.
I was largely responsible for designing and building the blender robot with Alex Krakower!
Skills
CAD/Modular Design, Electronics Integration, Machining, Sub-team communication, Robotics Presentation
Design Goals
As a class, we set out to make an autonomous cafe that could simultaneously make up to two unique made-to-order smoothies at once. We needed to portion, process (cut or peel), and blend ingredients based on a customer's order. By the end of the semester, we had a few working components, but the overall system struggled with communication and consistency. For the competition, we rescoped the project to make just one smoothie.
​
-
We decided to have a "transport robot" that carries a smoothie cup and moves from station to station interacting with other robots as the smoothie gets made.
-
We used Airtable's web API to communicate between stations
-
Python and ROS2 were used to control all the robots. We leveraged iRobot's educational robot platform for robots that needed to move.
​
For the blending robot, we decided to use an immersion blender and settled on these design requirements:
​
-
The immersion blender needs to move vertically at least 12 cm to clear the top of the cup and reach the bottom
-
We need to control when the blender turns on and off
-
The robot must be able to rotate 180 degrees to reach the water bucket for cleaning
-
The transport robot should be able to line up with the blending robot
Prototype 1
Alex and I decided to use a rack and pinion to move the blender up and down. We considered using a linear actuator, but we were worried about it being able to lift the weight of the blender, and we also thought that making a custom rack for an off-the-shelf pinion would be a good learning experience!
To stabilize the mechanism, we used two solid plastic posts. The bushing assembly below interfaces with the posts. The brass bushings are press-fit into the waterjet aluminum piece. The slots allow us to make micro-adjustments to the rack in order to make sure it meshes with the pinion
A geared-down stepper motor is mounted at the top rather than the bottom of the posts to ensure the pinion is in contact with the rack across its whole range of motion.
This prototype mostly worked, but it had one big flaw! Because the rack is only supported at the very bottom, it could tilt away/towards the pinion. When the rack was at its lowest position, it would not mesh with the pinion.
The additional constraint on the rack ensured that it would mesh with the pinion throughout its range of motion! We could now consistently control the up and down motion of the blender. The last addition we made was a counterweight draped on the opposite side of the blender to generate more consistency for both up and down movements. This was extremely beneficial!
Prototype 2
After considering a few different ideas to solve the pinion meshing problem, we decided the most robust solution would be to support the rack from the top and the bottom to keep it locked against the pinion. This did mean that we'd have to double the height of the posts and the rack so that the supports would not interfere with the motor and pinion shaft. We quickly fabricated this version in the few days before our first demo.
Blender Control
Instead of attempting to use a physical mechanism to push and hold the button on the blender, we wanted to electrically turn it on with a Raspberry Pi. We explored using a relay integrated into the blender's circuit.
-
We first tested the relay with an LED to make sure we understood how it worked.
-
We opened the casing of the immersion blender and tried to understand how its circuit was structured and if we could use the DC relay.
-
The circuit used a bridge rectifier to convert the AC wall power before the switch, so the relay would work!
-
-
We were able to solder two 10-gage wires to the leads of the switch, which interfaced with the relay.
Challenges/Learnings
-
Learning how to use a relay for a high-power circuit was challenging, especially because we needed to learn how the blender circuit worked. We couldn't find any online documentation, but we were able to confer with experts.
-
When we were initially deciding on our rack and pinion design, we thought the meshing might be an issue, but we were hesitant to commit to the full-height rack because of weight and stability concerns. Looking back, we should have trusted our instincts and had a better plan to address this issue. Luckily we were able to pivot and still use most of the initial design.
-
It was tough to iterate quickly, especially when we were working with machined parts. By carefully creating a fabrication plan and acting quickly to order new parts, we were able to hit our deadline with our second prototype.
-
Working with an entire class on a project this big was very rewarding and also challenging. I think we each got a bit too caught up in our individual pieces of the puzzle, so when it came time to integrate into the rest of the system, we ran into some issues. It would be good to have important decision-making conversations with the whole class sooner.