Weekly Status Report

Mike’s Status Report for 4/6/24

This week I spent 4 hours going to class. I also spent a lot of time preparing for my demo, doing a lot of aesthetic work on the front end to make it more digestible. I added a lot of stylings to things like the playing field and all the buttons in order to make our website look more fleshed out. There’s still a few default HTML stylings but I am working on changing them this next week. In terms of communication between the front end and robot, me and Simon were able to get a connection and they are able to communicate, so the end is in sight. For the gantt chart, I am on schedule as we pushed testing further back, and I am still just working on developing the front end for now.

Seung Yun’s Status Report for 4/6/24

This week was a strong push for our mid-demo. I finished up writing the backend code on the RPi, so that the robot’s aiming system can be controlled both using the ssh’d terminal, and the frontend. While I was working on it, the RPi we were using suddenly got bricked, so I had to scramble to find another RPi last minute to finish this up before the demo on Wednesday. I suspect that this is due to high current drawn by the motor as when I was working on it on the new pi, the previous motor driver seemed to be damaged. Here is a video of the working demo in which I control both aiming using the frontend.

I am pretty much done with the aiming system and ahead of schedule – we updated our Gantt chart this week to align with our actual progress more closely.

Next week, I aim to tidy up the code so that it doesn’t run on three processes, and make the system more robust by ordering some backup parts. Since I am done with the aiming system, I am shifting my attention to help the shooting system. I am exploring alternative shooting mechanism that involves a more mechanical approach such as a spring. By next week I aim to have the alternative shooting mechanism designed and have the parts ordered, along with the robust aiming system.

Moreover, for the verification, I am planning on setting the aiming system at a certain angle, and measuring the physical angle. For example, I will send a series of angle settings for the vertical system, and use a protractor to verify. For the radial aiming, I will mark the “front” with a paper below the robot, move it a certain degrees, mark the new front, then measure the angle moved using a protractor to verify it matches the angle it was supposed to move.

Alex’s Status Report for 3/30

This week I got the CV camera working with the cup detection, I also polished off ball detection some more. What ended up working the best was getting all the points that the LIDAR generates and then projecting those onto a 2d plane that is perpendicular to the gravity vector. Then I go through all the planes from 2 meters below the camera to the same plane as the camera and I use a simple circle detection algorithm to find the top of the cups. From there, extracting the location and the plane that defines the cups is trivial.

This puts me behind schedule, but I am still confident in my ability to finish everything.

Next week I will be combining ball + cup detection and getting an MVP for the launching subsystem.

Team Status Report for 3/30

This week we’re making a strong push towards the interim demo next week. There are few risks that still remain. Since we haven’t gotten around testing the parts for the pressure system yet (we’ve been focusing on other components), there is a risk that it won’t be as stable as predicted. The strength of the stepper motor is rather powerful, so the stability of the base has come up as a new risk this week – we intend to have a heavy base and a strong mechanical connection between the motor house and the base to mitigate this. Other subsystems are nearing completion and we don’t anticipate any big risk, although their interactions may lead to some unexpected blockers.

We have made no major design changes this week.

We are modifying the schedule slightly to prioritize the finalization of the CV subsystem, so we’re bringing that closer to the current schedule. As Seung Yun is almost done with his part, he will start working on the pressure system together with Alex as it aligns closer to the mechanical parts he’s been working on.

Seung Yun’s Status Report for 3/30

This week, I’ve finished up integrating the vertical aiming and radial aiming system, wired up all the circuitry, and wrote preliminary modules for controlling both axes. The servo motor only requires 5V of power, so it can be directly powered by the Pi. I’ve wrote a simple script that can translate angle input to PWM signals so change the servo’s position. I initially tried working with RPi.GPIO library, but observed some jitter. Turns out this library generates PWM signals through software but doesn’t utilize the PWM hardware in Pi, so I experimented with pigpio library which does interface with the native PWM hardware – this proved to be very stable.

Utilizing the stepper motor was tricky as well – the block connector on the stepper motor expansion board was faulty (the screw was too tight), so I’ve de-soldered the original block connector with a new one. I’ve observed that the circuitry was drawing too much current (2A) when I was playing around with it even when the motor was at rest, but that was due to not calling the cleanup code from the software side. After some experimentation, I was able to reliably control the direction and movement of the stepper. Here is a video of both system working together. I am controlling the servo and stepper by ssh-ing into the pi.

I’ve also printed out a new spinning top and servo base that can be mechanically connected together so the whole system connects seamlessly. Here are some pictures of the aiming system and the circuitry below:

I am back on track with the schedule. I am on pace to finishing up the aiming system next week.

