Inspiration

As avid badminton players, we know how frustrating multi-shuttle drills can be. Not only are you exhausted after a drill, but you also have to hunch over and pick up dozens of birdies. Coaches often feed 25, 50, or even more birds per drill, leaving the court covered in shuttles afterward. Picking them all up can take up to 30% of total training time.

We saw that as time wasted.

So we built an autonomous robot that can detect, navigate toward, and collect badminton birds on its own. By automating one of the most repetitive parts of practice, we hope to give players more time for actually training.

What it does & how it does it

This autonomous BracketBot robot finds badminton birdies scattered on the floor, picks them up and stacks them to hand back to people.

Step 1: A YOLO11s model was fine-tuned with PyTorch and Ultralytics on footage from the robot's own camera, that being 96 frames pulled from four drives through a classroom and corridor, where an earlier version of the model drew the first-pass boxes and a human review pass deleted the 21% that were wrong.

The retrained model is far more precise as a result. Most of what got deleted was white and birdie-shaped but not a birdie including light switches, ceiling lights, napkins on desks, the robot's own chassis, and eight frames came back with nothing at all, which were kept as pure negatives: the cart looking at clutter with nothing to collect.

Step 2: Drives to birdies with a PID-to-point controller Detects bounding box of target birdie and gets values in the depth point cloud → converts to global coordinates with SLAM → calculates relative position to robot each tick and runs angular + horizontal PID on error to each

Step 3: Picks up birdies using a custom-trained VLA model based on pi0.5. We grabbed the birds 50 times from the ground.

Challenges we ran into

Network: We had to upload a large dataset (40gb) for training to the cloud; with the wifi being used by everyone, upload speeds were bad and there was a real chance that we wouldn’t be able to train on time.

Accomplishments that we're proud of

Highly accurate YOLO model Autonomous pathing to identified targets Successful VLA model for difficult process

What we learned

  • Speed vs. Accuracy: When training, we recorded data in 1080p but ended up compressing to 512 anyway. There wasn’t a noticeable drop in quality (maybe 90% accurate to 85%) but the training times and latency decreased significantly, and we could always run a rescan if we didn’t get anything.
  • Mentors: It’s always a good idea to reach out to people more experienced than you, especially if the infra doesn’t have extensive documentation.
  • Failsafes: We had to implement a bunch of failsafes for situations that we wouldn’t have considered going in because the code had the potential to break real things that couldn’t be easily replaced.

What's next for Badminbuddy

  • Optimizing pickup time
  • Dynamics routing (goes around coach/person to pick up even while they're playing)
  • Throwing mode that simulates role of coach
  • Having a voice agent that can start robot operations on command

Built With

Share this project:

Updates

Submission history