Yoyo’s status report for 4/25

This week I worked on system integration with my teammates. On the physical board we added frosted acrylic pieces in the holes on the board for led light diffusion and for cv to not recognize the leds through the hole as pieces.

On computer vision part everything is integrated to the system, we decided to avoid led flashing and add a button in the UI for the users to indicate they are done with a move and the leds will turn off for cv to capture the frame and then turn back on to guide the users for the next move. So there are changes made in the cv code for receiving frame capture requests.

For system integration we switched from hotspot to cmu device to connect everything. we will continue to debug and finalize the whole system especially the UI.

I am on track with schedule and next week we will be doing user testing.

Yoyo’s status report for 4/18

This week I mainly focused on integrating the whole subsystem and with the other subsystems.

The cv part now produces results like this which can distinguish all different pieces.  The subsystem now outputs a request to the LED system for the leds to turn on and off when capturing a frame, and a FEN string to the integrate server as a result of board state detection.

I’ve also discovered some small changes that need to be made to the design of the physical board. like the need to raise the leds as close to the board as possible for the light to be seen clearly by the user.

Next week I will continue to address those small changes to improve user experience.

About new knowledge for this project, this is my first time learning about computer vision, I learned not only how to use the code for YOLO models, but also how different things would affect the outcomes of the models, how I should take the photos for the datasets to address different edge cases, how different yolo models work. About learning strategies I learned a lot by reading the official documents of yolo and anylabeling(the tool I used to label datasets), blogs about similar chess board state detection projects, and I also got help from Chatgpt when YOLOX didn’t support mps on macOS much and I had to learn to modify the code for yolox to support mps.

Yoyo’s Status Report for 4/4

This week I’m mainly working on the cv part. I trained model for individual type of chess pieces, and tested them like this:

I’ve also started to integrated all the photos I took for each type of chess pieces into one model. I will need to take more photos with multiple pieces in one frame to train the model so that it will learn to tell the pieces apart. So thats my plan for next week, and also write code for the rest of the cv part such as taking a frame in live videosteam when nothing moves in 200ms, and board capture with aruco markers. Then I should be able to get output from my subsystem that can be fed into the led system and chess engine for integrating with my teammates.

I am on schedule and no changes will be made to the schedule.

About verification on my subsystem, the physical board won’t need any verification, so it’s mainly about the cv subsystem. I will evaluate detection performance of the yolox model both on precision and recall, the overall accuracy needs to exceed 95% to meet our expectations. The evaluation will be done with datasets including different circumstances such as dark environment, or different angels of camera placement. I will also measure the end-to-end detection latency from image capture to output to make sure it’s under 1s to minimize the users’ notice on latency.

the phone mount set up looks like this:

Yoyo’s Status Report for 3/28

This week on physical device side I cut out the second layer of the board to hold the leds in place. I worked with Claire to make sure the design does work. For more on this part I will need a piece of design to hold this layer in place in the box, hopefully a design that will enable us to take this layer out of the box easily for led replacing. Will do during the integrating part towards end of semester.

For cv, I took videos of pieces on different positions of the board and took out 40 frame for each set for yolox training. There are 11 sets of images that I labeled. Chariot, horse, and cannon have same characters for both sides, to they each make one set, 20 images for each color. The rest of the pieces have different chinese characters for each side so they each make two sets, 40 images for each different character.  

I made the ratio of training and validation set 8:2 so 32 for training and 8 for validation.

Setting up the environment for YOLOX somehow got extremely frustrating for me, couldn’t get it to work on my mac, had to set up a whole system on a pc. A little behind on schedule, should train all datasets this week, so I need to do more work this Sunday to make sure I don’t set my team back.

Yoyo’s Status Report for 3/21

This week I’m focusing on computer vision part, trying to make design decisions to maximize the accuracy of computer vision.

Claire and I put the board and the LEDs together and here’s what it looks like. LEDs line up with the grid intersections.

The led light is diffused by frosted acrylic and one design that needs to be changed or actually added is that since the led light makes a bright dot on the piece, it will affect the cv accuracy as it “covers” the characters on the pieces, or i will need to take a whole lot pictures for yolox learning. To tackle this, we will probably add a step of turning off the leds before cv part runs each time. This will make cv easier and more accurate.

I also drew CAD for the layer under the board, the one for attaching the leds. Since there a 9-10 led stripes, taping them to the back of the board has very low robustness and will require us to fix the position all the time. So i will laser cut a plywood stripes layer for the leds to be stuck on.

I will also need to design the whole board box, as we need to fix the place for all the hardware for transportation, and I will need the design to be some what modularized to make fixing things easy.

Next week I will be taking all the photos for yolox board state recognition, and designing the box. I am on schedule and the small designs added such as the turn led off thing shouldn’t add too much workload to affect schedule.

Yoyo’s Status Report for 3/14

This week I modified some details of the design for the board, especially the part integrating with the LEDs. The exact measurement of the distance between the individual LEDs weren’t specified, so I had to measure it myself, and with the error in measuring by hand I need to consider tolerance in the design. I decide for the top of the board to have 3 layers, on the very top is plywood layer, which is the actual board with the grid. I am deciding between 1. cutting small circles of frosted acrylic to fill in the holes of the plywood layer to better diffuse light, and 2. simply adding a whole layer of frosted acrylic under the plywood layer to diffuse light, less work more money. And then under that will be a layer to stick our LED strips on, which will be plywood strips, to reduce weight.

And I’m also taking pictures of the chess pieces to work on the cv part. I took some under room light settings, and will need to take more after working with Claire for different colored LEDs and the lamp on the phone mount we’re using.

I’m on schedule and no big design modifications were made that needs schedule changes.

Yoyo’s Status Report for 3/7

