Ryan’s Status Report for 12/5/2020

With the robot’s construction finalized, we focused on final touches and testing this week. We stared with our final integration test. This test would ensure that the addition of a basket didn’t adversely affect any other components of BallBot. To perform this test, we set up a testing environment in the capstone lab and sent BallBot through it. Below is a video of the result:

As one can see, the addition of the basket did not seem to negatively impact any of the existing systems. BallBot was successfully able to pick up all the tennis balls.

After verifying that our system fully integrates, we decided to remodel the top of the robot to incorporate a touchscreen displaying our user interface. In Solidworks, I revised the design to include another layer on top of our sensor suite to house the screen. The final CAD model of BallBot is shown below:

With the model finished, I cut the new layers out of acrylic and assembled + painted them in the lab. We attached the touch screen and hooked up the Nvidia Jetson Nano. At this point, the final physical construction of BallBot was complete. A picture of BallBot in its final form is shown below:

And here’s a video of the new and improved BallBot running through the same test from earlier:

BallBot was able to successfully pick up all but one of the tennis balls. Failure to scoop up the last tennis ball was due to a software bug, which has since been fixed.

For next week, I plan on working on the final presentation and video.

Team’s Status Update for 12/5/2020

These past two weeks, we finally finished Ballbot and were happy to see it work, collecting tennis balls. To complete Ballbot, we made many changes to both the hardware and software. We added a second layer of acrylic to enclose the hardware and added a touchscreen to the top for an easy to use interface. We designed the pieces for the new housing of the hardware in Solidworks and then laser cut the pieces in the Makerspace. We made the bottom layer detachable for easy access to the hardware and had a cutout on top for the touchscreen. We connected the touchscreen to the existing power from the buck converter and also connected it to the Jetson Nano.

On the software side, we made a simple GUI in python that would be displayed on the touchscreen. We used Tkinter to make the UI and the Threading library so that we could listen for user input while the Ballbot was running. The UI consisted of 3 simple buttons, one to start collecting tennis balls, one to stop, and one to shut Ballbot down. We integrated the UI code with the existing software so that the buttons would work as intended. We also tuned the computer vision to work well outside so that Ballbot could pick up balls on an outdoor tennis court.

Schedule Update

Next week, we plan on making the final video, final presentation, and final report. We are currently on schedule and have finished the building part of the project.

Rashmi’s Status Update for 12/05/2020

These past 2 weeks have been highly productive for our team. We all spent a lot of time working together testing and improving the user interface of the BallBot. To improve the appearance and make BallBot look more like a product, I painted the sides of the robot as well as designed the top. The top of the robot now has a touch screen that can be used to interact with the robot. On top of the screen, we have a 3D logo that is big and visible. I designed the logo to be big such that it is visible from any distance and angle. It gives our product a unique and branded look.

In terms of integration testing, I helped my team bring the robot to the tennis courts to test. One issue we noticed when testing was that the wifi was unstable. This was causing the program to randomly shutoff due to a lost network connection. This was one of the primary reasons we decided to improve the user interface. With the screen, we programed it so that once the robot is powered on, the program can be started by clicking on the executable on the screen. This made it so that we no longer require Wifi. All our testing was surprisingly very successful. I did not need to make any changes to the routing algorithm.

This next week, I will be working on putting together the final video and blog post.

Here is what BallBot looks like now:

Ishaan’s Status Report for 12/05/2020

These past 2 weeks, we have finally completed Ballbot and have tested different parts of our project. I helped redesign the casing for the hardware , added a GUI for the touch screen, and also tuned the computer vision to work with outdoor tennis courts. Instead of just having the hardware on the roof of the robot, I helped design a second layer to go on top of the hardware that would also encase the touchscreen. We decided to add a touch screen to the top of the Ballbot so that it is easy for a user to turn the Ballbot on and off.

For the UI, I made a simple GUI in Python with 3 buttons to start and stop collecting balls, as well as turn Ballbot off. I integrated the GUI with our existing software so that controlling Ballbot is as easy as possible. To do this, I used Tkinter for the UI elements and the Threading library to have a thread waiting for user input while the rest of the code is running. On the software side, I also tuned the computer vision thresholds to better work with out door lighting. This allowed us to test the Ballbot outside and see it work on the tennis courts.

Team’s Status Update for 11/21/2020

We are on the final stretch for our project now and BallBot is really coming together. While this week was an extremely busy with each of our team members having several midterms, we still managed to make some progress on BallBot. This week we made subtle but important improvements to the software. Before, the Ballbot stopped moving whenever there were no balls in the field of view. Now, we improved the software so that the Ballbot first spins in a 360 degree circle when no balls are visible. If during this spin, it sees any tennis balls, the Ballbot stops spinning and goes after them. Otherwise, the Ballbot stops spinning until it sees more balls.

We also worked on the basket for the Ballbot and constructed it out of plastic. We used plastic so that the basket was lightweight and weatherproof. We also made the basket have a capacity of 30 balls so that it met our requirements. We are still designing a mechanism to attach the basket so that the basket is detachable.

Schedule Update

In the upcoming weeks, there are only a few things that remain for us to complete. We need to build a casing for the hardware components on the robot and do more testing to identify and improve upon the weaker aspects of the robot. We are fully on schedule and have pretty much finished the exterior of the robot.  One thing that we really need to do is test the fully functioning BallBot on an actual tennis court. We wanted to do that this week however, we didn’t get a chance to do so due to the weather.

Ishaan’s Status Report for 11/21/2020

