In early 2022, I began working on a 3D-printed 6-axis robotic arm project to gain hands-on experience with robots. The design is inspired by ABB’s smallest robot, the IRB 1100. The goal was to build the robot entirely from scratch, sourcing only the necessary electronic components. I used simple stepper motors for the project. The control system was implemented on an Arduino Mega 2560, which also handled communication with the stepper motor controllers.
The complex task of inverse kinematics was tackled using a Raspberry Pi, which communicated with a PC via SSH. Initially, I attempted to derive the inverse kinematics analytically, but this proved challenging due to the non-coincidence of the 3 TCP (Tool Center Point) axes. I then adopted an approach outlined by Raghavan & Roth in 1993. While I succeeded with their method, simulation revealed that for most robot configurations, at least one equation did not yield a solution. Therefore, I decided to use a numerical solution instead.
For now, I am employing cyclic coordinate descent as the initial numerical method to solve the inverse kinematics. This is the algorithm currently being used to test the robot.
I recently implemented a way of teaching the robot movements. This can be seen in the videos below. I also created a GUI, where I can easily control the robot either by choosing the teaching method, by setting the task space position, or by controlling the robot in joint space.
Raghavan, M., & Roth, B. (1993). Inverse kinematics of the general 6R manipulator and related linkages. Journal of Mechanical Design (New York, N.Y.: 1990), 115(3), 502–508. https://doi.org/10.1115/1.2919218