Team Status Report for 12/6

This week, our team focused on finalizing our subsystems as well as starting integration. Not having the motor control board was a blow, but we still have our backup plan of direct connecting the battery to the launcher. Outside of directly connecting the battery to the launcher we experienced little to no design changes. During integration between the CV and the Motor Control, we found that we our robot wasn’t turning well either overrotating past the POI or rotating very slowly.  In order to counter this we decided to implement PID control. We also while testing found that running pose estimation when there were multiple people in the room caused a lot of latency. In order to counter this we implemented the temporary solution of capping the amount of people that we’d perform pose estimation on. We also realized that when actively targetting someone the latency that would come from running pose estimation on the target could interfere with our control, for that reason we decided to cut pose estimation once a target was found.

 

Our unit testing so far has been focused on making sure the CV is accurate by manually following our codes turning commands and seeing if our launcher is in line with our POI. The test we are currently running consists of the same except with the PID control fully controlling our launcher as the integration testing of our old linear turning algorithm failed.

Miles’ Status Report for 12/6

This week, I was working a lot with the Raspberry Pi and integrating some of our systems together. Earlier in the week I spent a lot of time downloading the libraries we need for our code. Then later in the week once the new hbridge came I was able to get the robot base turning. Once it was able to turn, I then integrated it with John’s main CV code which gives commands to turn left and right. I also got our servo motor working and turning, so I was able to integrate it with the CV code as well in order to release the ball to the ramp.

John’s Status Report for 12/6/2025

These past two weeks, I finished pose estimation that goes with the CV. I also wrote logic to lock onto our target after they gesture that they want the ball, as well as added logic that determines when and where to turn. One issue I ran into is that adding pose estimation and running it multiple times for each person detection within a frame caused a lot of latency. I reduced this latency by reducing how many people we run pose estimation on, as well as reducing the number of frames we run pose estimation as well. Because our CV works and is functional, I’m exploring redoing my method of linking pose estimation to the depthAI detections. Instead of running pose estimation on each detection, I am thinking of running pose estimation once through the entire RGB map and linking it through pixel location to our RGBD map. However, since I am done with my portion of the project, Tomorrow I plan on cycling between working on the new CV, doing further stress testing of my CV to see if I need to implement pixel mapping, and if I do not, helping with other parts of the project, specifically the PID control for rotating and the launcher.

As for progress, I believe that I am nearly done; however, we have one day left and are most definitely behind on launching and rotational control, even if the CV is working. We are confident in our ability to finish our turning, but the setbacks we experienced with our motor control board early this week have hampered our ability to be able to control our physical launching of the ball. This aspect of the progress won’t end up the way we want it, and we didn’t have enough time to do enough integration testing between our CV and rotational control to ensure that it will be the way we had envisioned by demo.

Andrew’s Status Report for 12/06/2025

This week I accomplished a lot with this project. I replaced the temporary putty that was attaching the wheels to the DC motor with epoxy putty, which is now there permanently and there is no wobble at all during the spinning. I finalized the entire ramp and the ball rolls smoothly into the wheels and consistently follows the same track throughout all rolling tests. I helped Miles program the robot motors and spin its wheels, allowing it to go forward, reverse, right, and left. I bought four 12V 20Ah car batteries and a charger for those to directly connect it to our 2 DC motors, which take in 24V and 18A each. This is the backup option due to the newest motor control board breaking. I am connecting two 12V batteries in series for each motor to achieve 24V and put the DC motors at maximum power. Finally, I am currently building a funnel and double ramp system that holds 11 tennis balls and programming a servo with Miles to only let 1 ball drop/shoot at a time. To elaborate on the double ramp system: the ball slowly rolls down a shallow ramp at first into the servo and then quickly rolls down the steeper ramp into the motors, helping to achieve the 1 ball drop at a time.

My progress earlier this week was super behind due to our new motor control board breaking again, but I, along with my group, have made significant progress the past few days with CV tests, structure design, robot motor controls, launch tests, and overall integration.

Since final demo is coming up, I hope to finish the last touches of the structure, integrate the servo with the CV, and finally do extensive launch tests with the new batteries.

Team Status Report for 11/22

This week, our team mostly worked on building our new structure. We drilled holes in our PVC sheet and attached the motors to it. Our robot also came in, so we worked on getting the motors attached to it as well with the PVC sheets. Our new motor board also arrived, so we have been working on integrating it. The most significant risk that could jeopardize the success of the project is still the launcher, but that will be revealed in the next few days as the new motor control board is integrated. We tested our launcher at 10% power and analyzed that it consistently reached around 1.5 feet. Assuming power and range are linear, this means that we can at least launch 15 feet. We are thinking of testing out different wheels with different frictions/compressions to see which one launches the tennis ball the best.

