System Design Description



Initial CAD Mockup

As can be seen in the figure the overall design has three main sections. The front slider, the rear slider and the main body. Unlike a full train design, the front slider and rear slider only enable hoisting and pulling the main body and don't do any other function. The rear slider has actuated wheels to enable climbing up and down whereas the front slider only has castor wheels. 

The main body in the center houses all the subsystems of the robot. It contains the vacuum itself, the dirt storage container and also its power supply. It also has all the sensors, motor controllers and required compute. The battery also is in the main body along with its power distribution board. The user interface will also be mounted onto the main body. 

The figure shows a basic block diagram of this design with all the three sections, the wheels and the relative proportion. The final dimensions of the design are yet to be determined. We are planning on creating cardboard mockups of the design to help us finalize these dimensions. 

Locomotion Subsystem


The locomotion subsystem is in charge of navigating the environment during vacuuming or in between it. While vacuuming a flat area without stairs, the robot should perform coverage planning (using a simple Backward Spiral Algorithm or Boustrophedon planner) to traverse the entire surface of the area to be cleaned. During this cleaning operation, the system should be capable of detecting and subsequently aligning to stairs using the mobility base. While doing all the above the robot has to ensure it doesn't fall off of any cliffs, maintain safe distance from walls and other obstacles, and also stop if an obstacle enters its path suddenly (like a human).

Generally, the locomotion subsystem will need to enable the system to move omnidirectionally in the x and y direction as well as rotationally around it's center of mass. As such, we have decided to use mecanum wheels to actuate our system, which would allow us to precisely control our system to move linearly and rotationally simultaneously.

Climbing Subsystem

The climbing subsystem is in charge of all stair climbing functionality. It will interface with the appropriate sensors and motor controllers and then listen to the onboard computer for actuation commands. Upon receiving an actuation command, it will then  power the system to enable the robot to climb the stair, detecting completion and then signaling to the user after. In order to properly control the climbing motion, sensors such as limit switches, stall detecting motor controllers, and current sensors would need to be implemented, allowing for the  system to detect a completed climbing motion as well as possible failures.

The current plan for actuating the front and rear foot is to use a lead screw design which is constrained by a linear slider attached to a central piece of 80/20. Both sides would use a stepper motor to actuate the leadscrew to move the feet up and down, with the stepper motor controllers utilizing a stall detect functionality to determine if contact has been made with the ground.

Vacuum Subsystem

The vacuuming subsystem will listen to power commands from the onboard computer and then pause or enable suction on its internal motor. The vacuum will then store the dust in its internal bin until it is cleared out by the user. The system will need to vacuum through two slots, allowing for two vacuuming passes over every area of the stairs.

The current plan is to buy an off-the-shelf hand vacuum and adapt 3D printed parts to it which allow us to split the vacuum to vacuum through two slot adapters. Depending on the size of the hand vacuum, we may need to disassemble the vacuum in order to fit it on our system.

Sensing and Power Subsystem



The sensing subsystem is responsible for sensing the environment and powering all the other subsystems from the battery. One of the key goals of the project is to have an onboard battery power along with a power distribution board for properly powering all components of the system. Sensing involves interfacing the limit switches, ultrasonic rangefinders, and IMU with the onboard computer and controlling the  robot based on those the resulting sensor readings.

Software Subsystem

Our software subsystem is responsible for the overall control of the system, as all other subsystems are directly controlled by signals originating from the control code. The basis for this subsystem would be a state machine which defines the current functionality of the system. Based on readings from the sensors, the software subsystem will control the locomotion, climbing, and vacuuming subsystems to perform specific tasks (such as traversal, alignment, and climbing).

The software state machine will be running in a ROS Melodic workspace on a Jetson Nano. The Jetson would communicate via a serial connection with an Arduino Mega to control the locomotion and climbing subsystems as well as receive the current readings from the ultrasonic rangefinders, the IMU, and the limit switches.