Requirements
Functional Requirements
The System Shall…
- Collect Customer Input
- Analyse Customer Input to Identify Required Ingredients
- Inform Customer of Sandwich Assembly Status
- Deliver Nutrition Information
- Include Functionality to Move Arm to Home Position
- Include Functionality to Disable the Arm
- Include an Emergency Stop
- Check Tray Placement
- Localize Required Ingredients
- Pick Up Ingredients
- Localize Position of Sandwich
- Place Ingredients on Sandwich
- Estimate Weight of Ingredients in Sandwich
- Localize Position of Ingredients in Sandwich
- Check if Sandwich Assembly was Successful
- Deliver Assembled Sandwich
- Estimate Nutrition Information
- Inform Status of Kiosk to Operator
- Estimate Weight/Count of Ingredients in Stock
- Log Stock of Ingredients
- Store Ingredients
- Dispense Ingredients
- Keep Ingredients Fresh
- Open and Close the Kiosk Door
Performance Requirements
The System Will…
- Pick up each ingredient within 30% of the desired weight
- Place 70% of picked up ingredients within 3 cm from the sandwich boundary
- Estimate weight of ingredients in stock to the nearest 5 grams
- Successfully assemble sandwich (repeat above criteria) 60% of the time.
- Store enough ingredients for 7 sandwich assemblies
Non-Functional Requirements
- Easy to keep sanitary
- Portable dimensions
- Portable weight
- Kiosk status logging
- Kiosk status reporting
- Speed of operation
- Serviceability / Maintainability
- Safety
- Reliability
- Cost
- Aesthetics
- Accommodate electric limitations
- Accommodate dietary restrictions
Functional Architecture

Cyber-Physical Architecture

System Depiction and Description

The above figure is a mockup of what the SNAAK system will look like. It is a standalone kiosk, with a Franka Emika Panda mounted on it. On the work surface, there are ingredient bins and an “assembly area”, where the sandwich will be put together. Underneath these work surfaces are weighing scales. Additionally, the system will contain cameras mounted both overhead and on Franka’s end effector, as well as a tablet used to interact with SNAAK and place orders.
Sensing
The sensing subsystem has three main components: the weighing scales, the overhead RGBD camera, and the RGBD camera mounted on the arm. Weighing scales will be used both underneath the ingredient bins and underneath the sandwich assembly area. Under the ingredient bins, scales will be used to measure the current quantity of ingredients, and under the assembly area, the scales will be used to confirm the completion of a successful Sandwich.
The arm-mounted RGBD camera’s primary purpose is to identify the top slice of a specified ingredient and gather the XYZ coordinates of the said slice. These coordinates can then be used to manipulate this ingredient. On the other hand, the overhead camera’s primary use will be to, in conjunction with a weighing scale, determine whether or not a sandwich assembly was successful. Additionally, the overhead camera will be used to detect the tray and the base bread slice to calculate the X, Y, and Z coordinates for dropping the ingredients accurately.
Manipulation
The manipulation system is concerned with how to pick the ingredients from the bins and place them successfully in the assembly area. To accomplish this, we are using an impedance controller to control the force being exerted onto ingredients. This will be used in conjunction with pre-recorded trajectories to navigate the arm between the ingredient bins, the home position, and the assembly area. To pick up and place the ingredient, we will use a suction system. A depiction of the architecture of this system is shown below. The suction can be toggled on and off using a microcontroller, allowing for precise control over the ingredients.

Kiosk/Hardware
The kiosk system encapsulates the mechanical structure that will house all other components, and that will interact with the environment. This includes the mechanical design of the kiosk, the ingredient bins, and the user door. Also included is the mounting for the pneumatic end effector as well as the RGBD cameras. A visualization of what the kiosk structure will look like is shown in the figure at the top of the section.
Backend
The backend system is the “glue” that holds all the other systems together. It has two main components. First is a state machine. This state machine will allow the system to parse user input and direct the manipulation and sensing systems in the assembly of a sandwich. It will also provide error handling in case of faulty sandwich assemblies.
Additionally, the backend will use data from the weighing scales to track the amount of ingredients currently in stock and will contain the logic to determine when a restock of a given ingredient is needed.
User Interface
The primary purpose of the user interface is to take the customers sandwich order. Using a tablet mounted on the arm, the customer will be able to navigate an interface and select their desired sandwich ingredients, and the quantity of each ingredient they prefer. This same system will deliver nutritional information about their order to allow them to make informed decisions. Once the sandwich is ordered, the tablet will provide updates on the status of the sandwich creation process.
Along with customer interaction, the user interface will also provide a mechanism for staff to interact with SNAAK. Importantly, it will display the current stock of ingredients, and alert staff when a restock is needed. When this restock is required, the interface will provide a mechanism from which the kiosk can be placed in a restocking mode which will allow the staff to safely place new ingredients into the bins.