Team Status Report 3/22/25

This week our team continued to make steady and significant progress especially now that we have the physical table and foundation for our project. While there are a couple roadblocks in our physical setup, the software progress is on track, and we are still confident in meeting our desired MVP goals.

Luke focused on setting up the pool table mount for the camera and projector system. He encountered challenges with securely attaching the equipment while upholding safety standards. Initial mounting attempts either made the system unstable or darkened the playing area, impacting out CV system. Luke plans to refine the mount further to balance stability, visibility, and functionality, with the goal of having the camera and projector system fully operational by the end of next week.

Samuel made progress on the find_best_shot algorithm for the physics simulation. His current approach successfully identifies 9-ball shots that meet key criteria, such as hitting the lowest-numbered ball, avoiding scratches, potting balls, and positioning the cue ball strategically. However, the algorithm still relies on a brute-force approach. Samuel is exploring the use of Simulated Annealing to optimize the algorithm and reduce computation time to under four seconds, as required by our use-case. He remains on schedule and aims to complete the algorithm and display mapping in time for MVP testing.

Kevin supported Luke with the physical setup, providing input on camera/projector placement and lighting to minimize image quality issues. He also began implementing code to project predicted holes, pockets, and ball positions onto the physical table. Kevin is on track and will pivot his efforts toward smooth integration, including refining position coordinates and addressing potential image occlusions.

The team is confident in overcoming current challenges and delivering a functional and polished MVP in time for carnival.

Kevin Kyi Status Report 3/22/25

This week I worked on helping Luke setup the table and give ideas on how to setup the camera/projector system and lighting in order to minimize image quality issues. Aside from helping with the physical components I started working on implementing code to project my predicted holes, pockets, and ball placements on the physical table. I am on track and will try to pivot my work towards smooth integration, including position coordinates and mitigating image occlusions. Below I have attached an image of the coordinate system we are using and how it looks on the physical table.

Samuel Telanoff Status Report 3/22/25

This week I spent my time working on the find_best_shot algorithm for the physics simulation portion of our project. Currently, my approach is good and finds the 9-ball shot that: a) hits the lowest numbered ball on the table, b) does not result in a scratch, c) pots 1+ balls, d) sets up the cue ball to be closest to the lowest numbered ball on the table, and e) occasionally pots the 9 ball if possible.

However, I am still using more of a brute-force approach than a greedy one. I am thinking of ways to use some Simulated Annealing to find the optimal shot we can take. This will require tweaking parameters that determine the “score” of a shot — this includes balls potted, where the cue ball ends up, etc. I will be spending my time this upcoming week implementing my algorithm and optimizing it to complete in under four seconds as specified by our use-case requirements.

I am still on schedule and, again, hope to be done with the best shot algorithm + display mapping before carnival so that we can test MVP.

Luke Han Status Report 3/22/25

This week, I focused on setting up the pool table mount. I encountered challenges with securely attaching the camera and projector while ensuring high-quality image capture and projection. Some of my initial mounting attempts made the system unstable, posing a risk of falling onto the table. Other iterations created visibility issues, as attaching the camera and projector to the underside of a wooden plank darkened the entire playing area, making it difficult for users to see and play.

I will continue refining the mount to balance stability, visibility, and functionality. My goal is to have the camera and projector system fully operational by the end of the upcoming week.

Kevin Kyi Status Report 03/15/2025

This week, I mainly focused on testing my position coordinates algorithm to validate on the downscaled project table. I also implemented additional fail-safes in my pocket detection algorithm to ensure valid rectangle dimensions based on corner pocket positions, making ball position calculations less error-prone. Additionally, upon receiving the table I had to adjust the algorithm used to compute the homography matrix from the corner stickers because there was an offset from the true corners of the table unlike a traditional layout.

Aside from technical updates, I have been communicating my progress closely with Luke and Samuel who are working on the later stages of the processing pipeline to ensure smooth integration. I have also attached an image demonstrating how position coordinates will be laid out on the physical table and how I am making position calculations less error prone.

Team Status Report 3/15/25

