Unified Robotics II Final Project

Introduction

For my final project in RBE 2002, my team and I designed and programmed three robots to perform three pivotal scenes from Shakespeare’s classic work Romeo and Juliet. More specifically, the robots made use of several sensors to navigate their environment and communicate fully autonomously to reenact the fight scene, balcony scene, and final scene from the play. The robots featured use the Pololu Romi Chassis as a base, and have been outfitted with 3D prnted components, LEDs, and many different sensors to complete the task. Some of the sensors include an inertial measurement unit (IMU), ultrasonic rangefinder, Sharp IR distance sensor, reflectane array, IR detector, and OpenMV Camera. An overview of each of the three scenes is presented below, followed by a video of the full performance. A more detailed description of the designed process and the final solutions implemented can be found in the full report linked at the bottom of the page.

Fight Scene

The fight scene makes use of all three robots, playing the roles of Mercutio, Tybalt, and Romi. This scene begins with Mercutio and Tybalt circling each other about a central point while Romi watches from a distance away. Tybalt then turns to lunge and stab Mercutio, and Mercutio dies dramatically. Similarly, Romi then turns to lunge and stab Tybalt for revenge, before fleeing the scene as Tybalt dies. Mercutio is outfitted with an IR emitter LED and an IR receiver, as well as a red LED. Tybalt is configured with an IR receiver, IR flame detector, and red LED. A 3D printed bumper was attached to the front of the robot, and a mount was fixed to the side of the robot to hold an April Tag in front of the left wheel. Lastly, Romi is given an IR receiver, a similar 3D printed bumper, and an OpenMV camera attached to a front facing mount. Tybalt and Mercutio use kinematics in the beginning of the scene to drive in a circle of a specified radius and keep track of encoder counts to stop after two revolutions. IR communication from Mercutio to Tybalt and Romi tells them when to seek and ram their targets. Tybalt uses the IR flame detector for seeking Mercutio, while Romi uses the OpenMV camera to seek Tybalt. All three robots detect collisions with the onboard IMU. A picture of this scene is shown in Figure 1. Mercutio is on the left of the scene, Tybalt on the right, and Romi in front.

Balcony Scene

The balcony scene employs two of our robots acting as Romi and Juliet. In this scene, Juliet begins at the bottom of a ramp, and Romi begins a distance away, perpendicular to the ramp direction. Juliet drives up the ramp and stops at the top before signaling to Romi. Romi then drives up to the base of the ramp below Juliet and turns to face towards the bottom of the ramp. With Romi in position, Juliet drives back down with the ramp with Romi following alongside her, and the two continue driving a short distance before coming to a stop. For this scene, Juliet is equipped with an IR receiver, an IR emitter LED, a reflectance array sensor mounted to the front of the robot, and a mount to hold an April Tag over the left wheel. Romi has an IR receiver, a Sharp IR proximity sensor mounted to the front of the robot, and an openMV camera attached to a side facing mount. Juliet uses the IMU to detect the slope of the ramp at the beginning of the scene to drive up to the top and stop. IR communication between the robots is sued for Juliet to signal to Romi to come over. Romi then approaches the ramp and uses the IR proximity sensor to stop the correct distance away before turning 90 degrees with the help of the motor encoders. As Juliet drives down the ramp and continues beyond, Romi uses the OpenMV camera to track the April Tag mounted to Juliet and follow alongside her. Lastly, Juliet uses the reflectance array sensor to detect a tape line at the intended stopping point, and again uses IR communication to signal for Romi to stop. A picture of this scene is shown in Figure 2. Juliet is pictured at the top of the ramp and Romi is seen approaching the base of the ramp. 

Final Scene

The balcony scene employs two of our robots acting as Romi and Juliet. In this scene, Juliet begins at the bottom of a ramp, and Romi begins a distance away, perpendicular to the ramp direction. Juliet drives up the ramp and stops at the top before signaling to Romi. Romi then drives up to the base of the ramp below Juliet and turns to face towards the bottom of the ramp. With Romi in position, Juliet drives back down with the ramp with Romi following alongside her, and the two continue driving a short distance before coming to a stop. For this scene, Juliet is equipped with an IR receiver, an IR emitter LED, a reflectance array sensor mounted to the front of the robot, and a mount to hold an April Tag over the left wheel. Romi has an IR receiver, a Sharp IR proximity sensor mounted to the front of the robot, and an openMV camera attached to a side facing mount. Juliet uses the IMU to detect the slope of the ramp at the beginning of the scene to drive up to the top and stop. IR communication between the robots is sued for Juliet to signal to Romi to come over. Romi then approaches the ramp and uses the IR proximity sensor to stop the correct distance away before turning 90 degrees with the help of the motor encoders. As Juliet drives down the ramp and continues beyond, Romi uses the OpenMV camera to track the April Tag mounted to Juliet and follow alongside her. Lastly, Juliet uses the reflectance array sensor to detect a tape line at the intended stopping point, and again uses IR communication to signal for Romi to stop. A picture of this scene is shown in Figure 2. Juliet is pictured at the top of the ramp and Romi is seen approaching the base of the ramp. 

Performance Video