There are some more fine tuning that has to be done – both the servo and stepper movements are too abrupt and needs some slowing down from the software side. This is especially problematic with the stepper since I observed that it is very powerful and can move the entire base (the current version’s base is not mechanically stable). By next week, I aim to fine tune the control so it is stable, and start CADing the entire robot that can encapsulate circuitry and a pole for the camera as well. I will also implement a simple server that can take in HTTP request from the frontend and communicate with the motor control modules.

Team Status Report 03/23

Right now we think the biggest risk factor is having enough pressure to fire the ping pong ball. Alex is nearing completing of the CV subsystem and needs to write software for the launching subsystem, Mike has a working prototype of the website and Simon has assembled the aiming mechanism and written some initial software for it. Something else to consider is how the accuracy of the computer vision subsystem will affect the user experience and we hope to work on that once we have integrated our system.

No major design changes this week.

No changes to the Gantt chart, but we are currently running a bit behind our schedule.

Alex’s Report 03/23

This week I worked on finalizing the LIDAR for ball detection and cup detection. I have finished ball detection and I created a neat visualizer for it (from what I can tell the ball detection and trajectory detection work very well, but I am waiting to test it to make any statements about the accuracy). I am also almost done making the cup detection module, but I am struggling to figure out how to make debugging output for it.

I have assembled the launching mechanism and plan to do some math next week to see if we will need larger tubes to launch the ball. If time permits, I plan on testing it, but I am unsure about how much time I will have as I am trying to finish the CV subsystem as we have our interim presentation next next week.

I also helped Simon debug the raspberry pi’s wifi issue and I looked into how to get it working on CMU wifi (as I had to do this with my laptop). To get it working on CMU wifi I believe we just have to register it as a personal device and add the cmu wifi certificate to it.

Next week I plan on finishing CV, helping to get the system integration going and (if time permits) writing software for the launching subsystem. I am currently behind schedule. I also plan on helping mike setup the DDNS.

Michael’s Report for 3/23/24

This week I spent 2 hours in class talking about ethics and how our project relates to ethics. I spent an hour talking with my teammates about how our project stand ethically and what we can do to improve our project. After the feedback we got from the breakout session, given the time, we might implement more safety features for our robot. For 2 hours we also went to class on Thursday. For about 4 more hours I worked on the frontend and starting getting some initial feedback. I showed friend the design and they told me things I could improve about it, a big thing being making it more customized and using less base HTML/CSS assets. I am still trying to get things to align well but I definitely improved the layout with CSS. I am not the greatest with CSS so it is a lot of trial and error getting things to line up. I’m pretty much on track in regards to the gantt chart, and this week I hope to get DDNS working with Alex’s help, as he has worked with it before.

Seung Yun’s Status Report for 3/23

This week I’ve worked on implementing the software modules to control the radial and vertical aiming systems. I’ve ran into some roadblocks as I had a hard time connecting the Pi to the internet. We suspected that the issue is with the CMU Wifi as when I tried to connect using home wifi things worked out fine – we realized recently that we have to register the Pi’s MAC address to CMU-DEVICE, so we will try that in the future.

Another roadblock was that the Pi5’s ecosystem is too unstable. When Pi5 was released last October, the architecture changed significantly from Pi4, which made most of the stable packages that can interface with GPIO incompatible. Although we were able to find some libraries that work (like gpiozero), when tested on the servo the jitter was too much. We could implement the entire interface from scratch, but given the time constraints and the possibilities of more unanticipated issues, we’ve decided to use Pi4 instead for motor control – we’ve placed an order for this from the inventory.

I am slightly behind schedule as I was anticipating to finish writing all the software control modules by this week, but I hope to get back on track next week once I have the Pi4.

By next week, I plan to not only finish writing the software modules, but also to physically integrate both aiming system so we can demo the week following.

Michael’s Status Report for 3/16/24

This week I spent 4 hours going to class and working with my teammates. This week a spent 4 hours trying to implement some of the trickier parts of the font end. I spent a good chunk of time trying to figure out how to make the cups dynamic and showing missed shots on the board. I did a bit of messing aorund and eventually I was able to a grid system for the cups where you can add the coordinates of a missed ball to a list and it displays all of them. in relation to the cups. Anohter thing I am wokring on right now is curved sliders, which are not as easy as i thoruhg they were going to be to implement. I’ve looked into different packages I can use and am still trying to get it working right. In regards to the schedule, I think it could be time to get some people’s initial thoughts on the UI, as we are getting to that point in the schedule. As for the DDNS, that is coming up and I already have a head start.