This, week our team made tremendous progress in both the physical and software components of our project. We’ve continued developing our major subsystems — computer vision, physics simulation, and the position algorithm.  Luke has made notable advancements on the camera and projector system. And being no longer blocked by the pool table delivery, has assembled, and initial testing has been conducted on the calibration, image capture quality, and integration challenges. However, the frame for the system arrived at the end of the week. This prevented Luke form picking up the frame and completing the setup. He plans to retrieve the frames and complete the setup by Monday, enabling full system integration and further testing. Samuel has completed the physics simulation setup, including the implementation of the simulate_shot function, which accurately simulates pool shots based on angle, power, and spin. He also created the simulate_shot_with_animation function, which visualizes shots and helps fine-tune the parameters for realistic simulation. Samuel will focus on developing the greedy algorithm for shot selection next week, aiming for completion in the next 1-1.5 weeks, in time for MVP integration before the carnival. Kevin worked on testing and validating the position algorithm on the downscaled project table. He also added fail-safes to the homography algorithm, improving the accuracy of the rectangle dimensions and ball position calculations.

Overall, we are making steady progress with our software subsystems and addressing challenges with the physical setup. While Luke’s progress on the camera/projector setup has been slightly delayed due to shipping issues, there are no major changes to the overall schedule. The software side remains on track, with Samuel’s greedy algorithm and Kevin’s integration efforts being the next key focuses.

Next week, Luke will complete the system setup, Samuel will begin implementing the shot selection algorithm, and Kevin will continue refining the algorithms for accurate data processing and integration.

Luke Han Status Report 3/15/2025

This week I have made significant progress on the camera and projector system. We have now received and assembled the pool table, allowing us to initiate testing with the camera and projector. I have conducted preliminary tests to assess calibration accuracy, image capture quality, and potential integration challenges. However, the frame for the system arrived late on Friday, preventing me from setting up the complete system. Therefore I am still a bit behind schedule, but plan to retrieve the frames from the package service and complete the setup on Monday, which will enable full system integration and more comprehensive testing.

Samuel Telanoff Status Report 3/15/25

This week, I spent the majority of my time finishing up the physics simulation. I created the function simulate_shot, which takes the state of the board and a given shot’s angle, power, and spin and then simulates how that shot would play out on an actual pool table. I spent a lot of time researching how to calculate the inelastic collision when different balls collide, and I believe I have a pretty good implementation of it. I also added optimizations to the shot simulation code, including vectorization through NumPy and handling ball collisions with spacial hashing, to get the average runtime of a single shot simulation down to ~25ms from ~75ms.

Additionally, I created a function simulate_shot_with_animation, that draws and simulates the shot onto a Matplotlib graph. This function and file take 5 consecutive shots with random power, angle, and spin and show the state of the board during and after each shot. I used this testing method to get a visual cue of how my simulation is working. I also used the animation to fine-tune the parameters — like friction, power, and collision coefficients — until I found one that was pretty similar to the pool table we ordered. Attached are pictures of what the animation looks like.

I will be spending my time this next week creating our greedy algorithm that chooses the best shot. I am currently on schedule and hope to be 100% done with implementing and testing this algorithm within 1-1.5 weeks so that we are ready to integrate and test MVP before carnival.

Luke Han Status Report 3/8/2025

Over the past two weeks, I have primarily worked on the camera and projector system as well as refined the design report. Before the break, I dedicated significant time to the design report, particularly working on the design requirements, design trade studies, and risk mitigation plans. Additionally, I contributed to the project budget, ensuring our resource allocation aligns with project constraints.

I conducted preliminary tests to the camera and projector to assess their capabilities. This included evaluating calibration accuracy, image capture quality, and potential integration challenges. However, our progress is currently hindered because our group has yet to receive the pool table, which was scheduled for delivery two weeks ago. As a result, I am not on track, and our timeline may be impacted until we can begin full system integration.

Team Status Report 3/8/25

As a team, the majority of our time these past two weeks was focused on the design report and beginning to implement our project. We spent significant time on the design report to make sure that we could best convey our idea of our project to the reader. Additionally, we went more in-depth into how our system works and how each part comes together: creating a comprehensive block diagram, function signatures for software subsystems, choosing and ordering the exact hardware parts we will be using, and more. The more in-depth research/development of our project has made it easier for us to actually begin and go through with implementation, as we will have a majority of it detailed in our design report.

As for implementation, we have started implementing the major software subsystems of our project — the CV and the Physics Simulation. The third software subsystem, the display mapping, will be completed after the physics simulation is finished. Unfortunately, we are in a bit of a roadblock in terms of our physical implementation. We’ve received the projector and camera that we will be using for our project, however, we have yet to receive the physical pool table we will be working on. When we asked the ECE mailing room if they had received the pool table package yet from Amazon, they said it was still delayed. We will be checking again tomorrow after we meet with Professor Brumley, and are hoping the pool table will be in ASAP.

Overall, we are making steady progress on our project despite being blocked. There are no changes to the schedule on the software side of our project, however, we will need to speed up the schedule for our physical side of the project due to not being able to work on it just yet.