No changes were made to the existing design of the system from last week. There is also no change in schedule.

Over the new week we plan to refine our structure and get started on building the ball feeder/ramp as well. We also want to get the new motor board working and begin integrating it with everything else, like the CV and robot motors.

Here is our structure so far:

John’s Status Report for 11/22/2025

At the beginning of the week, I spent time testing the CV to make sure that the depth values were accurate. Miles and I then put the CV on the pi.  After this, I started focusing on building the robot. I helped drill and assemble the base onto our robot, ensuring our launcher can now be mounted on its base.

We are still behind schedule, but we made good progress and are catching up to where we need to be.  We still have a lot to do, especially in terms of interfacing, but with our Motor Control board and our robot structure nearly fully built besides the ball feeder, we should be able to get a lot done over the next week.

Throughout this project, I was tasked with learning how to work with CV.  As a result, I ended up having to learn about multiple CV algorithms and learned how to use OpenCV and DepthAI.  Before I pivoted to helping with the physical build, I was also learning how to train custom neural networks for depthAI when I was attempting to work on pose estimation. Since I have never worked with a CV of any kind or worked with an AI library, there were a lot of issues I ran into, especially with CMake, as the majority of the semester, I was writing my code in C.

Miles’ Status Report For 11/22

This week all of our new parts came recently. We spent most of the week as a team building our structure where we did a few test launches. Our new motor control board also came in this week, and it seems to be promising. I’m still debugging some of the software control, but I was able to connect to it and it is getting power, so it should work for us. I will be spending some more time the rest of this week debugging it and getting it working.

The main skills I’ve had to learn and brush up on throughout this project is 3d modeling/printing and motor control. I had done some 3d modeling in a different software, but I still had to review it and it is the first time I had actually 3d printed. I learned mostly through trial and error and well as online tutorials. I had also done some motor control in 349, but it was all on an STM, so this is my first time using a different platform for motor control. While the actual flow of coding is very similar, I have had to read lots of datasheets and use online tutorials to debug certain things.

Andrew’s Status Report for 11/22/2025

This week, I built almost the entire structure of the launcher mechanism. I cut the PVC sheets into the necessary size that could fit the DC bike motors and be drilled into the sheet. The robot base arrived, so I was also able to drill the PVC sheet with the motors onto it. Since the screws holding the motors would touch the robot wheels which would collide when there is any movement, I utilized another PVC layer to create more spacing. I drilled indents between the PVC sheets to ensure a perfect fit for the screws and found the balancing point between the launcher and the base to ensure that when the robot rotates/moves, both motors will be experiencing the same load and not one is more stressed than the other. I was also able to test the launcher at 10% power and it reached about 1.5 feet (35 Watts). This means that we can at least launch 15 feet if there is a linear increase. The only thing that is missing is the feeder mechanism that rolls the ball into the spinning wheels, which will be worked on in the next few days and will be held together with epoxy glue that can support up to 3300PSI. Also, the wheel attachments are currently attached through basic putty, which can only support 2 pounds of force and it is unstable from how fast the wheels are being spun. Epoxy putty, which creates a metallic-like finish and supports up to 4000PSI, will be used for the final wheel attachment to ensure permanent stability. I may also try testing different wheels with different coefficient of frictions and hardnesses to examine which one gives the farthest launch.

I would say my progress is on schedule. I should be able to finish the whole structure build in the next few days, and then with the new motor control board in, I will be able to test the total launch distance.

Next week, I hope to complete the whole structure: ball feeder, epoxy putty and epoxy glue to hold the physical components together, and drill more areas for components like camera/Raspberry Pi placement. I hope to be able to test the launcher at full power and start the hardware/CV integrations.

Some new tools/knowledge I found necessary to learn to be able to accomplish my tasks is 3D printing the wheel attachments, overall materials for a strong structure build, and physical constraints of a launcher. Since Miles has the CAD program on his computer, I was able to learn from him how to import 3D print models, design/size the components, and learn different 3D material types and infills to ensure the final product meets the requirements for our launcher. I watched a few YouTube videos and read physics textbooks as well to refresh physics calculations and tradeoffs for the launcher mechanism. Through these videos and readings, I was able to calculate the overall exit speed, RPM, exit energy, power, and torque necessary to launch a tennis ball at 45º 20+ feet. Finally, I watched YouTube videos on what materials I needed to use to build the whole launcher. This is where I learned about epoxy glue, epoxy putty, and PVC sheets which is currently holding up the build quite well.