This week we made progress towards finishing the physical aspects of the robot and placing the finishing touches in the software. We finished constructing the basket to carry the tennis balls. We ensured that the basket to fill 20 to 30 balls so that we could meet the requirements we laid out. The basket was made with waterproof plastic to make sure the basket was lightweight and waterproof. We also used the same swivel wheels as used on the arms of the robot to lift the basket off the ground. We still have to finalize how to attach the basket so that it is secure.

On the software side, we added functionality so that when no balls are detected, the robot spins in a 360-degree circle to see if there are any balls outside of its view. If so, it stops spinning and goes after those balls. If it still does not find any tennis balls, the robot stops spinning and waits until a ball is seen.

This week, we were not able to test on the tennis courts as panned because of rain. However, the weather app says that there will not be rain on Monday, so we hope to test on the tennis courts then. In the meantime, we have tested indoors and everything seems to be working as planned.

Rashmi’s Status Report for 11/21/2020

This week I worked on making minor software improvements for the BallBot. We realized that if there is no ball immediately in the BallBot’s sight, we want to make the BallBot pan tennis court and look for tennis balls. In order to do this, we added a feature to the BallBot so that if there is no tennis ball in sight, the robot will spin in place and try to locate a ball. If it sees one, it will start going in the direction of the ball. If the BallBot does not see a ball, then it will rotate once in a full circle and then stop moving.

Additionally, this week I helped build a basket. Because the shape of the basket was highly specialized to the BallBot, we built it using polypropylene. This basket can fit 30 tennis balls and meets the user requirements.

Since this upcoming week is Thanksgiving and our team will be going out of town for the rest of the semester, I plan to work with my team in trying to test the BallBot on the outdoor tennis courts and figure out what other software improvements need to be made. Here is a picture of the basket that I helped make this week.

Ryan’s Status Report for 11/21

This week was midterms week for me, so I was not able to work on our capstone project during the middle of the week. I was, however, able to work some on the project at the beginning and end of the week.

With the mechanical portion of BallBot nearly complete, I started the week by experimenting with a slight modification to our current ball launching mechanism. The goal of this experiment was to determine if angleing the wheels would help launch the balls higher. The higher we can raise the ball, the more balls we can store in our basket towards the back of BallBot. Below are some results from my experiments:

As one can see, angleing the motors lifts the balls off the ground, even in the absence of a ramp.

Towards the end of the week, I worked with the team to attach our basket to the back of BallBot. We wanted the basket to be easily removable, so we settled on a hook design. This design is much like how one would hang a painting on the wall. Below is a picture of the attaching mechanism:

With the basket locked in place, we are ready to do a full integration test on a tennis court. Unfortunately, the Pittsburgh’s weather is not looking great next week, so we’ll have to cross our fingers and take the first opportunity we get.

Team’s Status Update for 11/14/2020

This week, we spent a lot of time working together building the roof for the robot, attaching the hardware components, and painting the robot. Previously, we had the software running so that the Ballbot moved towards tennis balls and also had the tennis ball launching system be able to launch tennis balls towards the back of the robot. To combine these systems, we first created an acyrlic roof to go over the ramp in our launching system. We then attached all the hardware components including the Intel Realsence Camera, the Nvidia Jetson Nano, buck converter, motor controller, and battery to the top of the roof using M3 dual lock adhesive which works similar to Velcro. We also used a protoboard to solder the batteries output to both the motor controller and the buck converter which was attached to the Jetson Nano.

Once everything was attached, we first tested the motors to make sure they were working and then turned on the software to see how it would work with the tennis ball launching system. Fortunately, things went as planned and the Ballbot successfully chases down tennis balls within its field of view and launches them to the back of the robot.

After we tested the integration, we removed the arms and painted them to make the wood weatherproof which is needed for an outdoors device like the Ballbot.  We still need to make protection for the hardware on top of the robot.

Next week, we plan on improving the software so that the Ballbot does not just stop when it doesn’t see more balls, but first turns in a circle so that it does not miss balls outside its field of view. Also, we hope to test the Ballbot outside on a tennis court which will require fine-tuning our computer vision.

Schedule Update:

We are currently on track with our schedule in terms of hardware and software. The one task which is slightly behind schedule is building the basket to collect the balls because we thought the rest of the project was more of a priority. We hope to build the basket this next week so that we are completely on the planned schedule.

Ishaan’s Status Report 11/14/2020

This week, I worked on integrating the software and mechanical parts of the project and testing them together. The software required the Nvidia Jetson Nano, Intel Camera, and buck converter to give the Jetson Nano 5V of power which were not part of the mechanical tennis ball launching system. We made an acrylic roof for the Ballbot on which we placed all the hardware required to run the software as well as the battery and motor controller which were part of the mechanical system. In order to connect the battery to both the motor controller and the buck converter for the Jetson Nano, we soldered wires onto a protoboard that we also placed with all the other hardware. To secure the hardware to the acrylic roof, we used M3 dual lock adhesive which acts similar to Velcro.

Once the components were all on Ballbot, we first adjusted the speeds of the motors so that we were using minimal power while still ensuring balls would not get stuck partway up the ramp. Then, we finally started running our computer vision code and tested everything together.

Our integration worked successfully and the Ballbot was able to go after tennis balls and launch them towards the back of the robot. Next week, we plan on adding the basket to the back of the robot so that the balls are collected in the basket instead of just being launched back.

Also, we painted the exterior of the wood so that the arms Ballbot would be weatherproof. We still need to enclose the hardware to ensure the hardware can survive in the outdoors. Also, next week I plan on adding code to the software so that if the Balbot does not see a tennis ball, it turns in a circle once and ensures there are not any tennis balls outside of its field of view. Currently the Ballbot just stops when it does not see a ball which is not the best for picking up all the balls. We also hope to test the Ballbot on a tennis court if there is good weather next week.