Many robotic and mechanical systems require the calculation of kinematic equations to express the relationship between variables that are to be controlled (motor/actuator position obtained via feedback sensors and manipulated by motors/actuators) and variables that are to be commanded, such as the position of a tool tip or objective.
Two types – inverse and forward kinematic equations – are required to employ such systems. Inverse kinematics provides solutions to the following situation: if one knows the desired values for commanded variables, what should the corresponding controlled variables be? Conversely, forward kinematics determine what the commanded variables should be if the controlled variables are known.
To get a good idea of what kinematic equations are, a simple example gives some insight to a complicated hexapod system, such as a 6 DOF Stewart Platform Hexapod. Suppose a system comprises an XY motor stage, and on the XY stage is a rotary motor that controls the angle of a tool (T) with length (from the rotation pivot)L.
The user will want to control the angle T, and the location of the tool tip in the XY plane (xT,yT). These are the commanded variables. The controlled variables are the angle T, and the motor positions XM and YM. The inverse kinematic equation for this system will tell us what should the controlled variables be for a desired set of commanded variables. Often, inverse kinematic equations are less difficult to obtain than their forward counterparts, and for many systems they are discussed and solved first. Then, the forward equations are solved by inverting the inverse equations, either directly or via an iterative step approach (the Hexapod uses the latter). Here, both forward and inverse equations are directly obtainable, and the inverse equations are shown in Equation 1:
I1 (XT ,YT ,T)=(XM,YM,T)
XM = XT -Lcos(T)
YM = YT -Lsin(T)
From the equation, it is obvious that there are 3 equations comprising the inverse kinematics, although the last equation (T=T) is redundant. In this system, determining the forward kinematic equations is straightforward and can be done by inspecting the system, or by inverting the equations of (1). The solution to the forward kinematic equations is shown in Equation 2.
F1 (XM, YM, T) = (XT, YT, T)
XT = XM + Lcos (T)
YT = YM + Lsin (T)
T = T
For this system, both the forward and inverse kinematic equations were easily obtained in closed-form solutions. For many systems including the 6 DOF Hexapod, this is not necessarily the case.
For the Hexapod parallel manipulator, there are 6 individual linear motors controlling the length of 6 legs. Each of these legs is connected to a base structure, and a platform structure. The inverse kinematic equations for this system tell the user: Given a desired platform position (x, y, z, roll(α), pitch (β), and yaw (γ)), what should the lengths of the six legs be?
After bypassing some geometry and algebra, the inverse kinematics equations can be simply written as a vector function I2, which takes six “commanded” variables as inputs, and produces six “controlled” variables as a result:
I2 (x, y, z, α, β, γ)= (l1, l2, l3, l4, l5, l6)
For the 6 DOF hexapod, this is in fact a closed-form solution. So, to command the hexapod to move to a certain value, one must compute the inverse kinematics to find the corresponding values, and then command the legs to move to those positions. This seems pretty easy so far, but how should one command the motors to get to positions? One cannot simply set the commanded (reference) positions to l1, l2, l3, l4, l5, l6, or else the motor will instantaneously try to jump to this position. Instead, motion trajectories must be generated for each of the leg motors.