In early 2022 I started building a 3D-printed six-axis robot arm to get hands-on experience with robotics. The design is inspired by ABB's smallest industrial robot, the IRB 1100. Apart from the electronic components, everything was designed and built from scratch. The joints are driven by stepper motors, and an Arduino Mega 2560 runs the low-level control and talks to the stepper drivers.
Inverse kinematics
The inverse kinematics run on a Raspberry Pi, which communicates with a PC via SSH. I first tried to derive an analytical solution, but this turned out to be hard because the last three joint axes of the design do not intersect in a single point (no spherical wrist). I then implemented the approach for general 6R manipulators by Raghavan & Roth (1993). It worked, but simulations showed that for most robot configurations at least one of the equations had no solution, so I switched to a numerical method. The robot currently uses cyclic coordinate descent (CCD) to solve the inverse kinematics.
Teach-in and GUI
I implemented a teach-in mode to record and replay movements (see the videos below) and built a GUI to control the robot in three ways: replaying taught motions, commanding a task-space position, or moving the individual joints.
Control
A model predictive controller (MPC) runs well in simulation but, as expected, the Arduino cannot execute it fast enough. Next, I want to move the whole embedded part to an STM32H7, which should be able to run the controller.
Raghavan, M., & Roth, B. (1993). Inverse kinematics of the general 6R manipulator and related linkages. Journal of Mechanical Design, 115(3), 502–508. https://doi.org/10.1115/1.2919218











