UR10 Solving Hanoi Tower
An inverse kinematics solver written in Python for a UR10e industrial arm, tested by having the robot rebuild a Tower of Hanoi.
Role · Developer

Overview
A project from my bachelor in mechatronics engineering: an inverse kinematics solver written in Python for a UR10e industrial arm.
The robot already comes with its own motion planning, so moving it was never the difficult part. The work was in computing the joint angles myself. Given a position and orientation for the tool at the end of the arm, the solver works backwards through the geometry of the six joints to find the angles that put it there, and those angles are what gets sent to the controller.
An arm with six joints usually has more than one way to reach the same point. Some of those solutions fold the elbow the wrong way, or ask a joint to rotate past its limit, so part of the problem is choosing between them rather than just finding one.
The Tower of Hanoi was used as the test case, not as the goal. Its move sequence is fixed and known before the robot starts, so anything that came out wrong pointed at the kinematics or at the interface, never at the plan. That made it a clean way to check whether the solver was actually correct on real hardware.
What it does
Inverse kinematics implemented from scratch rather than using the controller's built-in planner
Selection between the multiple joint configurations that reach the same pose
Python interface to the UR10e controller for sending computed poses
Pick and place sequence executed on the physical robot
Specifications
- Stack
- Python
- UR10e industrial arm (Universal Robots)
- Domain
- robotics