Built by Team Pandava (Team 12) at the 2026 Embedded World North America Edge AI Hackathon, Robotics Challenge sponsored by Quilter.
Team Members:
- Deepanshu Tanwar (dtanwar@uci.edu)
- Arya Sureshbhai Patel (aryasp1@uci)
- Shubham Shailendra Kanhere (kanheres@uci.edu)
- Pranav Upadhyay (upadhyp1@uci.edu)
- Shivank Valiya (svaliya@uci.edu)
The Python files are uploaded with an _ac suffix (for arm_control) so they're easy to tell apart on this page. To run them, remove the suffix (for example, main_ac.py becomes main.py), because the files import each other by their original names.
arm_robotic/
├── esp32_firmware/ ESP32 Max V1.0 (real-time control)
│ └── main_esp.ino Servo PWM, joystick control, home pose, kill switch
│
└── arm_control/ Arduino UNO Q, Debian side (Python, fully offline)
│
├── Setup
│ ├── setup_ac.sh One-time install: venv, OpenCV, pyserial, serial/camera permissions
│ ├── cam_setup_ac.sh Locks C270 exposure and white balance for stable colours
│ ├── requirements_ac.txt Python libraries
│ └── config_ac.py Every tunable value: camera, colours, arm dimensions, step | sizes
│
├── Calibration and testing tools
│ ├── vision_server_ac.py Browser tool (port 8000): ArUco calibration, background
│ │ capture, colour readout, path preview
│ ├── vision_core_ac.py Detection helpers used by the browser tool
│ ├── cam_ac.py Camera helpers used by the browser tool
│ ├── markers_mm_ac.json Real-world positions (mm) of the 4 ArUco markers
│ └── probe_ac.py Quick camera check: resolution and frame rate
│
├── Perception
│ ├── camera_ac.py C270 capture that always returns the newest frame
│ ├── homography_ac.py Pixel <-> millimetre mapping and work-area masks
│ ├── marker_ac.py Finds the Crayola marker by colour
│ ├── path_trace_ac.py Turns the Sharpie line into ordered waypoints
│ └──...
Pranav Upadhyay


