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.

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.

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.

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.

Team’s Status Update for 11/7/2020

This week our team made significant progress on the robot on the hardware side as well as the software side and we are back on schedule. On the hardware side, we mounted the acrylic ramp, wooden arms, and motors onto the iRobot Create 2 base. Now the tennis ball launching system is securely fixed to the robot and we were able to test that the robot moves around successfully. Also, we were able to manually control the robot and successfully use the motors to launch the balls to the back of the robot. It was exciting to see the hardware work in action.

On the software side, we were able to test that our code works when we transition the Jetson Nano and Intel camera to being powered with the battery instead of from the wall. We placed the Jetson Nano, camera, and battery on the iRobot Create 2. When our code was running, if someone held a tennis ball anywhere in front of the robot, the robot successfully turned towards the tennis ball and moved towards it. This gives us confidence that the computer vision and path planning is working as intended.

Schedule Updates:
Our team is completely back on schedule on both hardware and software. Next week, we plan on working to integrate both the hardware and software systems. Currently, we have tested both systems independently and are confident they work, but putting them together will be a challenge. One of the things we need to do is create a platform on top of the robot so we can place all the hardware needed to run the software on the robot. There don’t seem to be any challenges that are of immediate concern.

Ishaan’s Status Report for 11/7/2020

This past week, I made progress on making the Jetson Nano and all the other connected hardware portable with the iRobot Create 2. To do this, I first figured out how to power the Jetson Nano and the Intel depth camera with the rechargeable battery we had. After testing that all our software worked as normal on the Nano when it was powered by the battery, I moved to testing the software with the Create 2 robot free to move after the tennis balls. This was not possible earlier since the camera and Jetson Nano were being powered from the wall outlet. We temporarily taped the camera to the front of the robot and also placed the Jetson Nano on top. When Rashmi held a tennis ball in front of the robot, the robot accurately followed the tennis ball, which shows that our software is working.

On the hardware side, I helped Ryan attach the arms and motors to the Create 2 robot so that the tennis ball collection system was mostly complete. We screwed the acrylic ramp to the arms and tested the hardware system. We manually controlled the robot and were able to launch the tennis balls that were funneled into the robot.

Next week, I plan on working on integrating the software and hardware into 1 system and also building the platform on which we will place the Jetson Nano, Intel camera, and battery. The 2 systems seem to be working well independently, but merging them together will be challenging.

Team’s Status Update for 10/31/2020

This past week, our team made good progress on both the software and hardware part of the project. On the hardware side, we purchased and cut wood for some of the components of the tennis ball launching system. When we tried this last week, we were using scrap wood which wasn’t good quality and were not using a machine that allowed us to be precise with our cuts. Learning from this, we were able to cut the wood exactly as we wanted and created the railings for the ramp and well as the components for mounting the motors. We also decided to use wood glue to connect the pieces instead of screws since this allowed us to cut at whichever angle we needed since screws were expensive as well as difficult to use at angles other than 90 degrees. After testing the strength of the wood glue, we found it to be more than strong enough.

On the software, we were able to get all our software so far to run together on the Nvidia Jetson Nano. This includes the code to communicate with the Inteal Realsense camera, the iRobot Create 2, and the computer vision code that uses OpenCV. We fixed the issues regarding building the python library for the Realsense camera and some other issues caused by moving from Windows to Linux. Now the Create 2 turns towards the closest tennis ball it sees with the Realsense Camera and moves towards it. We couldn’t perfectly test the system since the Jetson Nano is powered from the wall currently instead of the battery and is not portable.

Schedule Update:

Currently, we are on schedule on the software side of things and slightly behind for hardware. Next week, we will try to power the Jetson Nano with a battery so that we can better test how well the computer vision is working. Also, we will spend a lot of time on the hardware which involves cutting acrylic and finishing building the ramp. We will also try and mount the parts we have on the Create 2 Robot, or at least try to cut the parts needed to mount the tennis ball launching system. There don’t seem to be any immediate challenges that are of concern.

Ishaan’s Status Report for 10/31/2020

This past week, I continued to work on the software to get it to build on the Nvidia Jetson  Nano and also helped on the building side of things.  For the software, I was finally able to get the iRobot Create 2, the Intel Realsense Camera, and the OpenCV computer vision code all running together on the Nvidia Jeston Nano. This involved finding a workaround to building the Intel Realsense Python library from source as well as fixing some other issues related to transferring the code from a Windows implementation that was running on my laptop to a Linux now for the Jetson Nano.  Now, when running the code, the Create 2 robot turns towards the closest tennis ball in view of the camera until the tennis ball is centered. To better test this, we need to power the Jetson Nano from a battery instead of the wall port. This will allow the entire system to be portable instead of tethered to the wall.

On the hardware side, I helped Ryan construct some of the wood parts of the Tennis ball launching system. More specifically, we worked on building the sides of the ramp that the tennis ball will go over, as well as the pieces that the motors are connected to. To connect the pieces of wood, we decided to use wood glue instead of screws so that we were free to cut however we needed.

Next week, I plan on trying to power the Jetson Nano with a battery and seeing if there are any issues with that. Also, I will try to get most of the code written to control the motors. I will help Ryan continue working on the building side of things so that hopefully the motors are ready to be tested along with the rest of the hardware.

Ishaan’s Status Report for 10/17/2020

This week I worked a lot with the computer vision algorithm trying to make it more robust. I took the camera outside and tested the algorithm in daylight. At first, even if the camera angle changed a little, the ball stopped being detected. Furthermore, I was outside for a few hours and I noticed that as the daylight itself changed, I found that I had to retune the algorithm to work. However, after rewriting some of the code and tuning the parameters of the HSV color space, I believe that I have finally found a happy medium threshold where the tennis ball is detected all the time in daylight.

I also spent some time this week helping my team write the design review document. We were hoping to have feedback from the professors regarding our design process by now but we have not heard anything.

Next week, I plan on working with Rashmi in order to integrate her working with regards to the motion planning of the iRobot and my computer vision algorithm. I’m not sure how this process is going to go as neither one of us has really worked in the other’s domain. I anticipate that this process of integrating it and then finetuning the motions and fixing the issues that arise will take us this whole week and possibly some of next week.

Team Status Update for 10/10/2020

This week, we worked on many different individual parts of our project. We made progress on the hardware side by setting up a prototype tennis ball collector that allowed us to change the spacing of the motors that have the wheels that will collect the tennis balls. We were able to power the motors with a power supply from the Makerspace and control the motors using an Arduino. This allowed us to determine that our parts seem to be working and the wheel system will likely succeed in sucking up tennis balls.

We also continued to make progress on the software parts of our project. We further developed the computer vision algorithm to only detect objects that are the color of tennis balls so now any tennis balls in view of the camera will be marked with a target. Also, we were able to send commands to the iRobot Create 2 and control if to move and rotate. We still need to work on integrating these 2 pieces of software so that the computer vision code can also control the iRobot. This may be a challenge that we did not anticipate because the computer vision code is in C++ while the iRobot code is in Python. However, we have found that pybind is a library that could bridge these 2 languages.

Schedule Update

We are still moving according to the planned schedule and do not have any significant changes to the design of our project. One change we did want to make was to construct the arms of the robot that would gather the balls out of wood so that we can easily attach the motors to the arms and so that the arms would be sturdy. Our initial plan of using acrylic may not work out since it would be very difficult to cut and glue the acrylic together to make a sturdy arm. However, wood should not be expensive and should be relatively easy to obtain.