I stumbled across a robotic arm kit on aliexpress and thought it would be cool if I could devise a way to control it via a Raspberry Pi. I then populated my backlog with a few key requirements and started on the project.
- Build out the kit and add it to a solid base
- Control it via python, utilizing a keyboard







Honestly the physical assembly was the most challenging aspect of this build. This project consisted of a dual output power supply, a raspberry pi, a PWM controller, and a robotic arm kit. In regards to the software it was relatively straight forward development process to create a crude control scheme.
https://github.com/aejx00/robotic_arm
Once the initial servo calibration was completed, I validated the operation of each servo using the adafruit PWM control library. After, I mapped groups of servos to various keyboard inputs using Ncurses. The raw output you see in the demo corresponds to the servo positions at any given time.
Overall I would regard the project “semi-successful” as I completed all the deliverables I defined, however in hindsight I think would have taken a different approach, as there was a lot of room for improvement in the end.
Problems encountered:
- The concrete base was not heavy enough to act as a counter weight, I should have cast a larger block or secured it to a wooden board for more stability.
- The control scheme was too crude. I encountered a lot of jitter and “jumpiness” moving the arm which would cause it to topple over or bind when going out of bounds.
- The solution isn’t maintainable as it requires far too much fine tuning and the code quality is basically spaghetti. Instead of re-inventing the wheel I should have used the ROS framework and imported a manipulator package to control the arm. This would free up a lot of development time for me to build out more interesting use cases for the robot.