The control is on a windows PC running my C# code! This is a very non real-time setup but is doing the job really well. The C# is running a Thred.Sleep(0) thread which is measuring the time between each call. That is how I can call my kinematic function quit precisely each millisecond. In this milliseconds all 6 Motor are getting commanded to reach a new target position.

The Drives then are commanded by XML Tickets over TCP, this is a very easy task in modern programming languages like C# or Phyton and many others (of course also C++ with QT etc.).

The inverse kinematic (IK) is to get the Robot angles out of its Cartesian coordinates let’s say x,y,z and orientations a,b,c (Euler angles) in your room. If you asking now why 6 coordinates: So if I want to have the tip of the robot at my desk then I need x,y,z. Now I also want to have the right orientation. With the orientation I can tell the robot on which end effector angle this position should be reached. Let’s say if I have a pen attached to my last axis I want that the pen is always going straight to my paper.

The IK is not a big thing if the last three axis are touching in one point. Then we can split the problem in two 3 Axis robots :).

First Tests:

5-DOF Robot:

6-DOF Robot:

Robot Painting:

Christmas special: