Here is an honest summary of where the project stands at judging time.
What works
- On-device AI detection. Our model detects markers of different colours live from the overhead camera, running entirely on the Arduino UNO Q with no network connection. For each marker it reports the colour, the position on the table in millimetres, and the orientation.
- Workspace calibration. Four ArUco markers map camera pixels to real millimetres on the table. Locked camera settings keep detection stable under the hall lighting.
- Planning on the UNO Q. From the detections, the UNO Q plans the full task and works out every joint angle: approach the marker, grasp, trace the line around the obstacle, return the marker, go home. In dry-run mode the whole sequence runs against a simulated arm and logs every MOVE command it would send to the ESP32.
- Manual control of the arm. The ESP32 firmware drives all four servos smoothly from the two joysticks.
1. On power-up, the arm eases slowly into its measured home pose.
2. Each joint's speed is capped, so it never snaps.
3. The pose is saved every second, so after a power cut the arm resumes from where it actually was.
4. The J1 button freezes the arm instantly, and this is our safety kill switch.
What doesn't work yet
The missing piece is the link between the two boards. The UNO Q produces the correct commands, and the ESP32 can move the servos under joystick control, but two steps aren't finished:
- UNO Q to ESP32 serial communication. The UNO Q sends PING and MOVE commands over USB serial. The ESP32 doesn't yet receive and answer them reliably.
- ESP32 turning received commands into servo motion. Once a command arrives, the ESP32 needs to read out the joint angles and drive each servo to them through the same smooth, speed-limited motion it already uses for the joysticks.
Because of this, the arm can't yet pick up the marker by itself. Everything before that point (seeing, deciding, planning) and everything after it (moving the servos smoothly) already works on its own. What's missing is the connection between the two.
What we'd do next
- Finish the ESP32 command handler: read one line at a time, parse PING, HOME and MOVE, reply with OK or ERR, and feed the angles into the existing speed-limited servo loop.
- Test the link on its own with a serial terminal, then from the UNO Q with a single MOVE.
- Run the full sequence on the real arm, starting with the grasp of a standing marker.
What we learned
- Build in layers. Getting reliable manual control first meant the hardware was never the unknown.
- Test the interface between boards early. Each side worked on its own, and the connection between them is what ran out of time. We'd test that link first next time.
- Lock the camera settings early. Automatic exposure and white balance cost us time before we fixed them.
Arya Patel
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.