# Inclined Slew Joint Kinematics

I have a robot wrist with a non-typical joint configuration that I have been trying to come up with kinematics equations for. Not sure if there is a common name for it but I have not been able turn anything up during my searches.

In short, it consists of 4 slew bearings with the middle pair being inclined at 22.5 degrees and geared together. Rotating the center section 0 - 180 degrees bends the wrist along the Y axis from 0 - 90 degrees. Joint 1 is a revolute joint where the wrist connects to the arm and joint 3 connects to the end effector.

The main issue I am having is that as joint 2 travels through its range of motion, part of the wrist "bend" is not in the XZ plane. I have been trying to come up with an equation for joint 1 angle as a function of joint 2 that would counter the out-of-plane tilt.

My current attempt is using the Rodrigues Rotation formula with unit vector in direction of axis A to calculate a rotation matrix as function of joint 2 angle. I then multiplied an X direction unit vector through this rotation matrix and came up with the following vector:

(0.146 - 0.854 * cos(theta), -0.924 * sin(theta), 0.354 - 0.354 * cos(theta))

I then calculated the angle of this vector from the x axis with atan2(Y, X) thinking that would be my joint 1 rotation but that did not cancel the rotation.

I have also attempted this using transformation matrices from frame of A to joint 1 but the result was also not correct.

Any ideas on what I am missing here?

Years ago I worked with a Kuka IR 361 DWH, which has such a wrist. An implementation of the kinematics and dynamics was available through the Orocos Component Library (OCL). I don't think it is still included in the current OCL version, but I found the files here: check out the Kuka361*.cpp files.