The Roll-On-You-Bot (or ROY-Bot) drives around tennis courts or concrete surfaces. The ROY-Bot begins in an idle state. Once the button is pressed, the robot enters the collecting state during which it moves forward at full speed for 1 second and then comes to a gradual stop. If the robot scoops up a ball, it will detect the added weight in the front bucket and enter the full state. At this point, the robot waits for the user to push a button so it can empty the ball into the chassis. If the robot did not scoop up a ball, it will wait for the player to push the button so it can move forward again. If, while the robot is moving, it comes too close to an obstacle, such as a wall, net, or player, it will stop moving and wait for the user to physically reset the robot and move it to a different location.
Initially, ROY-Bot was going to detect the position of nearby balls, drive to them, and collect them. Our team quickly realized, however, that this was unreasonable to implement in our prototype due to the cost of sensors, such as a lidar. Moreover, the software challenges, while an interesting feat, were beyond the scope of the course. This is a potent area of investigation for future iterations of ROY-Bot. Another change was to the ball emptying mechanism. Originally, we planned to use a rack and pinion to lift up the collector bucket and dump balls into the chassis. However, based on advice from mentors and team discussion, we modified this to an arm that a motor rotates to lift the bucket.
At the front of the robot, the white 3D printed bucket scoops up a tennis ball. With the ball inside, a force sensor under the bucket notifies the microcontroller. There is also an HC-SR04 ultrasonic distance sensor that measures frontal clearance. The white bucket lifts up due to actuation from the motor and arm, depositing the ball into the chassis. Sometimes, the ball goes above the top of the robot, so a small backboard helps guide it into the storage compartment. At the rear of the robot are three status LEDs (red, yellow and green) and a push button for control. Power cables protrude from the rear which supply the motors and microcontroller. Inside, a breadboard routes the sensors and motor controllers to the Arduino Uno microcontroller and the power supplies. The two drive motors attach to 38 mm gears for the 4:1 transmission to the wheels. The corresponding 152 mm output gears attach to the wheel shafts. The wheels themselves are secured on the exterior of the chassis. One enhancement that we expect could improve the performance of the drivetrain would be the addition of locating features to the motor mounts. This would align them optimally on both sides of the robot to their respective transmissions.
Routine 1 (enter collecting):
LED: Green
Drivetrain motor: on
Ball emptying linkage motor: off
Routine 2 (enter error):
LED: Red (flashing)
Drivetrain motor: off
Ball emptying linkage motor: off
Routine 3 (enter full):
LED: Red
Drivetrain motor: off
Ball emptying linkage motor: off
Routine 4 (enter idle):
LED: Yellow
Drivetrain motor: off
Ball emptying linkage motor: off
Routine 5 (enter emptying):
LED: Yellow (flashing)
Drivetrain motor: off
Ball emptying linkage motor: on