An autonomous waiter robot that can serve food using interchangeable function modules.
For my final project for Principles of Integrated Engineering (PIE), I wanted to create a complex mechanical system to practice my design, prototyping, and fabrication skills. Along with four other team members, I ideated based on group and personal learning goals; eventually deciding to make a Waiter Robot that would be able to autonomously navigate a space using Apriltags and elegantly change functions with mechanically isolated modules. Over the next six weeks, which we divided into three sprints, we created a final prototype which we affectionately named Walter:
Walter is capable of a couple of things that seem simple, but present complex engineering challenges. Walter can…
Drive across indoor surfaces with ease and turn about a point.
Carry and extend an autonomously actuated tray to deliver a plate of food weighing up to 5lb, and sense when it’s been removed.
Swap between function modules seamlessly.
And more!
Walter has three distinct mechanical systems: the drivetrain, module interfacing system, and four-bar tray module. I designed, prototyped, and fabricated the drivetrain and the module interfacing system.
The drivetrain consists of two centered drive wheels mounted to a 2ft x 2ft chassis made out of 1010 aluminum extrusion. Two caster wheels are mounted to either side to stabilize the chassis while still allowing the robot to be driven with only two powered wheels.
The powered wheels are mounted to the chassis with two .25in acrylic plates, between which the motion hardware was housed. The wheels themselves are driven by a Yellowjacket planetary DC motor, reduced by another 1:3 with cogged belts and pulleys, in order to move the weight of the full robot.
When designing the chassis and drivetrain, I focused on durability and adaptability. I made the frame out of 1010 aluminum extrusion because we had enough of it on hand, and it would be easy to modify if our designs changed. In addition, if braced correctly, a basic square frame can support well over 50lb. With this in mind, I designed and assembled the frame with a double-wide cross brace in the middle and .25in acrylic corner brackets.
Next, the robot needed a body. I designed a shell to mount to the chassis with t-nuts out of .5in plywood panels. I faricated the panels using some woodworking equipment, and then fastened the panels to eachother using a nail gun. This shell was built with aesthetics and the function of the future tray module in mind.
Walter uses a modular interfacing system to allow for seamless switching between different modules, including the serving tray module and other potential features. There are two main parts of the interfacing system: the module housing unit mounted to the top of the robot shell, and the module receiver, which interlocks with the module housing.
The module housing is 3D-printed with ABS, and uses a stepper motor connected to a series of gears, the end of which protrudes into the interior of the housing.
Each module has a module receiver, a 3D printed piece designed to interlock with the module housing. To insert a module, the receiver can be easily slid into the housing, which allows the gear on the receiver to mesh with the gear on the housing, allowing for the transfer of rotational energy. A key on the receiver can then be turned to lock the module into place. When the stepper motor is actuated, the gears will transfer rotational energy between the housing and the receiver, and into a vertical shaft in the receiver, which the module can then use.
To further explain how Walter's mechanical systems work together, this diagram illustrates the flow of mechanical energy across all systems:
When breaking down the mechanical design challenge of a modular interfacing system, I thought about it in terms of two problems: selectively restricting movement and transferring power intermittently. My solution to these two problems was inspired by the functional geometry of a dovetail joint, which restricts movement along all but one axis, and the elegance of more complicated geared transmission systems.
Through this project, I learned so much about project scoping, mechanical design, tolerancing, and teaming.
My most important lesson learned was to anticipate changes in project goals. My team set out to accomplish something ambitious for our project timeline. Through recognizing that, we also recognized that we would have to make compromises along the way to meet deadlines and adapt to problems. This planning really saved the team's morale when things went wrong, since we had already mapped out alternatives.
A technical lesson I learned was to regularly challenge my assumptions about the best way to solve a problem. For example, there are several small aspects of the final mechanical design that I would change in retrospect. If I challenged my initial assumptions earlier in the design process, I might have been able to find better solutions.
The full project website can be found here.