This week with the cut out chess pieces and half of the board I was able to test my cv code. For the phone mount we’ve decided to buy a phone holder with lamp for holding our phone camera over the board.

Currently I cut out the chess board with plywood available in techspark which I think don’t work the best for cv because it reflects light a lot. I will try to find the other kind of plywood that doesn’t have the layer that reflects light so much. With this image you can also see that the frosted acrylic shows the background without direct light on it, which also affects cv accuracy. After I get the phone holder and lamp I will use that lamp to take photos. Since we need to implement yolox model, I will need to take like 100 photos and label them so that will be my goal next week to finishand get some yolox running.

Yoyo’s Status Report for 2/21

This week on the physical chess pieces and board, I laser cut a few chess pieces out using frosted acrylic, and the top piece of the board using plywood. This is sufficient for initial testing of cv, the remaining pieces of the board can be cut out anytime after we have finalized all the physical electrical components and know the exact volume we need to hold all the parts. Also since we might need to change the design of the chess pieces later to increase board state detection accuracy, I didn’t cut out the full set of pieces, just 4 for each player for cv testing.  The parts are not with me but I’ll update images once I get a chance.

I also worked on the cv part, wrote more code for it, and will began testing next week. I am a little behind schedule on this part, as we changed our design a little last week and just got to manufacture the pieces, but I will catch up next week on this mainly.

I will also need to design the holder for the phone camera to be fixed above the board next week.

Team Status Report for 2/21

The most significant risks that could jeopardize the success of the project is the board state detection accuracy, which hasn’t change since last week. We are aiming for above 95% accuracy but that is 1 wrong move in 20 total moves and each game is around 40-60, which we believe is a non negligible amount of misreads that could potentially affect the game. We hope to obviously beat this 95% accuracy and we will come up with a robust testing metric to see when it is specifically failing, if it does at all, like not being able to read specific pieces or in specific conditions. As we get to cut out the physical board and pieces, we will be working on solving this problem and increasing the accuracy.

We do not have any changes to the existing design requirements and have no updates to the schedule.

 

For individual status reports, see:

https://course.ece.cmu.edu/~ece500/projects/s26-teamd3/2026/02/21/yoyos-status-report-for-2-21/

https://course.ece.cmu.edu/~ece500/projects/s26-teamd3/2026/02/21/charlies-weekly-report-for-2-21/

https://course.ece.cmu.edu/~ece500/projects/s26-teamd3/2026/02/21/claires-status-report-for-2-21/

Team Status Report for 2/14

A was written by Yoyo, B was written by Charlie and C was written by Claire Lee.

A: As of safety perspective, our hardware designs minimizes physical risks by enclosing all electronics inside the board,  so user interaction with the electronic components are limited. Users will only be interacting with their phone and the acrylic chess pieces. As of welfare aspect, our product will provide guidance and feedback to beginners who are frustrated when learning Chinese chess. Users will understand and learn from their mistakes, which will support positive cognitive development and give them motivation and confidence to keep learning.

B. Our project relates to social factors by supporting cultural preservation. Xiangqi is deeply embedded in Chinese and East Asian communities and serves not only as a competitive game but also as a social and cultural practice that connects generations. By building a guided engine that explains moves and strategies rather than simply optimizing for winning, the project supports knowledge transfer across cultural and age groups, making the game more accessible to beginners and diaspora communities who may not have access to in-person mentors. From a broader social perspective, the system also addresses educational equity and access.

We changed the material and design for our chess pieces this week, from 3D printing to laser cutting frosted acrylic.  It will make LEDs under the pieces easier to see by user. It will be easier for rapid prototyping because it takes less time to make new pieces. We haven’t printed anything out yet so making this change won’t cost anything more.

C: Our system aims to be relatively affordable since it is a learning tool for households or children at schools. The goal would be to distribute it as a fully assembled consumer product to classrooms or houses. We are on track to making the production cost feasible for our audience since our project doesn’t require too much hardware. We need the LEDs, a Raspberry Pi 4, power source, camera, and laser-cut board. If our project were to be produced at scale, these components are relatively inexpensive and the most costly piece may be the wiring of the LEDs since that could potentially be a bit complicated. We were able to cut costs and use inexpensive materials because our project doesn’t require any sophisticated data like a very high frame rate from the camera. We also believe our product to be able to keep sustainable demand long term since buy a reusable, flexible, portable board is a more personalized experience than hiring a teacher since the player can set the pace of the game and the pace of their learning. Even if the player may not need assistance from the guided part of the product, they can still use the board and piece of play at leisure and if we wanted to launch any updates, we could allow the firmware to be updated over USB so older models can still have the new features.

 

The most significant risks that could jeopardize the success of the project is the board state detection accuracy. We are aiming for above 95% accuracy but that is 1 wrong move in 20 total moves and each game is around 40-60, which we believe is a non negligible amount of misreads that could potentially affect the game. We hope to obviously beat this 95% accuracy and we will come up with a robust testing metric to see when it is specifically failing, if it does at all, like not being able to read specific pieces or in specific conditions. Once we pinpoint the issues, we will come up with a solution on how to manage them like maybe building proper lighting into the board itself.

We changed the existing design of the system to specify that the voice command portion of our project was a stretch goal and not part of the MVP. This change was necessary because we realized it was not crucial to the experience of guided learning and we would have to build a UI anyway so we might as well make it accessible to the user. No cost was incurred because we didn’t buy any parts for this subsystem or spend any time building it since we knew that the majority of our project was through the other subsystems, which is what we were focusing on.

For individual status reports, see:

Yoyo’s Status Report for 2/14

https://course.ece.cmu.edu/~ece500/projects/s26-teamd3/2026/02/15/charlies-weekly-report-for-2-14/

Claire’s Status Report for 2/14