Inspiration

We wanted to solve a problem while building a cool robot. Majority of our team works in the field of embedded systems research. There can be many cases where you might not know what program is running on a board, or could be an unfamiliar architecture. Our robot can help with automatically probing each pin you choose on the board, and report the most likely protocol and data.

What it does

  1. The user will take a photo from their phone of the board
  2. The photo is sent to OpenCV to find most if not all pins on the board, and determine which cartesian coordinates they are at from the perspective of the robot
  3. The user will select which pins they want to probe
  4. The robot arm will move the probe to the calculated cartesian point
  5. Osciloscope will sample the data off of the pin for X amount of time and send the raw readings to our computer
  6. The raw data will get sent to the backend, get cleaned and then sent to a detection algorithm to determine what protcol (UART, PWM etc) and data was being sent over the pin
  7. A report is generated that the researcher can view

How we built it

Hardware Side: We used 2 stepper motors to provide angular movement from 2 centers for X and Y movement, and an additional SG90 motor for Z movement so the probe can touch the contacts on the board. The main processor is a STM32 that calculates where and how to move the arm using Kinematics equations. It recieves commands from the Host PC via serial, which is the coordinates that the arm will move to the correct probe on the target board. The motors are controlled by stepper motor drivers and powered by a KORAD KD30005 power supply.

Software Side: The backend and API were written with Python using FastAPI. The backend had 3 main components: osciloscope processing (capture, cleaning and detection), OpenCV processing to determine and show pins that the user can probe, and robot programming (over serial) in order to send commands to the robot controller.

Challenges we ran into

  • Some members of our team had little experience building robots, especially from scratch
  • Many of the existing parts that we either had or borrowed did not work well in practice for building an arm

Accomplishments that we're proud of

  • We learned how to operate a osciloscope and capture data off of it over USB
  • Built a robot entirely from scratch without pre-made kits (ex: Vex)

What we learned

  • Test all hardware prior to the start of the hackathon and know where to get it from
  • Learn the capabilities of different robotic components and any dependencies they will require (such as stepper motor controllers)

What's next for KinematiX

We would definitely like to improve the stability and accuracy of the robot. A lot of the hardware and algorithms would work significantly better if we had more time and were certain of resources to use. We would also like to add more detection capabilities to open up to more niche protocols, ideally with a properly trained ML solution

Built With

Share this project:

Updates

Submission history