Here is the progress of the overall project without the boards connected yet:

Johns Status Report for 11/15/2025

At the beginning of the week, a lot of my attention was dedicated to the Interim demos on Monday and Wednesday. We ran into a few issues, including our motor board blowing up on us the weekend before the demo. Because of this, our group had to pour our attention into trying to get something presentable to demonstrate how the launch would work. Following the demo, I continued trying to obtain another AI model that focused on hand positioning, and I also worked on installing my current model onto the Raspberry Pi. I also contributed to deciding which robot we should use to rotate our base.

Originally, our group was extremely behind because building the base on time, as well as integration, seemed like it would not be achievable. The shift to using a robot kit as our base to turn makes our project much more likely to succeed, although we still have a lot of work to do. My progress through my portion of the project started a little behind this week, but I have caught up to where I am meant to be and can now devote my attention to other portions of the project, as well as finish all my basic CV unit testing.

Next week, I plan on during the first half, doing all the unit testing and putting my CV code onto the Pi. During the later parts of the week, depending on whether the robot comes in on time, help build the robot and help with our turning algorithm, as my CV code will be interacting with it, ensuring that the data I send arrives promptly so that the robot turns accurately.

I have already started the CV unit testing, but I will continue to work on it throughout this week and the weekend while also helping to complete other portions of the project. Since we do not have the rotational capabilities yet, my testing will involve manually moving around the camera to face people and seeing if when my x value reaches 0, that when I draw a line with a tape measure from the center of the camera to the person that the line is within a foot of where the person is standing. I will also test to ensure that the depth value that the camera is within a foot and a half of the distance of the person it is facing. These two tests will be one under different levels of lighting. At first, I will be performing these tests using my laptop, and afterwards, I will be doing them on the Pi. My goal is to measure from a certain spot and premark the spots to ensure that the code works the same on both, to ensure that integration to the Pi was successful as well. My goal is to eliminate as many integration problems as we may have early and thoroughly test the CV before we assemble the base.

Andrew’s Status Report for 11/15/2025

At the beginning of this week, I contributed in presenting during the Interim Demo on Monday and Wednesday. Our original motor control board broke down and the temporary board suddenly got delayed in shipping, but I was able to help set up the replacement board for Wednesday’s demo once it came to give the staff a better view of how the DC bike motors will be operated. Following the demo, I started to build the base using PVC pipe, PVC sheet, and thinking about the gears to buy. However, due to a limited timeline and not wanting to take any risks of building a rotating base that may potentially break down or not work, I helped decide to use a robot for the base instead. The robot has its own motor controls and wheels, meaning that it will be able to be mobile and make it easier to rotate as well as travel around if our launcher’s range is limited.

My progress was initially behind, but after shifting to the robot base, it makes the project timeline more achievable. Rather than having to rely on completely building a base from scratch with gears, ball bearings, and stepper motor that may not even work until it is finalized and tested, I believe that having a robot makes our project completable in the coming weeks since it is already a built structure. The robot needs to have its wheel motors coded and have the launchers and camera reintegrated on top of it.

Next week, I hope to rebuild the launcher onto the robot base once it arrives. Currently putty is being used to stabilize the wheel attachments on the DC bike motors, so I plan to use some form of press fit + strong glue to make it better. Following the physical build, I hope to help Miles with the motor control code for both the launcher and the robot. The CV is basically finished so motors and overall integration are the biggest priority.

With a temporary launcher built and applying low wattage (around 10% of the motor’s max of 350W), the ball launches around 2 feet. Also, the temporary putty with the wheel attachment seems to be stable when launching a ball at low power. The 45 degree angle attachments for the base of the motors also hold up and so far gives the desired launch distance as calculated by my physics. With all of these temporary and low power implementation, I am confident that in the coming weeks when better parts arrive and I can finalize the build, the ball will be able to launch 20+ feet at 45º as proposed. When the structure is completely built, I will apply max wattage to the motors and see how far the tennis ball launches with respect to a 20 foot marker/tape on the ground. If it does not reach 20+ feet, then adjustments such as reducing/increasing the angle of launch or using different materials for the spinning wheels may be tested for example. If these alternatives do not work, then testing robot mobility to reach a target rather than overexerting a launch distance is another option.