Form:
The size of the robot cannot exceed 12 inches in length, 36 inches in width and 24 inches in height. The total weight of the robot should not exceed 10 pounds. Approximately 10.2 inches by 5 inches by 3.1 inches of storage space is required for holding the collected dirt, sugar and coffee grounds.
Construction:
The robot must be robustly constructed using reliable parts such as nuts and bolts and proper soldering. It’s worth noting that all components of the robot should be reserved for this course till the end of the semester. Using components that need to be removed from the robot after each lab session for other purposes is not allowed.
Cost:
The cost for designing, prototyping and constructing the finalized robot should not exceed the total budget of $800.
Aesthetics:
The appearance of the robot will be reflected in its grade.
Safety:
The robot should be safe to test and use, therefore it should not damage the items with which it interacts.
Setup:
The robot is designed to vacuum a staircase test bed that has 7 steps (Figure 2). Each stair is 50.5 inches long, 11.5 inches wide and 6.5 inches tall. The starting position will be decided by the instructors before the testing starts. It could be anywhere on the base floor or the second floor but not the middle of the staircase. Attachment, localization and calibration should be done within 1 minute.
Operation:
The robot must transverse all 7 steps and collect dirt from the ground autonomously. The robot should be able to reach the whole width of each step. Some coffee grounds of 0.5-1 mm diameter and powdered sugar of 50 m diameter may also be scattered on the staircase for collection. To earn full points, a minimum of 80% of the total volume of dirt needs to be collected. The robot should take some action to signify the termination of its mission. It’s required that it holds its place when the mission is completed.
The robot needs to be able to determine its position relative to the staircase.
Lateral and vertical drive systems need to work independently.
The robot should know when it has traversed the last step.
Battery powered: some space and mass needs to be reserved for loading the battery.
Dark mode: the robot uses this aesthetic template throughout
This diagram represents the functional architecture of our stair vacuum cleaner. This architecture is divided into four main functions: the initialization of the robot, the descent and the ascent of the stairs and the cleaning of the step. During initialization, the robot starts and thanks to the information received from its sensors positions itself at the edge of the first step. Once at the edge, it will have to determine using various sensors whether it is at the top of the stairwell or at the bottom, to then follow the corresponding mode of operation: if the robot is at the top, it will follow the sequence of instructions leading him down the stairs or if the robot is at the bottom, the instructions that make him climb the stairs. These actions, whether it goes up or down the stairs, are done under the control of position sensors and limit switches so that everything occurs correctly. Then the robot goes along the step while vacuuming. Here too position sensors are used so that it can know where he is, when to stop and above all not to fall off the step. Once at the end of the step, it detects if there is a next step, to know if it still has to go up or down a step (depending on the mode it is in) or if it has to stop here.
This system will use one microcontroller to control all of its motors and sensors. The lift system will use limit switches for sensing and motors for actuation. Similarly, the lateral drive system will use distance sensors to detect where all the walls are and actuate the motors connected to the wheels on the ground. The microcontroller will decide when to turn the vacuum on and off and when to actuate the sweeper motors.
Our robot will be a three-part robot, with one main part in the middle and two parts on both sides. This design will allow the robot to climb the stairs easily, with simple mechanisms, which makes its design simple and safe. The idea of having a big part in the middle with two small parts instead of having three equivalent parts was to have a center of mass known and always at the center of the robot. This should simplify its lifting.
The vacuum cleaner, the electronics such as the battery, the microcontroller will all be mounted inside the main part. The side parts will only carry some motors and wheels.
Full system design
The driving system will simply consist of wheels placed inside the robots. Two sets of wheels located inside the side parts will be for the robot to move perpendicular to the steps. One set of wheels inside the main part will be for moving along the steps. This combination of wheels was chosen because it allows to have a minimum of engine and wheels, while having good stability and varied displacements.
Knowing that our robot would need to traverse both forward and sideways in a very confined space on a stair, we knew we had to implement a ground and horizontal traversal system that would be able to move the robot forwards and sideways without needing to rotate the robot. Because of this, we were choosing between omni-wheels and mecanum wheels. We decided to go for 3 pairs of omni-wheels, two pairs aligned to drive the robot forwards, and one pair under the center pod to drive the robot sideways. This arrangement can be seen in figure below.
Driving system representation
Horizontal wheel arrangement
Omni-wheel variants
The lifting system is made of two different elements. The gantry plates are linking the different pods of the robot while leaving the possibility of sliding vertically relative to the others.
Rack and pinion will be used to control and power the system. We decided to use a plastic rack-and-pinion system powered by DC motors for lifting the front, center and rear pods. Compared to lead screws powered by stepper motors, this system is lighter and smaller, which allows for a more compact robot design. The difference can be seen in Figure. With carefully chosen gear diameters, the system can lift and lower the front and rear pods quickly to save more time for horizontal traversal. We believe that this was a helpful feature since we want to reduce the horizontal traversal speed for better vacuuming results.
We decided to use gantry plates to limit the movement of the front and rear pods to only 2 degrees-of-freedom (up, down). This helped ensure proper engagement between the gears and the racks and prevent slipping.
Lifting system representation
Lead Screw (Metal) vs Rack-and-Pinion (Plastic)
For the vacuum part of the robot, we decided very early on to buy a small handheld vacuum cleaner and modify it if necessary to put it in the robot, in order to be sure that this subsystem is functional. Making the vacuum ourselves would not have guaranteed optimal suction. The vacuums will be placed at the top of the central pod, as shown in figure 4.4.1, and two nozzles, connected by tubes to the vacuum cleaners, will be placed at each end of the robot.
We also eventually decided not to use rotating brushes to push dust towards the vacuum, as they did not seem to help much for the amount of complexity they added. Instead, having the robot go across each step twice and clean a different part of the step during each traversal proved to be effective, especially with the speed we could achieve.
Vacuum system representation
Vacuum Locations
The robot involved the use of two side sensors, one front sensor and two limit switches. The two side sensors help us move laterally during the vacuum phase. We used I2C IR sensors for this purpose as we had to maintain a decent amount of accuracy to clean the stairs with the maximum potential of our robot. The front sensor enabled us to meet an implicit requirement of our robot which is being able to determine whether to climb up or descend down. For this purpose, we did not require a highly accurate sensor and hence, we decided to use an ultrasonic sensor. We also used a couple of limit switches to reset the lift systems of our robot. This helps us come back at the same position after each step is climbed and enables us to iterate our lifting motion without difficulties over any number of steps required.
IR sensor
Ultrasonic sensor
Limit switch
Based on the compute power and amount of I/O we needed, we controlled our system using Teensy 4.1. This is a type of Arduino, so programming it was accessible to all team members without any special equipment or setup. The Teensy 4.1 is fast compared to other Arduinos, so it could respond to inputs and process information quickly. It also contains many I/O ports, which we needed in order to interface with 6 motors, IR sensors, 2 limit switches, and the vacuum control relay.
We used a 12V LiPo battery to power the motors on the robot. A separate 5V battery pack connected to the microcontroller through a switch was used to power the logic on the robot. Having separate power sources for the motors and logic made software testing easier, as we could power the logic and see how the microcontroller responded to inputs without having the robot move. We used three dual motor drivers to control the motors using the Teensy.
We used separate battery packs to power the vacuums so that the high power draw of the vacuums would be isolated from the rest of the system. This way, when the vacuums were turned on, they could not affect how fast the motors could go or how much torque they could apply.
Teensy 4.1 with a motor driver
Vacuum control relay